iOS 推送問題全解答《十萬個為啥吖》

Q 1:為啥收不到推送(1)绩郎?

如果收到推送時,App 在前臺運行溉仑,那么:

  • iOS 10 before 頂部橫幅不會彈出浊竟。沒有任何展示津畸,你以為「沒有收到推送」肉拓。
  • iOS 10 after 如果沒有實現(xiàn)以下代碼,也是不會有任何提示的徘郭,你以為「沒有收到推送」。
//UNUserNotificationCenterDelegate
-(void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler{
    completionHandler(UNNotificationPresentationOptionBadge|UNNotificationPresentationOptionSound|UNNotificationPresentationOptionAlert);
}

Q 2:為啥收不到推送(2)?

iOS 使用推送需要 配置推送證書抱环,如果你配過了镇草,仍然收不到推送,建議再配一遍竖伯。筆者曾經(jīng)多次遠(yuǎn)程控制手把手給其他開發(fā)者配置證書七婴,結(jié)果全都重新配一遍就能收到推送了察滑。

Q 3:為啥收不到推送(3)?

Xcode 8 這里打開户盯。


Q 4:為啥收不到推送(4)莽鸭?

推送時開發(fā)環(huán)境蒋川、發(fā)布環(huán)境一一對應(yīng)撩笆。環(huán)境不對應(yīng)夕冲,收不到裂逐。

Q 5:為啥收不到推送(5)卜高?

要在 Apple Developer Center 把你的測試設(shè)備加入到 Device 里面弥姻。

Q 6:為啥收不到推送(6)南片?

一臺手機能收到,另一臺不能收到庭敦。要把你的另一臺測試設(shè)備也加入到 Apple Deveice 里面疼进。。秧廉。

Q 7:為啥收不到推送(7)伞广?

高峰時段你再等幾秒就收到了。

Q 8:為啥還是收不到推送(8)疼电?嚼锄??

Apple 服務(wù)器宕機了区丑,并不是所有的設(shè)備都收不到推送了,而是新的設(shè)備無法成功注冊推送服務(wù)了修陡。

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

在該方法中刊苍,無法返回有效的 deviceToken 值了。等兩天就好了濒析。

Q 9:為啥生產(chǎn)環(huán)境收不到推送正什?

打包,安裝号杏,測試婴氮。即可。

Q 10:為啥 App 右上角的角標(biāo) badge 不清 0盾致?

[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];

Q 11:為啥 App 右上角的角標(biāo) badge 不自增主经?

推送時 badge 參數(shù)設(shè)置: +n自增、-n自減庭惜、n固定值罩驻。
自增、自減一般第三方推送服務(wù)支持才有护赊。

Q 12:為啥 App 在后臺收到推送代碼不執(zhí)行惠遏?

Background Remote Notification

Q 13:為啥 App 在殺死后收到推送代碼不執(zhí)行?

App 殺死啥代碼都不能執(zhí)行骏啰。iOS 10 你可以試試 Notification Service Extension节吮,詳情見 這篇文章 的 Service Extension 部分。

Q 14:為啥收到推送沒聲音(1)判耕?

哥哥手機左側(cè)靜音鍵麻煩撥上來透绩。

Q 15:為啥收到推送沒聲音(2)?

推送時 sound 字段設(shè)置為:default

Q 16:為啥收到推送不播放自定義聲音(1)?

1.聲音文件拖拽并拷貝并生成索引到工程任意位置(在 Xcode 里拖拽)
2.推送時 sound 字段設(shè)置為:name.mp3帚豪。需要名字后綴完全一樣碳竟。

Q 17:為啥收到推送不播放自定義聲音(2)?

拖拽文件時沒有選擇拷貝狸臣,連線測試有聲音瞭亮,拔線沒聲音,聲音文件在電腦里固棚,拔線后缺失统翩。從工程目錄刪除該文件,再重新添加再 build此洲。

Q 18:為啥點擊 App 圖標(biāo)進(jìn)入 App 收不到推送(1)厂汗?

要點推送橫幅、通知中心條目進(jìn)入 App 才能收到呜师。

Q 19:為啥點擊 App 圖標(biāo)進(jìn)入 App 收不到推送(2)娶桦?

解決方法:再發(fā)一條透傳消息。只處理消息汁汗,不處理推送衷畦。不論點哪里進(jìn)的 App,都能保證該事件被處理知牌。

Q 20:為啥推送一條手機會收到兩條一樣的祈争?

iOS 9 的 bug。

Q 21:為啥點擊橫幅不能跳轉(zhuǎn)到指定的界面角寸?

  • 點擊推送啟動 App 在這里捕獲推送內(nèi)容:
 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
      NSDictionary *remoteNotification = [launchOptions objectForKey: UIApplicationLaunchOptionsRemoteNotificationKey];
}
  • 點擊推送從后臺喚醒 App 在這里捕獲推送內(nèi)容:
    • iOS 7 before
   - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{
}
  • iOS 7~9
   - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler{
}
  • iOS 10
