沒有開啟了Background Modes 里面的Remote notifications
- 當(dāng)App沒有啟動(dòng)的時(shí)候霜第,收到通知時(shí),系統(tǒng)會(huì)彈出通知提示框户辞, 如果用戶點(diǎn)擊通知泌类,程序會(huì)自動(dòng)啟動(dòng),但是
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
函數(shù)并不會(huì)被調(diào)用底燎,這個(gè)時(shí)候需要判斷- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
中的launchOptions
的UIApplicationLaunchOptionsRemoteNotificationKey
來(lái)獲取Apns信息刃榨,然后再做進(jìn)一步的處理;
- 如果App是在后臺(tái)的話双仍,收到通知時(shí)枢希,系統(tǒng)會(huì)彈出通知提示框,如果用戶點(diǎn)擊通知朱沃,系統(tǒng)會(huì)把程序喚醒到前臺(tái)苞轿,然后
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
會(huì)被調(diào)用;
- 如果App是在前臺(tái)運(yùn)行的時(shí)候收到通知的話逗物, 系統(tǒng)不會(huì)自動(dòng)彈出通知提示框, 需要自己在
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
里面處理搬卒, 比如顯示一個(gè)alertview或者發(fā)送Local Notification
;
注意
如果同時(shí)實(shí)現(xiàn)了- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
和 - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
, 只有前者會(huì)被調(diào)用.
開啟了Background Modes 里面的Remote notifications
如果返回的apns payload 結(jié)構(gòu)是
silent notification
的話, 不管App是在后臺(tái)翎卓,還是在前臺(tái)契邀,(如果app在后臺(tái)被kill掉了,一樣不會(huì)調(diào)用) 系統(tǒng)都不會(huì)自動(dòng)彈框失暴,同時(shí)(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
方法會(huì)被調(diào)用, 如果App是在后臺(tái)的suspend的話坯门,會(huì)被喚醒到后臺(tái)如果返回的apns payload結(jié)構(gòu)是普通的,流程和上面沒有開啟
Background Modes
是一致的(APP不會(huì)被喚醒)逗扒;
靜默通知 payload配置
- 不能加alert古戴,sound這些,矩肩;
- content-avaliable : 1;
- 可以添加自定義的key 现恼,否則發(fā)靜默通知也沒有用;
- aps { content-available: 1 yourkey: {...} }