모바일 애플리케이션을 사용하여 Oracle Mobile Hub SDK 구성

코드를 작성하려면 먼저 모바일 애플리케이션을 사용하여 Oracle Mobile Hub SDK를 구성해야 합니다.

SDK 추가

기본 앱 설정에서 내부 프레임워크 없이 Android 클라이언트 SDK를 앱에 추가합니다.

  1. Android 클라이언트 SDK zip 파일의 압축을 해제합니다.

  2. 앱 프로젝트의 libs 폴더에 SDK jar를 복사합니다. 이 폴더가 없으면 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 헤더를 구성합니다.

javares 폴더와 동일한 레벨에서 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 에 의존하는 모든 응용 프로그램에 대해 이 키를 제공해야 합니다. 백엔드의 설정 페이지에서 항목을 가져옵니다.

  • logLevel — 응용 프로그램 콘솔에 SDK 로깅이 표시되는 양을 결정합니다. 기본값은 ERROR 입니다. 기타 가능한 값 (세부정보 레벨 증가) 은 WARNING, INFODEBUG 입니다. NONE 을 지정할 수도 있습니다.

  • enableLoggertrue 로 설정되면 로깅이 애플리케이션에 포함됩니다.

  • logHTTPtrue 로 설정된 경우 SDK는 요청 및 응답에 HTTP 및 HTTPS 헤더를 기록합니다.

  • mobileBackend — 백엔드에 대한 인증 세부정보 및 기타 선택적 세부정보 (예: 동기화 속성) 를 포함하는 요소입니다.

    백엔드의 설정 페이지에서 OAuth 및 HTTP 인증서와 같은 인증 세부정보를 가져옵니다.

  • mobileBackend/baseUrl — 백엔드를 통해 호출하는 모든 api에 대한 기본 URL입니다. 백엔드의 설정 페이지에서 항목을 가져옵니다.

  • mobileBackend/authentication — 다음과 같은 하위 요소를 포함합니다.

    • type 하위 요소로, oauth, basic, facebooktokenExchange 의 가능한 값입니다.

    • 각각 인증서를 포함하는 인증 유형에 대한 하나 이상의 하위 요소입니다.

      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 Manifest 파일 구성

네트워크 액세스, 네트워크 상태 찾기 등의 작업에 대한 권한은 응용 프로그램의 매니페스트 파일 AndroidManifest.xml 의 권한 설정을 통해 제어됩니다. 다음 권한이 필요합니다.

  • permission.INTERNET — 응용 프로그램에서 열린 네트워크 소켓에 액세스할 수 있습니다.

  • permission.ACCESS_NETWORK_STATE — 응용 프로그램에서 네트워크 정보에 액세스할 수 있습니다.

다른 권한은 선택 사항입니다. 예를 들어, 앱에서 통지를 수신할 수 있는 많은 권한이 있습니다. 사용 가능한 권한에 대한 런타임은 Google 설명서의 Android Manifest 권한 을 참조하십시오.

다음 예와 같이 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 통지 라이브러리를 추가하는 경우 새 브로드캐스트 수신자를 추가해야 할 수도 있습니다.