//UNUserNotificationCenterDelegate
   - (void)jpushNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler{
       NSDictionary *userInfo = response.notification.request.content.userInfo;
}

Q 22:為啥點擊了推送菩混,通知中心條目不消除(1)?

[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];

Q 23:為啥點擊了推送扁藕,通知中心條目不消除(2)沮峡?

推送時 badge 參數(shù)為 0,再調(diào)用 Q 22 導(dǎo)致通知中心沒有發(fā)生變化亿柑,此時應(yīng)設(shè)為1邢疙,再設(shè)為0:

[[UIApplication sharedApplication] setApplicationIconBadgeNumber:1];
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];

Q 24:為啥用戶不允許通知,以后再也不能彈出請求通知權(quán)限的提示窗了望薄?

先獲取用戶推送權(quán)限設(shè)置情況:

//  iOS 8 before
  UIRemoteNotificationType type = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];

//  iOS 8~9
  UIUserNotificationSettings *settings = [[UIApplication sharedApplication] currentUserNotificationSettings];
  UIUserNotificationType type = settings.types;

//  iOS 10
  UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
  [center getNotificationSettingsWithCompletionHandler:^(UNNotificationSettings * _Nonnull settings) {
  }

如果沒開疟游,跳轉(zhuǎn)到 設(shè)置 - yourApp 頁面讓用戶設(shè)置:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];

Q 25:為啥 iOS 10 不能注冊推送服務(wù)?

//  iOS 8 before
UIRemoteNotificationType type = UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound;
[application registerForRemoteNotificationTypes:type];

//  iOS 8~9
UIUserNotificationType type = UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound;
UIUserNotificationSettings *setting = [UIUserNotificationSettings settingsForTypes:type categories:nil];
[application registerUserNotificationSettings:setting];

//  iOS 10
UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
[center requestAuthorizationWithOptions:(UNAuthorizationOptionBadge | UNAuthorizationOptionSound | UNAuthorizationOptionAlert) completionHandler:^(BOOL granted, NSError * _Nullable error) {
    if (!error) {
      NSLog(@"request authorization succeeded!");
    }
}];

Q 26:為啥樓主懂的這么多式矫?

因為他是極光推送的可耐程序猿葛格^^乡摹。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市采转,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖故慈,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件板熊,死亡現(xiàn)場離奇詭異,居然都是意外死亡察绷,警方通過查閱死者的電腦和手機干签,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拆撼,“玉大人容劳,你說我怎么就攤上這事≌⒍龋” “怎么了竭贩?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長莺禁。 經(jīng)常有香客問我留量,道長,這世上最難降的妖魔是什么哟冬? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任楼熄,我火速辦了婚禮,結(jié)果婚禮上浩峡,老公的妹妹穿的比我還像新娘可岂。我一直安慰自己,他們只是感情好翰灾,可當(dāng)我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布青柄。 她就那樣靜靜地躺著,像睡著了一般预侯。 火紅的嫁衣襯著肌膚如雪致开。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天萎馅,我揣著相機與錄音双戳,去河邊找鬼。 笑死糜芳,一個胖子當(dāng)著我的面吹牛飒货,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播峭竣,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼塘辅,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了皆撩?” 一聲冷哼從身側(cè)響起扣墩,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤哲银,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后呻惕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體荆责,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年亚脆,在試婚紗的時候發(fā)現(xiàn)自己被綠了做院。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡濒持,死狀恐怖键耕,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情柑营,我是刑警寧澤屈雄,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站由境,受9級特大地震影響棚亩,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜虏杰,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一讥蟆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧纺阔,春花似錦瘸彤、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至玻靡,卻和暖如春结榄,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背囤捻。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工臼朗, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蝎土。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓视哑,卻偏偏與公主長得像,于是被迫代替她去往敵國和親誊涯。 傳聞我的和親對象是個殘疾皇子挡毅,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,700評論 2 354

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