使用您的移动应用程序配置 Oracle Mobile Hub SDK

在编写任何代码之前,必须使用移动应用程序配置Oracle Mobile Hub SDK。

添加 SDK

在基本应用程序设置中,如果不包含框架,您会将 Android 客户机 SDK 添加到应用程序。

  1. 解压缩 Android 客户端 SDK zip 文件。

  2. 将 SDK jar 复制到应用程序项目中的 libs 文件夹。如果此文件夹不存在,请在层次中创建它与 srcbuild 文件夹位于同一级别。

  3. 在 Android Studio 中,依次选择文件新建新建模块,以启动向导以将 IDMMobileSDK.jar 导入到项目中。

  4. 单击导入 .JAR/.AAR 程序包,然后按照向导将 IDMMobileSDK.jar 导入到项目中。
  5. 在应用程序的源树中,创建名为 assets 的文件夹(级别与 javares 文件夹相同)。

  6. 在 SDK 绑定中,找到 oracle_mobile_cloud_config.xml 文件并将其复制到 assets 文件夹。

  7. 在应用程序的 build.gradle 文件中,确保以下是已注册的相关性,以便 SDK 库可供应用程序使用。

    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        compile 'com.squareup.okhttp3:okhttp:3.9.0'
        compile 'org.slf4j:slf4j-jdk14:1.7.13'
        //to enable the app to receive notifications, include the following:
        compile 'com.google.firebase:firebase-messaging:11.0.2'
    		compile 'com.facebook.android:facebook-android-sdk:4.25.+'
    }
  8. 如果应用程序设计为在分析市场活动中接收通知,请在 build.gradle 的非常底部添加以下行。

    apply plugin: 'com.google.gms.google-services'
  9. 打开 assets/oracle_mobile_cloud_config.xml 并填写应用程序将使用的移动后端的环境详细信息。

配置 SDK 属性

要在 Android 应用程序中使用客户机 SDK,您需要向应用程序添加 oracle_mobile_cloud_config.xml 配置文件并在Oracle Mobile Hub中填充后端的环境详细信息。也可以使用 SDK 类,这些信息为对Oracle Mobile Hub进行的 REST 调用构造 HTTP 标头。

可以在 assets 文件夹中将配置文件打包到与 javares 文件夹位于同一级别的应用程序主绑定中。例如,在示例 GettingStarted 应用程序中,它位于/GettingStarted/src/main/assets 中。

文件实际上分为以下几个部分:

  • mobileBackend 元素及其内容。

    如果要在应用程序中使用后端 , 则包含此部分。SDK 类使用您指定的环境和验证详细信息来访问后端和为 api 发出的 REST 调用构造 HTTP 标头。

  • 应用于配置的整体元素,例如 logLeveloAuthTokenEndpoint。这些元素通常会出现在文件顶部,但不必显示。

以下代码示例显示了 oracle_mobile_cloud_config.xml 文件的结构。

<config>

  <!--This value is required if you are using OAuth to authenticate against the mobile backend-->
  <oAuthTokenEndPoint>YOUR_OAUTH_TOKEN_END_POINT<oAuthTokenEndPoint>
  <!--Set to true if you want to get logging information-->
  <enableLogger>true</enableLogger>
  <logLevel>DEBUG</logLevel>
  <!--Whether to log HTTP call request and response bodies and headers-->
  <logHTTP>true</logHTTP>

  <!-- Include the mobileBackend element and its sub-elements if you are going 
       to be using a backend to access custom and platform APIs.-->
  <mobileBackend>
    <name>MBE_NAME</name>
    <baseUrl>BASE_URL</baseUrl>
    <enableAnalytics>true</enableAnalytics>
    <authentication>
      <!--possible values for type are [oauth, basic, facebook, tokenExchange ]-->
      <type>AUTH_TYPE</type>
      <oauth>
        <clientId>CLIENT_ID</clientId>
        <clientSecret>CLIENT_SECRET</clientSecret>
        <enableOffline>true</enableOffline>
      </oauth>
      <basic>
        <mobileBackendId>MOBILE_BACKEND_ID</mobileBackendID>
        <anonymousKey>ANONYMOUS_KEY</anonymousKey>
        <enableOffline></enableOffline>
      </basic>
      <facebook>
        <appId>FACEBOOK_APP_ID</appId>
        <scopes>public_profile,user_friends,email,user_location,user_birthday</scopes>
        <basic>
          <mobileBackendId>MOBILE_BACKEND_ID</mobileBackendID>
          <anonymousKey>ANONYMOUS_KEY</anonymousKey>
        </basic>
      </facebook>
      <tokenExchange>
        <! tokenExchange can contain an 'oauth' sub-element or a 'basic' sub-element.
        <oauth>
          <clientId>CLIENT_ID</clientId>
          <clientSecret>CLIENT_SECRET</clientSecret>
        </oauth>
        <basic>
          <mobileBackendId>MOBILE_BACKEND_ID</mobileBackendID>
          <anonymousKey>ANONYMOUS_KEY</anonymousKey>
        </basic>
      <tokenExchange>
    </authentication>
    <!-- additional properties go here -->
  </mobileBackend>

