如何在 iOS 应用中检索和处理远程推送通知内容

Posted

技术标签:

【中文标题】如何在 iOS 应用中检索和处理远程推送通知内容【英文标题】:how to retrieve and handle remote push notification content in iOS app 【发布时间】:2013-07-01 03:30:03 【问题描述】:

我试图在应用程序未运行时获取远程通知信息,所以我被告知我可以从:

UILocalNotification *localNotification  = [launchOptions 
                   objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey] 

在方法中:

- (BOOL)application:(UIApplication *)application 
               didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

,但仍然无法获取信息。

然后我使用alertView在iPhone上显示信息(启动没有Xcode),仍然无法获取信息。

还有其他问题会导致这种情况吗?如果您有任何想法,请告诉我。

【问题讨论】:

应用关闭时收不到信息,只能在点击提醒推送消息时调用。 【参考方案1】:

如何检索和处理远程通知:

应用正在运行

下面方法中的userInfo已经包含了推送通知

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo


应用未运行

launchOptions中key的值包含推送通知,分两种情况:

1.屏幕被锁定,当收到远程推送通知时,屏幕被点亮并且用户解锁屏幕然后直接启动应用程序。

2.用户点击下拉菜单上的通知以启动应用程序。 如果用户直接点击应用程序,则通知将消失并错过。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

   [launchOptions valueForKey:UIApplicationLaunchOptionsRemoteNotificationKey] description];

【讨论】:

【参考方案2】:

该键仅在用户从通知启动您的应用程序时出现在启动选项中(例如,在通知中心点击它)。顺便说一句,我认为远程通知不会是您正在使用的课程 (UILocalNotification)。

如果设备收到推送时您的应用不在前台,并且用户没有从通知中启动您的应用,则通知已消失。您必须检查自己的服务器以查看是否遗漏了任何内容。

【讨论】:

这种情况下应该怎么做: 就像我说的,您需要将信息存储在服务器上并询问服务器应用程序在启动时错过了什么。

以上是关于如何在 iOS 应用中检索和处理远程推送通知内容的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin 推送通知,在应用程序激活后处理远程通知

Swift - GCM:不显示 iOS 远程推送通知

如何清除 iOS 的远程推送通知?

注册后在 iOS MDM 代理中获得通知

iOS - 当应用程序被用户强制退出时处理静默推送通知

iOS推送通知和远程通知的区别?