我想知道像 Whatsapp 这样的应用程序如何能够向消息的发件人提供送达收据(双绿色支票)。
我发现,即使您强制退出 Whatsapp(使用应用程序任务切换器并将应用程序滑开),发件人仍然会在手机收到推送通知时收到送达收据(双绿色勾号)。显然,他们能够在收到推送通知时执行代码(向后端发出请求,通知交付)。
由于iOS7可以发送带有“content-available”:1的推送通知有效负载,这使得通知的接收者能够执行用户代码,所以,首先我认为他们正在使用此功能。
但是,如果用户强制退出应用程序,则收到通知时不会执行用户代码。因此,我无法模仿 Whatsapp 的行为。
我已启用“功能”>“后台模式”并选中“远程通知”。
我正在用这种方法处理通知:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
我正在使用此有效负载发送通知:
{
"aps":{
"alert":"Hello world",
"sound":"MySound.wav",
"content-available":1
}
}
我已经查过了:
- 如果用户强制退出,iOS 会将我的应用程序启动到后台吗?
- WWDC 视频多任务处理的新增功能(WWDC 2013 中的#204)
我还阅读了有关 PushKit 的内容(尽管我没有尝试过),这可能会有所帮助,但我的理解是该应用程序需要是 VOIP 应用程序。显然,我不想在我的应用程序上要求 VOIP 在收到推送通知时只执行代码。
Thanks.
您刚刚在描述中回答了您的问题。
-
如果应用程序被强制退出,则无法通过常规推送通知唤醒应用程序。
See iOS 应用程序编程指南:
大多数情况下,系统在强制应用程序后不会重新启动应用程序
由用户退出。位置应用程序是一个例外,它在 iOS 8 和
稍后在用户强制退出后重新启动。其他
但在某些情况下,用户必须显式启动应用程序或重新启动应用程序
设备之前应用程序可以自动启动到
系统后台。
-
VoIP 推送通知可以唤醒应用程序,即使它被强制退出。
See IP 语音 (VoIP) 最佳实践:
如果您的应用程序在 VoIP 时未运行,则会自动重新启动
收到推送。
Two blueWhatsApp 中的标记表示收件人已阅读该消息。如果你得到两个blue标记,在收到推送通知后,这是 WhatsApp 中的设计错误或错误,因为您无法判断用户是否真正阅读了通知。如果你得到两个grey标记,这仅意味着消息已传递到设备。再说一次,如果你得到两个grey标记,就在收到推送通知并且应用程序被强制退出后,WhatsApp 要么(错误)使用 VoIP 推送来实现此目的,要么他们只是假设推送已发送或将要发送。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)