Android SDKバージョン4および5をSDKバージョン6に移行ガイド

SDKの統合

6.0 以降、SDK は Android AAR maven パッケージとして Maven Central から入手可能です。SDK 6をインストールする際、以前のバージョンにあった@aarというサフィックスを省略することができます。

app.moneytree.link:core 6.xから、link-kitなどの兄弟モジュールが独立してバージョン管理されるようになりました(以前はit)。SDK 6.xからすべてのパッケージを含めると、次のようになります。

implementation("app.moneytree.link:core:6.2.1")
implementation("app.moneytree.link:link-kit:6.2.1")

⚠️最新版はリリースページをご参照ください。

SDKの要件

Link SDK 6 以上は、Android 6 以上が必要です。そのため、minSdkを23以上にアップデートする必要があります。また、6.2.0から、ライブラリは androidx.browser:browser:1.4+androidx.core:core-ktx:1.7+ に依存しているので、 compileSdk を31以上に設定する必要があります。

android {
  compileSdk = 31 // Android SDK 6.2.0 からは、31以上に設定する必要があります。
  
  defaultConfig {
    targetSdk 31 // 推奨ですが、targetSdk >= minSdkであることが必要です。
    minSdk 23
  }
}

AndroidX

SDK 6では、AndroidXも必要になりました。

Googleの移行ガイドに従ってAndroidXへの移行をしてください。

AndroidXに対応していない依存関係がある場合は、rootのgradle.propertiesで以下のフラグを有効にしてください。

android.useAndroidX=true
# The Android plugin uses the appropriate AndroidX library instead of a Support Library.
android.enableJetifier=true

com.android.supportのパッケージを、AndroidXにアップグレードする必要があります。

マニフェストの変更

SchemeHandlerActivityの削除

SDK v4.xでは、アプリケーションが情報を適切に処理するために、マニフェストにSchemeHandlerActivityを含めることが必要でしたが、現在は、Moneytree LINK SDKによって処理されます。SDK v4.xからアップグレードする場合は、AndroidManifest.xmlに以下のような宣言がないかを確認し、削除してください。さもないと、このクラスがない旨の警告が表示されます。

- <activity android:name="com.getmoneytree.auth.SchemeHandlerActivity">
-     <intent-filter>
-         <action android:name="android.intent.action.VIEW"/>
-         <category android:name="android.intent.category.DEFAULT"/>
-         <category android:name="android.intent.category.BROWSABLE"/>
-         <!-- FIXME: Replace with your value -->
-         <data android:scheme="mtlinkxxxxx"/>
-     </intent-filter>
- </activity>

SDK v6.0, v6.1 および TargetSDK 31 に関する最新情報。

