隨筆:iOS遠(yuǎn)程通知獲取不到deviceToken回調(diào)問(wèn)題

今天最近做了個(gè)遠(yuǎn)程推送功能古掏,未使用第三方開(kāi)發(fā)。發(fā)現(xiàn)一個(gè)問(wèn)題:在保證證書(shū)正確丧枪、網(wǎng)絡(luò)連接正常庞萍、首次進(jìn)入允許通知的情況下拧烦,獲取不到APNs的deviceTonken回調(diào)钝计。

既不調(diào)用application:didRegisterForRemoteNotificationsWithDeviceToken;方法

也不調(diào)用application:didFailToRegisterForRemoteNotificationsWithError:方法齐佳。

網(wǎng)上搜了不少資料债沮,結(jié)果大家給的解決方案幾乎都一致,把原因引向了iOS8.0+和iOS7系統(tǒng)問(wèn)題疫衩,并給出根據(jù)不同系統(tǒng)版本對(duì)remotNotifi進(jìn)行注冊(cè)的方法:

iOS8.0+ registerUserNotificationSettings:

iOS8.0- registerForRemoteNotificationTypes:

(還有人說(shuō)自己也不知道怎么了,后來(lái)就突然好了L嵴搿2芸!皆愉!)

找了很久很久很久...,都特么都是這個(gè)方法幕庐。

我想說(shuō):這特么誰(shuí)不知道。

被逼無(wú)奈瑟由,我只能一步一步的從申請(qǐng)證書(shū)到代碼編寫(xiě)一步一步的檢查冤寿,一步一步的看...還是沒(méi)找到原因。我累個(gè)艸了督怜。

沒(méi)辦法了,只能從appdelegate代理方法入手号杠,找原因和解決方法。

原因是沒(méi)找到屉凯,但是解決方法卻找到了,直接貼代碼:

// This callback will be made upon calling -[UIApplication registerUserNotificationSettings:]. The settings the user has granted to the application will be passed in as the second argument.

- (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings NS_AVAILABLE_IOS(8_0) __TVOS_PROHIBITED;

iOS8.0以后可以用這個(gè)作為second argument悠砚。然后:

- (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings{

[application registerForRemoteNotifications];

}

果斷解決了偷仿,什么deviceToken問(wèn)題都沒(méi)有了。

一個(gè)推送做的我心累酝静,雖然我不知道什么原因?qū)е碌墨@取不到deviceToken,但是問(wèn)題總算解決了宗苍。


代碼:
//remote 授權(quán)

- (void)registRemoteNotification{

#ifdef __IPHONE_8_0

if ([[UIApplication sharedApplication] respondsToSelector:@selector(registerUserNotificationSettings:)]) {

UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge|UIUserNotificationTypeSound|UIUserNotificationTypeAlert categories:nil];

[[UIApplication sharedApplication] registerUserNotificationSettings:settings];

} else {

UIRemoteNotificationType myTypes = UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound;

[[UIApplication sharedApplication] registerForRemoteNotificationTypes:myTypes];

}

#else

UIRemoteNotificationType myTypes = UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound;

[[UIApplication sharedApplication] registerForRemoteNotificationTypes:myTypes];

#endif

}


#pragma mark - remote Notification

