iOS上的可靠通知,无需使用推送通知

iOS上的可靠通知,无需使用推送通知,ios,notifications,reliability,Ios,Notifications,Reliability,我正在寻找一种不使用Apple推送通知服务而可靠地实现iOS应用程序通知的方法 由于应用程序的一些限制-它不是一个集中的应用程序,该公司向在自己的服务器上运行的客户销售服务器软件,这些客户不想与集中服务共享任何信息,而且它经常在封闭的网络中运行,出于安全原因,或者仅仅因为它们位于远程位置,互联网流量非常昂贵,除非绝对必要,否则不会使用——我不能使用标准的推送通知路由 我已经实现了一个使用iOS后台获取机制的系统,执行后台下载,如果需要,在下载完成后创建一个本地通知——它可以部分工作。但是由于后台

我正在寻找一种不使用Apple推送通知服务而可靠地实现iOS应用程序通知的方法

由于应用程序的一些限制-它不是一个集中的应用程序,该公司向在自己的服务器上运行的客户销售服务器软件,这些客户不想与集中服务共享任何信息,而且它经常在封闭的网络中运行,出于安全原因,或者仅仅因为它们位于远程位置,互联网流量非常昂贵,除非绝对必要,否则不会使用——我不能使用标准的推送通知路由

我已经实现了一个使用iOS后台获取机制的系统,执行后台下载,如果需要,在下载完成后创建一个本地通知——它可以部分工作。但是由于后台提取是由一些神奇的iOS算法决定的,所以它是非常不可靠的。充其量,在用户最小化应用程序后,或者有时iOS根本不调用application:performFetchWithCompletionHandler(至少在本质上使该功能无用的时间段内),它只能获得一个通知尽管我已将setMinimumBackgroundFetchInterval调用为UIApplicationBackgroundFetchIntervalMinimum


有没有办法让iOS更频繁、更可靠地启动后台抓取?我是否可以使用其他方法向后台的iOS应用程序发送通知,而不依赖于网络上除我控制的服务器以外的任何其他设备的可用性?这是一条死胡同吗?

这可能是一条死胡同。推送消息实际上保持了设备和苹果服务器之间的会话连接。通常,当应用程序不在前台时,它无法保持网络连接处于活动状态。如果应用程序不适用于应用程序商店,则可能使用音频背景模式;你的应用程序可以在监视服务器的通知数据时“保持沉默”。如果这对某人有用,我可以通过“假装”来解决无法在后台保持连接打开的初始问题网络连接不良和/或服务器处理请求的时间过长。我没有在响应中指定内容长度,偶尔发送一些空白,并在实际有响应内容时使用一些有效的json结束内容。这在某种程度上是可行的,但通常情况下,在第一次响应完成后,iOS在很长一段时间内不会重新启动获取过程。而且,很遗憾,是的,在我的情况下,我需要应用程序来遵守应用程序商店规则,因此我不能使用后台“音频播放器”方法,但这对那些不通过应用商店提供应用的人来说是很有用的-很好的提示。也许你可以研究一下
报摊
背景模式,如果它适合你的应用向用户展示一些信息的方式。谢谢你的主意-不知怎的,我完全忘记了这种背景模式的存在。但对我来说有两个问题:1)它说这种模式是“应用程序是一个报摊应用程序,可以在后台下载和处理杂志或报纸内容”,我很肯定苹果会强制执行。2) 说整个过程都依赖于APN——如果有,我会使用它们。这可能是一条死胡同。推送消息实际上保持了设备和苹果服务器之间的会话连接。通常,当应用程序不在前台时,它无法保持网络连接处于活动状态。如果应用程序不适用于应用程序商店,则可能使用音频背景模式;你的应用程序可以在监视服务器的通知数据时“保持沉默”。如果这对某人有用,我可以通过“假装”来解决无法在后台保持连接打开的初始问题网络连接不良和/或服务器处理请求的时间过长。我没有在响应中指定内容长度,偶尔发送一些空白,并在实际有响应内容时使用一些有效的json结束内容。这在某种程度上是可行的,但通常情况下,在第一次响应完成后,iOS在很长一段时间内不会重新启动获取过程。而且,很遗憾,是的,在我的情况下,我需要应用程序来遵守应用程序商店规则,因此我不能使用后台“音频播放器”方法,但这对那些不通过应用商店提供应用的人来说是很有用的-很好的提示。也许你可以研究一下
报摊
背景模式,如果它适合你的应用向用户展示一些信息的方式。谢谢你的主意-不知怎的,我完全忘记了这种背景模式的存在。但对我来说有两个问题:1)它说这种模式是“应用程序是一个报摊应用程序,可以在后台下载和处理杂志或报纸内容”,我很肯定苹果会强制执行。2) 说整个过程都依赖于APN——如果有,我会使用它们。