過去研究過iOS蘋果推播通知服務 (Apple Push Notification Service),照理說取得Push Token應得心應手,然而理論跟實際有時是有些落差。
像是我自己測試後能順利取得Push Token,誰知道客戶那邊卻收不到⋯⋯
這篇可以說明iOS 10推播問題。
當使用者點擊「允許」後,我們就能取得其Push Token。
在AppleDelegate.m中實作:
/** Theme: iOS 10 Push Token IDE: Xcode 8 Language: Objective C Date: 106/02/24 Author: HappyMan Blog: https://cg2010studio.wordpress.com/ */ -(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { NSLog(@"deviceToken: %@", deviceToken); // 儲存Push Token NSString *deviceTokenStr = [[[[deviceToken description] stringByReplacingOccurrencesOfString:@" " withString:@""] stringByReplacingOccurrencesOfString:@"" withString:@""]; }
回應得到訊息:
deviceToken: <44ad99d6 ccc4b92a 67a175e3 dd5b7bb9 37b6052e 7de12b23 492e7c19 ce2c631b>
一切是如此的美妙~
然而事情進展得如此順利,就代表有問題⋯⋯記得iOS 10已經重構Local和Remote的推播,我們可以使用UserNotifications Framework。想起人生就是不斷挖坑給自己跳,原來iOS 10之後推播有新規則⋯⋯
打開專案設定Capabilities的Push Notifications功能後,iOS 10的裝置終於能觸發該method而取得push token啦~
總結:
- iOS 9:不需設定Capabilities,即能收到push token。
- iOS 10:必須設定Capabilities,才能收到push token。
原來我在開發的時候拿iOS 9的手機來測,所以實作的很順利;幸好公司同時有iOS 10和iOS 9的手機,讓我可以確切找出問題所在!
隨意留個言吧:)~