iOS 点击icon进入程序怎么获取推送消息

但很多app都实现这种,不点通知进入,直接点app启动照样能得到推送信息的。

网上的说法:没有具体实施

如果不是点击通知栏进入APP,是拿不到推送消息的。原因是这样的,如果堆积了多条应用,回调将会变得复杂,而且没用。正确的做法是,服务器要缓存好当前的未读消息,进入应用的时候去获取未读消息。如果要识别通知栏点击,那获取未读消息之前可能还要进行进一步逻辑处理。

原来极光推送有background模式,我后台的时候直接把消息处理一下,要求显示alert事件,点击icon进入app内就显示alert了。

有关极光社区中的帖子:https://community.jiguang.cn/t/ios/13750

// Required, iOS (7.0 and later) Support
    //iOS7及以上系统,收到通知
    func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
        //处理收到的 APNs 消息
        JPUSHService.handleRemoteNotification(userInfo)
        completionHandler(.newData)
        /**
         *  iOS的应用程序分为3种状态
         *      1、前台运行的状态UIApplicationStateActive;
         *      2、后台运行的状态UIApplicationStateInactive;
         *      3、app关闭状态UIApplicationStateBackground。
         */
        if application.applicationState == .active {
            // 应用正处理前台状态下,不会收到推送消息,因此在此处需要额外处理一下
            //let message = "您有一条新的消息,是否点击查看"
            print("// 应用正处理前台状态下,不会收到推送消息,因此在此处需要额外处理一下------------userinfo:%@",userInfo)
            showAlertWithMessage(userInfo)
            
            
        } else if application.applicationState == .inactive {
            // 处于后台运行状态时
            
           print("// 处于后台运行状态时---------userinfo:%@",userInfo)
           showAlertWithMessage(userInfo)
            
        } else if application.applicationState == .background {
            //app关闭状态
            print("//app关闭状态-----------userinfo:%@",userInfo)
            showAlertWithMessage(userInfo)
        }
        
    }

你可能感兴趣的:(iOS 点击icon进入程序怎么获取推送消息)