推送常见问题说明

一、点击push消息启动的2种情况

    当用户通过点击push消息启动应用的时候,有两种情况:

        1)、应用在后台运行,此时会走到- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler。

        2)、应用未启动,此时会走到- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(nullable NSDictionary *)launchOptions。

二、第二种情况的注意事项

    如果应用在后台时收到push,- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler方法会立刻执行一次;当用户点击push消息启动的时候,会执行第二次。所以在该方法中需要区分是不是用户点击push消息启动,如果不是则不处理。

                typedef NS_ENUM(NSInteger,UIApplicationState){

                    UIApplicationStateActive,

                    UIApplicationStateInactive,

                    UIApplicationStateBackground

                }NS_ENUM_AVAILABLE_IOS(4_0);

    上面是UIApplicationState的定义,可以简单理解UIApplicationStateActive是前台状态,UIApplicationStateBackground是后台状态,UIApplicationStateInactive就是第二次调用- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler方法时的状态(具体含义请参考官方文档,在此只是大致理解下)。

三、应用处于前台时收到推送

    应用处于前台收到推送时,此时会走到- (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操作系统优先选择未废弃的方法,也就是第一个方法,所以在目前普遍都升级到iOS9的情况下,第二个方法可以不实现。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容