Ios 我应该在收到有效负载后更新我的应用程序吗?或者我应该通过允许它自己下载来更新它?

Ios 我应该在收到有效负载后更新我的应用程序吗?或者我应该通过允许它自己下载来更新它?,ios,swift,apple-push-notifications,remote-notifications,silent-notification,Ios,Swift,Apple Push Notifications,Remote Notifications,Silent Notification,当您的iPhone收到WhatsApp/电报推送通知时,例如: wife: "buy pizza" 问题1:应用程序是否必须自己下载/接收这些信息。这是手机上弹出的横幅,需要自己下载+我的Whatsapp/电报需要自己再次下载 我的朋友回答说: 推送通知可以将消息作为有效负载。你的应用程序可能会 将其提取并动态插入到对话中,而无需 提出一个额外的要求——我以前也这样做过。让人觉得 非常快。不利的一面是你不能保证 将以正确的顺序到达(或根本不到达) 但我不相信,从语义的角度来看,推送通知不应该真

当您的iPhone收到WhatsApp/电报推送通知时,例如:

wife:
"buy pizza"
问题1:应用程序是否必须自己下载/接收这些信息。这是手机上弹出的横幅,需要自己下载+我的Whatsapp/电报需要自己再次下载

我的朋友回答说:

推送通知可以将消息作为有效负载。你的应用程序可能会 将其提取并动态插入到对话中,而无需 提出一个额外的要求——我以前也这样做过。让人觉得 非常快。不利的一面是你不能保证 将以正确的顺序到达(或根本不到达)

但我不相信,从语义的角度来看,推送通知不应该真正更新你的应用程序本身。如果他们这样做,那就是滥用……他们应该只通知你的应用程序更新,然后允许你自己通过下载任何可用的新内容来进行更新

因此,为了了解顶级公司及其应用程序是否在应用我朋友建议的内容,我对3个应用程序(Gmail、WhatsApp、Telegram)进行了一个小实验:

我关闭了Wifi,但保持手机数据打开,然后我还禁用了应用程序使用手机数据的访问。

然后有人给我发了一封邮件: 以下是我的结果:

电报::我收到一个警报(有发送者+第一行)。但一旦我打开应用程序(或点击通知),它就没有我的新消息或任何东西

但是,如果允许Telegram访问互联网…它会在后台下载消息…也就是说,如果我遵循以下顺序:我是wifi或手机数据,没有互联网限制-->接收通知-->完全关闭互联网,然后转到应用程序:我将在那里看到完整的消息/正文

Gmail:我收到一个提醒(有主题/发件人/正文预览),但一旦我打开应用程序,它就没有我的新消息或任何东西

如果Gmail应用程序被允许访问互联网……那么与电报相反:在打开应用程序之前,它将下载/更新Gmail中的电子邮件。我猜Gmail没有可用的
内容
设置为
1
,但Telegrame将其设置为
1

WhatsApp:我什么也没得到

收到通知后不会发生任何交互…只有当应用程序正在自行下载时才会发生交互

我的结论是:

收到通知后不会发生交互…只有当应用程序独立于有效负载到达而下载时才会发生交互

Gmail和Telegram正在进行冗余下载,基本上还不够聪明,无法接受我朋友的建议,或者不接收电子邮件/消息的风险太大,最好是出于安全考虑:想想你的脸:


问题2:结论正确吗?

首先,下载有效负载通常不是问题。我可以想象有效载荷通常非常小(可能没有普遍的答案?好吧……让我说得非常具体。就节省电池和不重新下载东西+可靠性而言,WhatsApp、Telegram等应用程序的正确方法是什么?至于你的修改建议,我不确定为什么我必须走这条路。
应用程序是什么(didReceiveEmotentification:fetchCompletionHandler:)
用于?在收到通知时不会触发吗?您可以实现该方法,并让它从通知中检索/保存用户信息(我建议这样做),但有一个问题:该方法不能保证被调用。请参阅。该方法仅用于使新消息/通知在应用程序中更快地可用。但是,您的应用程序还应该检查其服务器以获取新数据。您的意思是什么?我看到了链接(同样,我以前也读过)你提供了。你认为哪一部分相关?我对接受的答案不太满意:(.无论如何提供了赏金。至于其他答案,请参阅。确保通读评论