Google は SDK 31 をターゲットとするアプリケーションが AndroidManifest 上で activities を exported として宣言することを要求しています。targetSDK = 31で、バージョン 6.1, 6.0 およびそれ以下の SDK を使用するアプリケーションは、コンパイルエラーを回避するためにAndroidManifest` に以下のエントリを追加する必要があります。

   <activity
      android:name="com.getmoneytree.auth.SchemeHandlerActivity"
      android:exported="true" />

SDK v6.2 からは、上記のマニフェスト項目は不要になりました。

📘

パスワードレスサインアップとログイン

v6で追加されたパスワードレスサインアップとログインの機能を使用する場合、アクティビティの1つにインテント・フィルタを追加する必要があります。パスワードレスサインアップとログインに関するドキュメントを参照してください。

MoneytreeLink

MoneytreeLinkは、5.xと6.0の両方のリリースでは多くの要素が変更されています。MoneytreeLinkは、プロセスデスにも耐えられるようにするために、イベントがアプリに返される方法が変更されました。

ほとんどのコールバックは、OnLinkResultリスナーを介してイベントとして返されるようになりました。イベントを登録できる場所は2つあります。

LinkResult

Authorized

  • PKCE の場合は、ClientAccessToken が設定されます。
  • CodeGrant認証の場合、tokenプロパティはNULLになります。

Event

  • Vaultのクローズなど、SDKで重要なイベントが発生した際に通知するイベントプロパティが含まれています。

Error

  • SDK内部で発生したエラー、またはMoneytreeやサードパーティサーバーから返されたエラーは、moneytreeLinkExceptionプロパティが含まれています。

Init

MoneytreeLink.initは、SDKが発行するすべてのLinkResultに渡されるコールバックを受け取れるようになりました。

  MoneytreeLink.init(this, configuration, (result) -> {
    // if (result instanceof LinkResult.[sub-type-here]) {
    //
    // }
  });

addOnLinkResult

addOnLinkResult(...)は、SDKのリザルトイベントに対するリスナーを登録するために使用されます。ActivityFragmentonCreateにイベントリスナーを登録することをお勧めします。SDKはLifecycleOwnerを使って自動的に登録解除のステップを実行するので、リスナーの登録を解除する必要はありません。

MoneytreeLinkExtensions

MoneytreeLinkExtensions は、あらかじめ設定されたLinkResultListenerラッパーのセットです。これらのユーティリティ関数は、addOnLinkResultとして、ActivityFragmentonCreate関数で使用してください。

onLoggedOut - SDKがログアウトフローを終了したときに呼び出されます。
onAuthorized - PKCE を認証フローとして使用している場合、SDK が新規または更新された ClientAccessToken を取得すると呼び出されます。Code Grantの場合は、SDKがユーザーとサーバーのリンクを完了し、ユーザーが接続されたときに呼び出されます(この場合、返されるトークンはNULLになります)。
onError - エラーが発生したときに呼び出されます。
onEvent - イベントが発生したときに呼び出されます。

MoneytreeLinkExtensionsは、JavaをサポートしたKotlin初のユーティリティクラスです。onAuthorizedの使用例は、KotlinとJavaで次のようになります。

linkClient.onAuthorized(this) { token ->
  // do something with token
}
MoneytreeLinkExtensions.onAuthorized(linkClient, activity, (token) -> {
  // do something with token
});

client()

MoneytreeLink.client()MoneytreeLink.getInstance()に置き換えたものです。

getToken

getTokenAuthorization.OnCompletionListenerの代わりにアクティビティを受け取るようになりました。

MoneytreeLink.getInstance().getToken(
-    new Authorization.OnCompletionListener() { }
+    activity
);

getTokenInfo

getTokenInfoは6.0で追加され、トークンに関するメタデータ、特にscopesresourceServerのみを含んでいます。

MoneytreeLink.getInstance().getTokenInfo(new OnTokenInfoCallback() {
  @Override
  public void onSuccess(TokenInfoResponse tokenInfoResponse) {

  }

  @Override
  public void onError(LinkError linkError) {

  }
})

🚧

この機能は、認証タイプが PKCE の場合のみサポートされます。

openVaultFrom

openVaultFromopenVaultに名称変更されました。

- MoneytreeLink.getInstance().openVaultFrom()
+ MoneytreeLink.getInstance().openVault()

openVaultは、Authorization.OnCompletionListenerリスナーを受け入れないようになりました。Vault の終了やエラーなどのイベントは、OnLinkResult を介して発行されます。

openVault では、特定の Vault ページへのディープリンクが可能になりました。 VaultOpenServicesOptions はオプションの引数で、ページへのディープリンクに必要なデータが含まれています。詳細については、「Vault を開く」を参照してください。

MoneytreeAuthOptions

MoneytreeAuthOptionsLinkAuthOptionsに置き換わりました。

LinkAuthOptionsは、2つのサブタイプに分割されます。

LinkAuthOptions.Authorize - オプション引数としてユーザのメールアドレスと共にLinkAuthOptions.Authorize を構築するとき、MoneytreeLink#authorize によっての認証が要求されます

LinkAuthOptions.Onboarding - オンボーディングは、ユーザのパスワードレスアカウントを作成するためにメールアドレスを必要とするので、MoneytreeLink#onboardによってオンボーディングオプションが要求されます。

openSettingsFrom

openSettingsFromopenSettingsに名称変更されました。

openSettings は、ユーザがログインしていない場合、オプションで電子メールを受け取るようになりました。ユーザーがログインすると、SDKはopenSettingsのフローを再開します。

registerDeviceTokenFrom

registerDeviceTokenFrom

  • registerFcmToken に改名されました。
  • Activityが不要になりました
  • 新しいオプションのリスナータイプ com.getmoneytree.listener.Action を取得します。

unregisterDeviceTokenFrom

unregisterDeviceTokenFrom

  • unregisterFcmToken に改名されました。
  • Activityが不要になりました
  • 新しいオプションのリスナータイプ com.getmoneytree.listener.Action を取得します。

setLogoutHandler

setLogoutHandler は削除されました。ログアウトイベントを登録するにはOnLinkResultを使用してください。

ログアウトイベントを処理するためには、コールバックを登録します。

final MoneytreeLink linkClient = MoneytreeLink.getInstance();
MoneytreeLinkExtensions.onLoggedOut(MoneytreeLink, this, () -> {
    // Logout success
});
// OR
linkClient.addOnLinkResult(this, result -> {
    if (result instanceof LinkResult.Event && ((LinkResult.Event) result).getEvent() == LinkEvent.LoggedOut) {
        // Logout success
    }
});

また、initを呼び出す際にログアウトイベントのリスナを設定することもできます。

MoneytreeLink.init(this, configuration, result -> {
  if (result instanceof LinkResult.Event && ((LinkResult.Event) result).getEvent() == LinkEvent.LoggedOut) {
      // Logout success
  }
});

logoutFrom

logoutFromlogoutに名称変更されました。

オプション:一生通帳からLINK Kitへのアップグレード

Moneytree LINKのPFMプロダクト「一生通帳」をご利用の方は、V6にて最新のPFMプロダクト「LINK Kit」にアップグレードしてください。

一生通帳をご利用でない方は、この手順をスキップしてください。

SDK 4またはSDK 5の「一生通帳」からSDK 6の「LINK Kit」にアップグレードする場合、ゲストは「LINK Kit」が必要とする拡張許可スコープを再認可(同意画面)する必要があることに注意してください。再認証は必要ありません。

逆に、「スタンドアローン一生通帳」や「LINK Kit Express」の非SDK統合からSDK統合にアップグレードする場合、ゲストは再認可・再認証が必要となります。