モバイル・アプリケーションを使用したOracle Mobile Hub SDKの構成

コードを記述する前に、モバイル・アプリケーションを使用してOracle Mobile Hub SDKを構成する必要があります。

SDKの追加

基本的なアプリケーション設定では、フレームワークを介さずに、AndroidクライアントSDKをアプリケーションに追加します。

  1. AndroidクライアントSDK zipファイルを解凍します。

  2. SDK jarを、アプリケーションのプロジェクトのlibsフォルダにコピーします。このフォルダが存在しない場合は、srcおよびbuildフォルダと同じ階層レベルでフォルダを作成します。

  3. Android Studioで、「ファイル」、「新規」、「新規モジュール」の順に選択し、ウィザードを起動してIDMMobileSDK.jarをプロジェクトにインポートします。

  4. 「.JAR /.AARパッケージのインポート」をクリックし、ウィザードに従ってIDMMobileSDK.jarをプロジェクトにインポートします。
  5. アプリケーションのソース・ツリーで、assetsという名前のフォルダを(javaおよびresフォルダと同じレベルで)作成します。

  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ヘッダーを構築します。

javaフォルダとresフォルダと同じレベルで、アプリケーションのメイン・バンドルの構成ファイルをassetsフォルダにパッケージ化します。たとえば、サンプルの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に依存して認証するすべてのアプリケーションに指定する必要があります。これはバックエンドの「Settings」ページから取得します。

  • logLevel—アプリケーションのコンソールに表示されるSDKロギングの量を決定します。デフォルト値はERRORです。その他の使用可能な値(詳細レベルの向上)は、WARNINGINFOおよびDEBUGです。NONEを指定することもできます。

  • enableLoggertrueに設定すると、アプリケーションにロギングが含まれます。

  • logHTTPtrueに設定すると、SDKはリクエストとレスポンスでHTTPおよびHTTPSヘッダーを記録します。

  • mobileBackend—バックエンドの認証の詳細と、同期プロパティなどその他のオプションの詳細を含む要素。

    OAuthおよびHTTP資格証明などの認証の詳細をバックエンドの「設定」ページから取得します。

  • mobileBackend/baseUrl—バックエンドを介してコールするすべてのapiのベースURL。これはバックエンドの「Settings」ページから取得します。

  • mobileBackend/authentication—次のサブ要素が含まれます。

    • typeサブ要素。可能な値はoauthbasicfacebookおよびtokenExchangeです。

    • 認証タイプの1つ以上のサブ要素(それぞれ認証資格証明を含む)。

      offlineEnabledキーを追加し、その値をtrueに設定することもできます。

  • enableOfflinetrueに設定すると、オフライン・ログインが許可されます。これは、「基本」および「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ライブラリを追加する場合は、新しいブロードキャスト受信者の追加も必要になることがあります。