如果没有 IOS 中的 VOIP,我如何让我的应用程序永远活着?

Posted

技术标签:

【中文标题】如果没有 IOS 中的 VOIP,我如何让我的应用程序永远活着?【英文标题】:How can I keep my app alive forever without VOIP in IOS? 【发布时间】:2014-12-09 07:17:17 【问题描述】:

我的应用包含需要在后台运行的功能。该应用程序需要在后台监控加速度计,以便在检测到跌倒时发出通知。

我使用 VOIP 添加了“永远活着”功能,但我的应用被拒绝了。那么有没有其他方法可以永久在后台运行我的应用程序?

更新

Apple 建议在我的代码中删除 VOIP 或添加更多 VOIP 功能。所以我阅读了一些教程来添加 VOIP 功能。

https://www.twilio.com/docs/client/ios

http://www.raywenderlich.com/29948/backgrounding-for-ios

但会感到困惑。所以请提供一些解决方案。以便我的应用程序被苹果接受。

【问题讨论】:

您提议的做法违反了 Apple 的政策。重新考虑您的应用概念,抱歉。 不可能。我得到了同样的问题。我在后台更新我的位置,并在后台模式下更新我的应用程序。如果您不断更新您的位置然后应用被拒绝,那么还有一件事。 它是安全应用程序,需要在后台运行。这是我的应用程序的主要功能。所以请建议任何其他方式。我可以使用位置更新程序吗?它被接受了吗? 重新阅读上面的 cmets - 你做不到。这违反了 App Store 政策。 我可以使用 VOIP 吗? @AshleyMills 【参考方案1】:

你可以试试CocoaPods库KeepAppAliveForever

  pod 'KeepAppAliveForever'

或thisgithub 存储库。

【讨论】:

【参考方案2】:

https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/iPhoneAppProgrammingGuide.pdf

我发现这个网站下载了这个 pdf 并转到第 60 页并从那里阅读你的秘密隐藏,如果你很绝望,它需要一些阅读。哈哈。

阅读愉快。 :D 希望这对您有所帮助。

我做了一些代码研究

- (void) backgroundForever 
        backgroundTaskID = [application beginBackgroundTaskWithExpirationHandler:^
             [self backgroundForever]; 
        ];


- (void) stopBackgroundTask 
       UIApplication *application = [UIApplication sharedApplication];
       if(backgroundTaskID != -1)
            [application endBackgroundTask:backgroundTaskID];

所以基本上我们在当前后台任务结束时启动一个新的后台任务。每当您想停止后台任务时,您都可以调用 stopBackgroundTask。这取决于您的应用程序逻辑,例如您可以在 applicationDidEnterForeground 中调用它。

它有效,但我不确定您的应用是否会通过 Apple 审核。

来自 AJTech

【讨论】:

我已经用过这段代码了。但它可以工作 10 分钟。 @AJ 科技

以上是关于如果没有 IOS 中的 VOIP,我如何让我的应用程序永远活着?的主要内容,如果未能解决你的问题,请参考以下文章

即使应用程序未在后台运行,也可以自动打开应用程序的VoIP推送通知是否可以在iOS中使用?

IOS VoiP 推送不适用于 APNS 推送

iOS 13 在后台没有收到 VoIP 推送通知

当用户将手机切换为静音时,如何防止我的 iOS VoIP 应用播放音频?

iOS 应用因 VoIP 后台模式而被拒绝

关于来电 iOS 的 VOIP