从服务器发出通知后更新应用程序中的数据 - 即使强制退出?



我确实有一个事件注册系统,用户可以在Web应用程序和iOS应用程序中在线注册。这些事件与 iPhone 上的本地日历同步。

现在我想实现的是,每当用户更改Web应用程序中的某些内容时,它都会自动更新设备日历。我尝试了推送和后台提取,但是当用户强制退出应用程序时,两者都不起作用。有没有办法至少定期在应用程序中运行一些代码来进行更新?

你试过静默通知吗?您可以在有效负载中包含"content-available" : 1键。iOS将唤醒您的应用程序并允许您下载一些数据。

查看Configuring a Silent Notification标题下。

https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CreatingtheNotificationPayload.html#//apple_ref/doc/uid/TP40008194-CH10-SW1

也许你可以用PushKit来实现这一点。它允许您静默地在后台启动您的应用程序,即使您的应用程序通过从应用程序切换器中滑出而被杀死,也没有视觉警报提示。

但问题是PushKit仅用于VoIP,watchOS复杂性和文件提供程序更新。我不确定苹果是否允许我们将其用于任何其他目的。

因此,如果您无法使用 PushKit 做到这一点,那么没有其他方法可以实现这一点。

在有效负载中使用不带警报键的可用内容

{
"aps" = {
"content-available" : 1
};
data = {
"title" = "Welcome";
};
}

我认为即使用户强制退出,静默推送通知仍然会传递并唤醒您的应用程序。请注意,推送通知通常不保证会传递,因此在应用启动时始终保持同步。

如果静默推送通知不起作用,则无法执行此操作,因为当用户强制退出应用程序时,所有本地事件触发器(例如位置更新(都不再执行。

这里真正的解决方案可能是告诉用户强制退出不会优化电池寿命,实际上在许多情况下会使电池寿命变得更糟。这是一个普遍的误解,教用户不要这样做不仅有利于您的应用程序,也有利于其他应用程序。因此,如果你的应用依赖于不完全强制,那么实际上可能是一种解决方案,向用户显示解释屏幕,向他解释这会损害应用的体验。

最新更新