如何检测用户点击的iOS远程通知?

Meh*_*d M 5 iphone objective-c push-notification apple-push-notifications ios

当用户点击远程通知时,会在app委托中触发以下回调:

-application:didReceiveRemoteNotification:fetchCompletionHandler:

在这种情况下,应用程序启动,应用程序状态是UIApplicationStateActive我将其解释为用户对远程通知执行操作.

问题: 当远程通知到达且app 处于非活动状态的前台时,也可以调用此方法.

示例:当通知中心视图打开时(从屏幕顶部向下滑动)或UIAlert打开.在这两种情况下,应用程序状态都是,UIApplicationStateActive并且无法判断它是否是用户操作的通知或系统推送.

:如何确定didReceiveRemoteNotification回调是否是对用户点击远程通知与远程通知到达的响应?

gom*_*isj 1

UIApplicationState state = [application applicationState];
     if (state == UIApplicationStateActive)
     { 
          //When your app is in foreground and it received a push notification
     }
     else if (state == UIApplicationStateInactive) 
     {
          //When your app was in background and it received a push notification
     }
Run Code Online (Sandbox Code Playgroud)

此外,如果应用程序未运行且用户点击了通知,则将调用 didFinishLaunchingWithOptions。我还没有尝试过,但我可以假设您可以从选项中获取通知详细信息。