</config>

您需要为给定后端填写的值可在该移动后端的设置应用程序概要信息页上找到。

下面是有关文件元素的一些更多注释。

  • oAuthTokenEndPoint—应用程序从中获取其验证标记的 OAuth 服务器的 URL。必须为依赖于 OAuth 的所有应用程序提供此密钥才能进行验证。从后端的“设置 ”页获取此内容。

  • logLevel—确定在应用程序的控制台中显示 SDK 日志记录的数量。默认值为 ERROR。其他可能的值(提高详细程度)为 WARNINGINFODEBUG。还可以指定 NONE

  • enableLogger—设置为 true 时,日志记录会包括在应用程序中。

  • logHTTP—设置为 true 时,SDK 会在请求和响应中记录 HTTP 和 HTTPS 标头。

  • mobileBackend—包含后端的验证详细信息以及其他可选详细信息(如同步属性)的元素。

    从后端的“置”页中获取验证详细信息,例如 OAuth 和 HTTP 身份证明。

  • mobileBackend/baseUrl—通过后端调用的所有 api 的基础 URL。从后端的“设置 ”页获取此内容。

  • mobileBackend/authentication—包含以下子元素:

    • type 子元素,其中可能包含 oauthbasicfacebooktokenExchange 值。

    • 验证类型的一个或多个子元素,每个子元素都包含验证身份证明。

      也可以添加 offlineEnabled 关键字并将其值设置为 true

  • enableOffline—如果设置为 true,将允许脱机登录。这仅适用于基本登录类型和 OAuth 登录类型。为正常工作,您还需要将以下内容添加到应用程序的 AndroidManifest.xml 文件中:
    <receiver android:name="oracle.cloud.mobile.network.NetworkHelper"
      <intent-filter>
        <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
      </intent-filter>
    </receiver>

配置 Android 清单文件

访问网络和查找网络状态等操作的权限是通过应用程序清单文件 AndroidManifest.xml 中的权限设置控制的。这些权限是必需的:

  • permission.INTERNET—允许您的应用程序访问打开的网络套接字。

  • permission.ACCESS_NETWORK_STATE—允许您的应用程序访问有关网络的信息。

其他权限是可选的。例如,应用程序能够接收通知所需的许多权限。有关可用权限的运行,请参阅 Google 文档中的 Android 清单权限

AndroidManifest.xml 文件的顶部添加权限,如下例所示:

<?xml version="1.0" encoding="UTF-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="oracle.cloud.mobile.sample" >
  <uses-permission android:name="android.permission.INTERNET" />
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  <uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE"/>
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

  <application>
<provider
	android:name="com.facebook.FacebookContentProvider"
	android:authorities="com.facebook.app.FacebookContentProvider430660953811847"
	android:exported="true" />    
<receiver 
	android:name="oracle.cloud.mobile.network.NetworkHelper"
      <intent-filter>
        <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
      </intent-filter>
    </receiver>

    (.....)
  </application>
</manifest>

向应用程序添加客户机 SDK 可能要求您配置 AndroidManifest.xml 文件以添加新权限或活动。例如,如果添加通知单个 SDK 库,则可能还需要添加新的广播接收方。