iOS 10 Push Notifications 消息推送配置

iOS 10的消息通知和之前有很大變化,不過好消息是它變得配置更加簡單更加集中了。

1.登陸開發(fā)者賬號,這個界面排版比以前好看了一些,點擊中間的證書。

2.接下來點選 App IDs

3.在這里可以看到各種權(quán)限的開啟狀態(tài),這個我已經(jīng)配置好了。

4.點擊編輯,配置開發(fā)模式和生產(chǎn)模式的證書,配置好之后可以下載下來雙擊安裝到本地。


這里要上傳一個本地證書,生成方式如下:
1.鑰匙串訪問 -> 證書助理 -> 從證書頒發(fā)機構(gòu)請求證書…



2.郵箱隨便填寫,一定要存在本地磁盤你能找到的地方


5.到這里還沒完,還需要打開我們的工程開啟通知開關(guān),如圖。

6.這樣提交新的版本之后就可以順利收到通知啦,由于歷史原因我們用的是某萌,我也不想啦。還需要把之前的 apns 證書打包成 .p12 文件傳遞到它們的后臺。

簡單講一下如何導(dǎo)出.p12文件:
在自帶 app 中找到鑰匙串,右鍵你要導(dǎo)出的證書,就是這個樣子。



設(shè)密碼,導(dǎo)出


7.如果你也用某萌,代碼示例

注冊通知

- (void)registerAPNS {
    if (SYSTEM_VER >= 10.0f) {// 下一個版本就只支持10以上了
        // iOS10特有
        UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
        // 必須寫代理,不然無法監(jiān)聽通知的接收與點擊
        center.delegate = self;
        [center requestAuthorizationWithOptions:(UNAuthorizationOptionAlert |
                                                 UNAuthorizationOptionBadge |
                                                 UNAuthorizationOptionSound)
                              completionHandler:^(BOOL granted, NSError * _Nullable error) {
                                  if (granted) {
                                      // 點擊允許
                                      NSLog(@"注冊APNS成功");
                                      [center getNotificationSettingsWithCompletionHandler:^(UNNotificationSettings * _Nonnull settings) {
                                          NSLog(@"%@", settings);
                                      }];
                                  } else {
                                      // 點擊不允許
                                      NSLog(@"注冊APNS失敗");
                                  }
                              }];
    }else {
        // iOS8 - iOS9
        [[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert |
                                                                             UIUserNotificationTypeSound |
                                                                             UIUserNotificationTypeBadge
                                                                                                              categories:nil]];
    }
    [[UIApplication sharedApplication] registerForRemoteNotifications];
}

回調(diào)

// 獲得Device Token
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
    NSString *strDT = [[[[deviceToken description] stringByReplacingOccurrencesOfString:@"<"withString:@""]
                        stringByReplacingOccurrencesOfString:@">" withString:@""]
                       stringByReplacingOccurrencesOfString: @" " withString: @""];
    
    NSString *userDefToken = @"你的 token";
    do something...
}

// 獲得Device Token失敗
- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
#warning 配置 aps-environment
    NSLog(@"did Fail To Register For Remote Notifications With Error: %@", error);
}

// iOS 7~9收到通知
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:
(void (^)(UIBackgroundFetchResult))completionHandler {
    
    NSLog(@"iOS7及以上系統(tǒng),收到通知:%@", userInfo);
    completionHandler(UIBackgroundFetchResultNewData);
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容