ios 推送通知代码执行(强制退出应用程序)

e7arh2l6  于 2023-08-08  发布在  iOS
关注(0)|答案(2)|浏览(117)

我想知道像WhatsApp这样的应用程序如何能够向消息的发件人给予送货收据(双绿色检查)。
我已经看到,即使您强制退出Whatsapp(使用应用程序任务切换器并将应用程序刷走),发件人仍然会在手机上收到推送通知的那一刻获得送货收据(双绿色检查)。显然,它们能够在接收到推送通知时执行代码(向后端发出请求,通知交付)。
由于iOS7可以发送一个带有“内容可用”的推送通知有效载荷:1,这使得通知的接收者能够执行用户代码,所以,首先我认为他们正在使用这个功能。然而,如果用户强制退出应用,则在接收到通知时不执行用户代码。因此,我无法模仿WhatsApp的行为。
我已启用功能>后台模式并选中远程通知。
我正在使用此方法处理通知:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler

字符串
我正在发送包含以下有效负载的通知:

{
    "aps":{
            "alert":"Hello world",
            "sound":"MySound.wav",
            "content-available":1
    }
}


我已经查过了:

我也读过关于PushKit的文章(虽然我没有尝试过),这可能会在这里有所帮助,但我的理解是,该应用程序需要是一个VOIP应用程序。显然,我不想在我的应用程序上要求VOIP在接收推送通知时只执行代码。

  • 谢谢-谢谢
gzjq41n4

gzjq41n41#

你刚刚在描述中回答了你的问题。
1.如果是强制退出,则无法通过常规推送通知唤醒应用程序。
请参阅iOS应用程序编程指南:
在大多数情况下,系统不会在用户强制退出应用程序后重新启动应用程序。一个例外是位置应用,在iOS 8及更高版本中,这些应用在用户强制退出后会重新启动。然而,在其他情况下,用户必须显式启动应用程序或重新启动设备,然后应用程序可以由系统自动启动到后台。

  1. VoIP推送通知可以唤醒应用程序,即使它是强制退出的。
    参见Voice Over IP (VoIP) Best Practices
    如果您的应用在收到VoIP推送时未运行,它将自动重新启动。
  2. WhatsApp中的两个蓝色标记表示收件人已阅读消息。如果你在收到推送通知后得到两个蓝色标记,这是WhatsApp的设计错误或错误,因为你无法判断用户是否真的阅读了通知。如果您看到两个灰色标记,则表示消息已发送到设备。同样,如果你得到两个灰色标记,就在收到推送通知并且应用程序被强制退出之后,WhatsApp正在(错误)使用VoIP推送,或者他们只是假设推送已经交付或将交付。
wljmcqd8

wljmcqd82#

这实际上是最近由iOS更改/修复的。我用一个示例应用程序开发了一个推送通知包,并演示了它:x1c 0d1x的数据

相关问题