gpt4 book ai didi

ios - 推送通知处理

转载 作者:IT王子 更新时间:2023-10-29 07:41:16 25 4
gpt4 key购买 nike

我正在阅读 Apple 的文档

Handling Local and Remote Notifications

在我看来有相互矛盾的陈述。有人可以清除这些混淆点吗?现在让我们严格地谈谈远程通知(相对于本地)。

文档说如果按下通知上的操作按钮,它会调用 application:didFinishLaunchingWithOptions 并传入通知负载。后来它说如果应用程序在前台运行,它会通过 application:didReceiveRemoteNotification: 传递通知。这对我来说意味着当应用程序在后台运行或未运行时,将调用 application:didFinishLaunchingWithOptions。否则,调用 application:didReceiveRemoteNotification:。

后来,有一个 iOS Note 说如下:

"iOS 注意:在 iOS 中,您可以通过检查应用程序状态来确定应用程序是否因用户点击操作按钮而启动,或者通知是否已传递到已经运行的应用程序。在委托(delegate)的实现中在 application:didReceiveRemoteNotification: 或 application:didReceiveLocalNotification: 方法中,获取 applicationState 属性的值并对其进行评估。如果值为 UIApplicationStateInactive,则用户点击了操作按钮;如果值为 UIApplicationStateActive,则应用程序在最前面接收到通知。”

这对我来说意味着 application:didReceiveRemoteNotification: 会在应用程序已经前台运行时以及用户按下操作按钮(或在 iOS 5 中滑动操作 slider )以前台/启动应用程序时调用。

我困惑的根源可能是第一部分,其中文档暗示通知有效负载是通过 application:didFinishLaunchingWithOptions: 方法发送的,或者是对“正在运行”的应用程序是什么的误解(后台应用程序被认为是“正在运行的” “?)。 application:didReceiveRemoteNotification: 的文档指出它被称为“正在运行的”应用程序。

因此,总而言之,我能否澄清一下:

1) application:didReceiveRemoteNotification: 是否总是在应用程序处于前台或用户选择对通知“采取行动”时调用?如果不是,我们如何理解关于确定应用程序状态是事件还是非事件的 iOS 注释?

2) 后台应用程序是否“正在运行”,至少在声称应用程序的文档意义上:didReceiveRemoteNotification 被调用以运行应用程序?

3) 为了完成,后台应用程序 UIApplicationStateInactive 还是 Active?

最佳答案

这里的措辞令人困惑,尤其是围绕单词背景。

当应用程序确实没有加载到内存中时(例如,当您启动它时出现启动画面等),然后 application:didFinishLaunchingWithOptions 被调用,您可以获得如下推送通知:

NSDictionary *remoteNotif = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];

if(remoteNotif)
{
//Handle remote notification
}

如果应用加载到内存中并且处于事件状态(例如,应用当前在设备上打开),则仅调用 application:didReceiveRemoteNotification:

如果应用程序已加载到内存中但未处于事件状态且未在后台运行(例如,您启动了应用程序,然后按下主页按钮并等待 10 秒),然后单击推送通知上的操作按钮,仅didReceiveRemoteNotification 被调用。

您可以按如下方式捕获此案例:

-(void)application:(UIApplication *)app didReceiveRemoteNotification:(NSDictionary *)userInfo
{
if([app applicationState] == UIApplicationStateInactive)
{
//If the application state was inactive, this means the user pressed an action button
// from a notification.

//Handle notification
}
}

关于ios - 推送通知处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10131856/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com