- (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings{

[application registerForRemoteNotifications];

}

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(nonnull NSData *)deviceToken{

NSString *token = [[[[deviceToken description] stringByReplacingOccurrencesOfString:@"<" withString:@""] stringByReplacingOccurrencesOfString:@">" withString:@""] stringByReplacingOccurrencesOfString:@" " withString:@""];

NSLog(@"device token is %@",token);

[[NSUserDefaults standardUserDefaults] setValue:token forKey:@"video_deviceToken"];

}

- (void) application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error

{

NSLog(@"%@",error);

}

//ios 7.0

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo

{

NSLog(@"did recevive remote noti userInfo %@ for ios 7 ",userInfo);

}

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler{

/**

*? 系統(tǒng)會(huì)估量App消耗的電量讳窟,并根據(jù)傳遞的UIBackgroundFetchResult 參數(shù)記錄新數(shù)據(jù)是否可用

*? 調(diào)用完成的處理代碼時(shí)敞恋,應(yīng)用的界面縮略圖會(huì)自動(dòng)更新

*/

NSLog(@"did Receive Remote Notification userInfo %@",userInfo);

switch (application.applicationState) {

case UIApplicationStateActive:

completionHandler(UIBackgroundFetchResultNewData);

break;

case UIApplicationStateInactive:

completionHandler(UIBackgroundFetchResultNewData);

break;

case UIApplicationStateBackground:

completionHandler(UIBackgroundFetchResultNewData);

break;

default:

break;

}

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市补箍,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌坑雅,老刑警劉巖衬横,帶你破解...
    沈念sama閱讀 216,591評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異蜂林,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)突那,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)构眯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人惫霸,你說(shuō)我怎么就攤上這事∫嫉辏” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,823評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵射窒,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我脉顿,道長(zhǎng),這世上最難降的妖魔是什么艾疟? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,204評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮弟疆,結(jié)果婚禮上盗冷,老公的妹妹穿的比我還像新娘怠苔。我一直安慰自己仪糖,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布帜羊。 她就那樣靜靜地躺著鸠天,像睡著了一般讼育。 火紅的嫁衣襯著肌膚如雪稠集。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,190評(píng)論 1 299
  • 那天痹籍,我揣著相機(jī)與錄音晦鞋,去河邊找鬼蹲缠。 笑死悠垛,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的确买。 我是一名探鬼主播,決...
    沈念sama閱讀 40,078評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼芭商,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了铛楣?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,923評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎衷敌,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體缴罗,經(jīng)...
    沈念sama閱讀 45,334評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了掘譬。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,727評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡葱轩,死狀恐怖藐握,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情猾普,我是刑警寧澤,帶...
    沈念sama閱讀 35,428評(píng)論 5 343
  • 正文 年R本政府宣布偎窘,位于F島的核電站,受9級(jí)特大地震影響评架,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜纵诞,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評(píng)論 3 326
  • 文/蒙蒙 一培遵、第九天 我趴在偏房一處隱蔽的房頂上張望登刺。 院中可真熱鬧,春花似錦纸俭、人聲如沸南窗。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,672評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至敌买,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間虹钮,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,826評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工祭玉, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人攘宙。 一個(gè)月前我還...
    沈念sama閱讀 47,734評(píng)論 2 368
  • 正文 我出身青樓拐迁,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親线召。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評(píng)論 2 354

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

  • 許多集成的步驟個(gè)推官網(wǎng)都有了哈打,這里只寫(xiě)關(guān)于推送的遠(yuǎn)程推送和本地通知的步驟和代碼。APP在后臺(tái)時(shí):走蘋(píng)果的APNS通...
    AllureJM閱讀 2,717評(píng)論 1 9
  • 概述 在多數(shù)移動(dòng)應(yīng)用中任何時(shí)候都只能有一個(gè)應(yīng)用程序處于活躍狀態(tài)料仗,如果其他應(yīng)用此刻發(fā)生了一些用戶(hù)感興趣的那么通過(guò)通知...
    莫離_焱閱讀 6,511評(píng)論 1 8
  • 極光推送: 1.JPush當(dāng)前版本是1.8.2伏蚊,其SDK的開(kāi)發(fā)除了正常的功能完善和擴(kuò)展外也緊隨蘋(píng)果官方的步伐,SD...
    Isspace閱讀 6,719評(píng)論 10 16
  • 推送通知注意:這里說(shuō)的推送通知跟NSNotification有所區(qū)別NSNotification是抽象的氛改,不可見(jiàn)的...
    醉葉惜秋閱讀 1,515評(píng)論 0 3
  • 一、簡(jiǎn)介 目前說(shuō)的是基于ios10之前,所以有些類(lèi)是過(guò)期的. 推送分為本地推送和遠(yuǎn)程推送2種胜卤。可以在應(yīng)用沒(méi)有打開(kāi)甚...
    JingYa_Lu閱讀 924評(píng)論 0 0