【问题标题】:iBeacons: cordova implementation (ios): what are the best practices for background detectioniBeacons:cordova 实现(ios):背景检测的最佳实践是什么
【发布时间】:2016-03-18 20:44:29
【问题描述】:

Apples 的 iBeacon 技术允许无论应用程序处于何种状态进行检测:前台、后台或已终止或系统重启。是否有这样做的最佳实践方法,以尽量减少应用商店提交拒绝?我已经安装了一个插件 (https://github.com/katzer/cordova-plugin-background-mode),它允许后台进程 - 它工作得很好*(下面的说明),但是有很多帖子说这可能会导致被苹果拒绝。

  • 我的意思是当应用程序被推到后台、被杀死甚至在手机重新启动后它仍然有效。很难确认,但我认为 iOS 会在一段时间后将其杀死。我得到的结果不一致...

我也明白,如果我的应用程序在不在前台时使用大量内存,它会通过 iOS 内存管理自动终止我的 bg 进程。

暂时假设我的应用不会消耗“太多”内存...

如果手机无论应用程序状态如何都无法访问检测,那么拥有 iBeacons 的全部价值似乎就变得微不足道了。我知道我需要向苹果说明为什么我的应用需要这个功能。但这似乎是一种修辞——我需要使用你(Apple)提供的技术的功能——如果你必须始终准备好手机才能获得 iBeacons,那么 iBeacons 的价值就会显着下降(除了第一个获得许可的应用程序启动之外) requestAlwaysAuthorization)

我是否在无谓地烦恼?我不想把这个开发一路完美,却发现我无法使用它。

【问题讨论】:

    标签: cordova app-store cordova-plugins ibeacon


    【解决方案1】:

    了解原生 iOS 代码(Swift 或 Objective C)可以利用 iOS CoreLocation 框架检测信标的能力,即使应用程序根本没有运行。 CoreLocation 通过记住应用程序正在监视哪些信标区域并在遇到信标时如果应用程序未运行则自动启动应用程序来做到这一点。 Apple 设计了这种机制并批准了它的使用,这也是后台信标检测应用程序通常进入 AppStore 的方式。

    这与 cordova-plugin-backgroun-mode 插件的工作方式非常不同。正如插件的自述文件所指出的,Apple 审阅者可能不会批准一个在后台保持自身持续活跃的应用程序。 您的担心是对的。

    除了将您的应用全部重写为原生应用之外,您最好的选择可能是使其成为一个混合应用。仅将本机代码用于后台信标检测,然后在启动或恢复后将 Cordova 用于前台 UI。

    【讨论】:

    • 谢谢!这就说得通了。请再一次放纵我这个场景。在每次启动时,应用程序将检索我们远程存储的合理 GPS 半径内所有信标的服务器数据(自定义消息传递等),并将其存储在本地 SQLLite DB 中。然后按照您的建议,我们将在应用程序中添加一些本机代码,以便始终感知信标。当该代码被触发时,它将立即打开应用程序,触发一些方法来获取 SQL 数据,从而通过本地通知显示信标消息。这听起来合理吗?
    • 我认为您不能“暂时打开应用程序”。在后台进行本机信标检测时,您可以运行本机代码约 5 秒,但无法启动任何 UI,因此我认为您不能在 Cordova 容器中运行 JS 代码。您必须在本地获取本地通知的 SQL 数据。
    • 我明白了......所以我认为我将能够在这个过程中从我的代码中执行任何东西的假设是不正确的。整个蠕虫——iBeacon 检测、SQL 检索和伴随的本地推送通知都必须在本机代码中发生。哎呀。对一个小项目感兴趣? :)
    • 不幸的是,我相信这是正确的。如果您最终确实需要该项目的帮助,我的个人资料页面上有联系信息。
    • 谢谢。我刚刚发了一封电子邮件。有时间或有兴趣请回复。干杯!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-12
    • 2016-11-17
    • 2011-06-07
    • 1970-01-01
    • 2017-12-24
    • 1970-01-01
    相关资源
    最近更新 更多