静默刷新另一个应用程序
Posted
技术标签:
【中文标题】静默刷新另一个应用程序【英文标题】:Refresh another app silently 【发布时间】:2016-09-20 13:28:02 【问题描述】:我是否可以根据 My App 中的事件刷新内置的 Apple Mail?
所以,:
-
我的应用没有在用户的手机上运行。
它等待接收静默(无警报)推送通知。
它提取数据并根据特定条件触发事件。
刷新(不启动)Mail 应用程序,以便它自己接收自己的推送通知。
所以基本上所有事情都在后台发生,Mail 应用最终会收到新邮件的推送通知,因为它会接收或获取或手动刷新。
我阅读了Inter-App Communication 页面,但它没有回答我的问题,所以我想知道它是否可能。
【问题讨论】:
你能举一个更具体的例子吗?什么是应用程序XYZ
?你说的是像日历这样的系统应用吗?
@JAL Apple 的默认邮件应用程序。
没有理由(我认为不可能)刷新邮件应用程序。用户可以手动获取或推送邮件设置。您是否尝试将通知推送到设备、获取一些信息、将该信息返回到服务器并基于此发送电子邮件?
绝对不可能使用公共 API(除非你也控制 XYZ)。
当 Jal 说它是手动或推送时,这是一个完整的列表。你想要别的东西是无关紧要的。其他选项不可用。如果是邮件,那么您无法保证无论如何都会立即收到电子邮件。
【参考方案1】:
让我试着分解一下你在问什么:
我的应用收到静默推送通知,获取一些信息,并向服务器发送请求(全部在后台)。
当服务器收到该请求时,它会向设备发送一封电子邮件。
您希望该电子邮件立即出现。
Apple 没有让开发人员明确控制更改用户的邮件设置。作为开发人员,您可能甚至不知道设备上有哪些邮件帐户(或者用户是否有可用的正确帐户)。我想说的是,对于 Apple 的 API 的当前结构,您的要求是不可能的。
邮件应用程序中的推送通知不像其他应用程序那样工作。要么立即将邮件推送到设备(启用推送开关),要么按时间间隔获取邮件,要么用户每次打开应用程序时手动刷新邮件。如果用户将 Fetch 设置为手动,他们将不会收到您的电子邮件。
【讨论】:
不一定是特定的电子邮件我可以安全地假设用户添加了电子邮件帐户,它只是刷新邮件应用程序,以便它可以像手动刷新一样接收推送通知。 @3zzy 是的,你不能那样做。我会看看是否可以使用私有 API 收集答案,但我认为更改用户的邮件设置会侵犯隐私。 我不知道你为什么说 change 用户的邮件设置,我只是想刷新邮件,当我确定有电子邮件时也是如此获取。 @3zzy 邮件应用程序中的推送通知不像其他应用程序那样工作。要么定期将邮件推送到设备,要么用户在每次打开应用程序时手动刷新邮件。如果用户将 Fetch 设置为手动,他们将不会收到您的电子邮件。我将编辑我的答案以添加图片。【参考方案2】:好的,你问的有很多点可能会引起一些问题:
我的应用没有在用户的手机上运行。
它等待接收静默(没有警报)推送通知。
如果用户为您的应用停用了后台模式,您的应用甚至不会收到静默通知。什么都不会发生。
它提取数据并根据某些条件触发事件。
不要忘记您只有 30 秒的时间来执行任何请求。如果您的请求时间过长,ios 将终止该进程。
刷新(不启动)邮件应用程序,以便它可以接收自己的推送 通知本身。
根本不可能,可能是越狱设备:D Apple 不会让开发人员在其原生应用程序中拥有很多可能性。您可以打开邮件应用程序,打开要发送的新邮件,但这几乎是您所能做的。
【讨论】:
以上是关于静默刷新另一个应用程序的主要内容,如果未能解决你的问题,请参考以下文章
(iOS) GCM 静默推送通知以在应用程序终止时触发调用另一个 API
静默刷新在 OPTIONS 预检上进行身份验证,但不在 GET 到 UserInfo 端点上进行身份验证