推送常見問題說明

一、點(diǎn)擊push消息啟動的2種情況

????當(dāng)用戶通過點(diǎn)擊push消息啟動應(yīng)用的時候,有兩種情況:

????????1)、應(yīng)用在后臺運(yùn)行,此時會走到- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler。

????????2)、應(yīng)用未啟動,此時會走到- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(nullable NSDictionary *)launchOptions。

二、第二種情況的注意事項(xiàng)

????如果應(yīng)用在后臺時收到push,- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler方法會立刻執(zhí)行一次;當(dāng)用戶點(diǎn)擊push消息啟動的時候,會執(zhí)行第二次。所以在該方法中需要區(qū)分是不是用戶點(diǎn)擊push消息啟動,如果不是則不處理。

????????????????typedef NS_ENUM(NSInteger,UIApplicationState){

????????????????????UIApplicationStateActive,

????????????????????UIApplicationStateInactive,

????????????????????UIApplicationStateBackground

????????????????}NS_ENUM_AVAILABLE_IOS(4_0);

? ? 上面是UIApplicationState的定義,可以簡單理解UIApplicationStateActive是前臺狀態(tài),UIApplicationStateBackground是后臺狀態(tài),UIApplicationStateInactive就是第二次調(diào)用- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler方法時的狀態(tài)(具體含義請參考官方文檔,在此只是大致理解下)。

三、應(yīng)用處于前臺時收到推送

????應(yīng)用處于前臺收到推送時,此時會走到- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(nullable NSDictionary *)launchOptions方法,此時在方法中通過UIApplicationStateActive判斷是否為該場景。

四、方法廢棄策略

????- (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo fetchCompletionHandler:(void(^)(UIBackgroundFetchResultresult))completionHandlerNS_AVAILABLE_IOS(7_0);

????- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo NS_DEPRECATED_IOS(3_0, 10_0, "");

????雖然第二個方法可以支持到iOS10,但是如果第一個方法存在,則iOS操作系統(tǒng)優(yōu)先選擇未廢棄的方法,也就是第一個方法,所以在目前普遍都升級到iOS9的情況下,第二個方法可以不實(shí)現(xiàn)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容