【问题标题】:How to use app functionality of other app in our app如何在我们的应用程序中使用其他应用程序的应用程序功能
【发布时间】:2017-10-25 16:42:13
【问题描述】:

在我问我的问题之前,我将首先解释一些背景信息。

我们公司正在开发适用于 iOS 和 Android 的应用程序。我们的客户可以决定使用我们的应用程序(品牌)或将我们的功能集成到他们的应用程序中。因为我们的应用程序有一些复杂的算法和通信协议。出于这个原因,我们想为想要集成而不是使用我们的应用程序的客户提供一种 SDK。

当我们使用 BLE、NFC 和 GPS 时,我们决定让我们自己的应用程序原生化。问题是我们的许多客户已经拥有一个应用程序,在大多数情况下它将是一个混合应用程序。因此,“仅仅”为所有平台制作 SDK 几乎是不可能的,不仅要构建,还要维护。

要记住的另一件重要事情是,我们希望避免客户需要了解我们完整的通信流程,甚至更强大的是,我们不会将我们的算法或通信协议提供给其他人,因为这正是我们的应用/产品独一无二的原因此刻。

所以现在是具体的问题。是否可以将我们的功能作为一种 API 提供,以便其他应用程序可以像 API 一样使用我们应用程序的功能?这意味着我们的应用程序也需要安装在最终用户的智能手机上,但他们不需要单独使用它。这个想法是我们客户的应用程序像 API 一样与我们的应用程序通信,我们的应用程序与我们的硬件进行通信并将结果返回给我们客户的应用程序。请注意,应用程序的用户不应在前台看到我们的应用程序。 (我的想法来自一些需要“玩游戏”的游戏)

我知道有一种方法可以在应用之间交换数据(应用间通信),但这也可以像 API 一样使用吗?

【问题讨论】:

  • 你的意思是像内容提供者developer.android.com/guide/topics/providers/…
  • 如果我理解得很好,这是用于在应用程序之间交换数据。这只是我们需要的解决方案的一部分。我们正在寻找一种方式,让其他应用程序可以使用我们应用程序的完整功能(如果可能)。例如。他们调用我们应用程序的 methodOne(params) 函数,因此我们的应用程序执行“复杂的事情”。方法执行后,如果方法执行成功,我们的应用程序应该给客户的应用程序一个响应。这避免了我们的客户需要了解我们的技术/方法,并且我们不需要为所有移动平台提供 SDK/代码。无论如何,谢谢。
  • 所以您是说如果其他应用需要服务,比如说,使用 BLE 宣传数据,他们想要安装您的应用并使用您的功能?
  • 您必须了解 react native,它是一个半混合平台,允许您将在 node.js 中创建的模块集成到您的本机应用程序中。所以让你的库执行你想要混淆的整个事情,并在你的 ios 和 android 应用程序中使用该模块,之后你必须提供与你的应用程序与其他人通信的方式,比如在 android 的情况下内容提供者或粘性服务的粘合剂

标签: android ios


【解决方案1】:

显然,此答案仅与 Android 有关。 (您可能想针对 IOS 提出单独的问题)

在最基本的情况下,内容提供者用于交换数据。但是,没有什么可以阻止在提供程序主机中运行代码以提取该数据。

例如,您可以在您的应用程序中托管一个内容提供程序,当使用特定参数调用它时,它会执行一些复杂的功能并返回一个简单的数据表 (MatrixCursor),甚至只是其中的一个简单的 True/False 响应光标。

您可以通过创建一个 Android 库来进一步简化它的使用,您的客户可以将其导入到他们自己的项目中,以使其更友好,并且通过向库中添加方法和函数,然后将他们的调用委托给内容提供者来使其更友好。甚至是主应用程序中的广播接收器,然后它可以用自己的广播进行响应。

您甚至可以使用不可见的活动。即在您的应用中调用没有 UI 的活动。

更可取的是将可调用代码创建为客户可以使用的自包含库,这将完全不需要与单独的应用程序进行通信。

【讨论】:

    【解决方案2】:

    据我了解,您需要其他应用程序来调用特定功能,例如调用 Web API 或打开活动并编写某些内容或打开弹出对话框并执行某些操作。

    在 android 中:是的,BroadcastReciever 是可能的。你只需要听特定的action 并执行功能。

    所以任务是,您只需提供action

    【讨论】:

    • 是的,我需要从其他应用程序(如 Web API)调用我们应用程序的特定功能。在最佳情况下,最终用户不会看到我们的应用程序被使用。谢谢你的回答,我会检查广播接收器。
    • @RoDo 如果你想分享一些数据,请使用ContentProvider,如果你想做一些处理,唯一的方法是BroadcastReciever。如果您想了解更多信息,请随时询问我会编辑我的答案
    猜你喜欢
    • 2020-11-02
    • 1970-01-01
    • 2020-03-10
    • 2013-06-23
    • 1970-01-01
    • 2011-10-04
    • 2012-12-01
    • 2013-05-03
    • 1970-01-01
    相关资源
    最近更新 更多