我想知道像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
}
}
我已经查过:
我也读过有关PushKit的内容(虽然我没有尝试过),这可能对此有所帮助,但我的理解是应用程序需要是一个VOIP应用程序。显然,我不希望我的应用程序上的VOIP只是在收到推送通知时执行代码。
感谢。
答案 0 :(得分:5)
您刚刚在说明中回答了您的问题。
如果强制退出,则无法通过常规推送通知唤醒应用。
请参阅App Programming Guide for iOS:
在大多数情况下,系统在强制使用后不会重新启动应用 退出用户。一个例外是位置应用程序,在iOS 8和iOS中 之后被用户强制退出后重新启动。其他 但是,用户必须明确启动应用程序或重新启动应用程序 应用程序之前的设备可以自动启动进入 系统背景。
VoIP推送通知可以唤醒应用,即使它是强行退出。
请参阅Voice Over IP (VoIP) Best Practices:
如果在VoIP时它未运行,您的应用会自动重新启动 收到了推。
WhatsApp中的两个蓝色标记表示收件人阅读邮件。如果您收到两个蓝色标记,就在收到推送通知后,这是WhatsApp中的设计错误或错误,因为您无法判断用户是否真正阅读了通知。如果您获得两个灰色标记,这只是意味着消息已传递到设备。再次,如果你得到两个灰色标记,就在收到推送通知并且应用程序强行退出之后,WhatsApp(错误)使用VoIP推送,或者他们只是假设推送是交付或将交付。