Android SDK 統合ガイド

概要

MTVerify Android SDK は携帯電話番号認証 SDK であり、高速かつ安全なキャリアレベルの電話番号検証サービスを提供します。

主な機能

  • SDK 初期化:AppKey を使用して設定を自動取得し初期化します
  • カバレッジ確認:現在のネットワーク環境が認証サービスに対応しているか確認します
  • 番号認証:携帯電話番号認証を開始し、認証トークンを取得します

システム要件

  • Android 5.0(API 21)以上
  • ユーザー端末でモバイルネットワークが有効になっていること

統合ガイド

権限の設定

aar パッケージは以下の権限を要求します:

<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
              
              <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

            
このコードブロックはフローティングウィンドウ内に表示されます

キャリア設定

キャリアのインターフェースは HTTP 平文通信を使用する必要があるため、アプリの AndroidManifest.xml でネットワークセキュリティポリシーを設定する必要があります:

<application android:networkSecurityConfig="@xml/mtverify_network_security_config" ...> ... </application>
              
              <application
    android:networkSecurityConfig="@xml/mtverify_network_security_config"
    ...>
    ...
</application>

            
このコードブロックはフローティングウィンドウ内に表示されます

また、mtverify_network_security_config.xml ファイルをアプリの res/xml/ ディレクトリにコピーする必要があります。このファイルはダウンロードしたインストールパッケージ内にあります。

メソッド一覧

init

MTVerify SDK を初期化し、アプリキーと環境設定を行います。

メソッドシグネチャ

@JvmStatic fun init( context: Context, appkey: String, environment: IPEnvironment = IPEnvironment.PRODUCTION, callback: InitCallback? = null )
              
              @JvmStatic
fun init(
    context: Context, 
    appkey: String, 
    environment: IPEnvironment = IPEnvironment.PRODUCTION, 
    callback: InitCallback? = null
)

            
このコードブロックはフローティングウィンドウ内に表示されます

パラメータの説明

パラメータ 必須 説明
context Context はい Android のコンテキストオブジェクト
appkey String はい アプリキー。アプリを識別するために使用
environment IPEnvironment いいえ 環境タイプ。デフォルトは SANDBOX。選択肢: - IPEnvironment.SANDBOX:テスト/サンドボックス環境 - IPEnvironment.PRODUCTION:本番環境
callback InitCallback? いいえ 初期化コールバックインターフェース。初期化結果を受け取るために使用

戻り値

なし

コールバック結果

初期化結果は InitCallback.onComplete(result: InitResult) を通じて返されます:

data class InitResult( val code: Int, // ステータスコード。0 は成功、その他の数値は失敗を表す val message: String? // メッセージ(成功またはエラーメッセージ) )
              
              data class InitResult(
    val code: Int,        // ステータスコード。0 は成功、その他の数値は失敗を表す
    val message: String?  // メッセージ(成功またはエラーメッセージ)
)

            
このコードブロックはフローティングウィンドウ内に表示されます

使用例

MTVerifyApi.init( context = this, appkey = "your_app_key", environment = IPEnvironment.PRODUCTION, callback = object : InitCallback { override fun onComplete(result: InitResult) { if (result.code == 0) { // 初期化成功 Log.d("MTVerify", "初期化成功: ${result.message}") } else { // 初期化失敗 Log.e("MTVerify", "初期化失敗: ${result.message}") } } } )
              
              MTVerifyApi.init(
    context = this,
    appkey = "your_app_key",
    environment = IPEnvironment.PRODUCTION,
    callback = object : InitCallback {
        override fun onComplete(result: InitResult) {
            if (result.code == 0) {
                // 初期化成功
                Log.d("MTVerify", "初期化成功: ${result.message}")
            } else {
                // 初期化失敗
                Log.e("MTVerify", "初期化失敗: ${result.message}")
            }
        }
    }
)

            
このコードブロックはフローティングウィンドウ内に表示されます

注意事項

  • 他の機能を使用する前に、必ず init() メソッドを呼び出して SDK を初期化する必要があります
  • 初期化プロセスでは HTTP リクエストを通じて clientIdredirectUrl を取得するため、ネットワーク接続が必要です

setLogEnable

ログのオン/オフを設定し、SDK のログ出力を制御します。

メソッドシグネチャ

@JvmStatic fun setLogEnable(enable: Boolean)
              
              @JvmStatic
fun setLogEnable(enable: Boolean)

            
このコードブロックはフローティングウィンドウ内に表示されます

パラメータの説明

パラメータ 必須 説明
enable Boolean はい true はログを有効化、false はすべてのログ出力を無効化

使用例

// ログを有効化 MTVerifyApi.setLogEnable(true) // ログを無効化 MTVerifyApi.setLogEnable(false)
              
              // ログを有効化
MTVerifyApi.setLogEnable(true)

// ログを無効化
MTVerifyApi.setLogEnable(false)

            
このコードブロックはフローティングウィンドウ内に表示されます

checkCoverage

指定した携帯電話番号が IPification 検証サービスに対応しているか確認します。

メソッドシグネチャ

@JvmStatic fun checkCoverage( context: Context, phoneNumber: String, callback: CoverageCallback? = null )
              
              @JvmStatic
fun checkCoverage(
    context: Context,
    phoneNumber: String,
    callback: CoverageCallback? = null
)

            
このコードブロックはフローティングウィンドウ内に表示されます

パラメータの説明

パラメータ 必須 説明
context Context はい Android のコンテキストオブジェクト
phoneNumber String はい 国コード + ユーザーの携帯電話番号
callback CoverageCallback? いいえ カバレッジ確認コールバックインターフェース

戻り値

なし

コールバック結果

確認結果は CoverageCallback.onComplete(result: CoverageResult) を通じて返されます:

data class CoverageResult( val code: Int, // ステータスコード。0 は成功、その他の数値は失敗を表す val isAvailable: Boolean, // 利用可能かどうか(対応キャリア) val operatorCode: String?, // キャリアコード val message: String? // メッセージ(成功またはエラーメッセージ) )
              
              data class CoverageResult(
    val code: Int,           // ステータスコード。0 は成功、その他の数値は失敗を表す
    val isAvailable: Boolean, // 利用可能かどうか(対応キャリア)
    val operatorCode: String?, // キャリアコード
    val message: String?      // メッセージ(成功またはエラーメッセージ)
)

            
このコードブロックはフローティングウィンドウ内に表示されます

使用例

MTVerifyApi.checkCoverage( context = this, phoneNumber = "6281234567890", callback = object : CoverageCallback { override fun onComplete(result: CoverageResult) { if (result.code == 0) { if (result.isAvailable) { // サービスに対応 Log.d("MTVerify", "キャリア対応: ${result.operatorCode}") } else { // サービス非対応 Log.d("MTVerify", "キャリア非対応") } } else { // 確認失敗 Log.e("MTVerify", "確認失敗: ${result.message}") } } } )
              
              MTVerifyApi.checkCoverage(
    context = this,
    phoneNumber = "6281234567890",
    callback = object : CoverageCallback {
        override fun onComplete(result: CoverageResult) {
            if (result.code == 0) {
                if (result.isAvailable) {
                    // サービスに対応
                    Log.d("MTVerify", "キャリア対応: ${result.operatorCode}")
                } else {
                    // サービス非対応
                    Log.d("MTVerify", "キャリア非対応")
                }
            } else {
                // 確認失敗
                Log.e("MTVerify", "確認失敗: ${result.message}")
            }
        }
    }
)

            
このコードブロックはフローティングウィンドウ内に表示されます

startAuthentication

携帯電話番号認証フローを開始します。

メソッドシグネチャ

@JvmStatic fun startAuthentication( activity: Activity, countryCode: String, phoneNumber: String, callback: AuthenticationCallback? = null )
              
              @JvmStatic
fun startAuthentication(
    activity: Activity,
    countryCode: String,
    phoneNumber: String,
    callback: AuthenticationCallback? = null
)

            
このコードブロックはフローティングウィンドウ内に表示されます

パラメータの説明

パラメータ 必須 説明
activity Activity はい Android の Activity オブジェクト。認証画面の表示に使用
countryCode String はい 国コード
phoneNumber String はい ユーザーの携帯電話番号(国コードを含まない)
callback AuthenticationCallback? いいえ 認証コールバックインターフェース

戻り値

なし

コールバック結果

認証結果は AuthenticationCallback.onComplete(result: AuthenticationResult) を通じて返されます:

data class AuthenticationResult( val code: Int, // ステータスコード。0 は成功、-1 は失敗、-2 はユーザーキャンセルを表す val token: String?, // 暗号化された認証データ(code を含む JSON 文字列。AES で暗号化) val message: String? // メッセージ(成功またはエラーメッセージ) )
              
              data class AuthenticationResult(
    val code: Int,        // ステータスコード。0 は成功、-1 は失敗、-2 はユーザーキャンセルを表す
    val token: String?,   // 暗号化された認証データ(code を含む JSON 文字列。AES で暗号化)
    val message: String?  // メッセージ(成功またはエラーメッセージ)
)

            
このコードブロックはフローティングウィンドウ内に表示されます

注意token は暗号化された JSON 文字列で、形式は以下のとおりです:

{ "version": "1", "content": { "code": "認証コード", "state": "ステートパラメータ", "appkey": "アプリキー" } }
              
              {
  "version": "1",
  "content": {
    "code": "認証コード",
    "state": "ステートパラメータ",
    "appkey": "アプリキー"
  }
}

            
このコードブロックはフローティングウィンドウ内に表示されます

使用例

MTVerifyApi.startAuthentication( activity = this, countryCode = "62", phoneNumber = "81234567890", callback = object : AuthenticationCallback { override fun onComplete(result: AuthenticationResult) { when (result.code) { 0 -> { // 認証成功 val token = result.token // token は結果の置換に使用 Log.d("MTVerify", "認証成功: $token") } -1 -> { // 認証失敗 Log.e("MTVerify", "認証失敗: ${result.message}") } -2 -> { // ユーザーキャンセル Log.d("MTVerify", "ユーザーが認証をキャンセルしました") } } } } )
              
              MTVerifyApi.startAuthentication(
    activity = this,
    countryCode = "62",
    phoneNumber = "81234567890",
    callback = object : AuthenticationCallback {
        override fun onComplete(result: AuthenticationResult) {
            when (result.code) {
                0 -> {
                    // 認証成功
                    val token = result.token
                    // token は結果の置換に使用
                    Log.d("MTVerify", "認証成功: $token")
                }
                -1 -> {
                    // 認証失敗
                    Log.e("MTVerify", "認証失敗: ${result.message}")
                }
                -2 -> {
                    // ユーザーキャンセル
                    Log.d("MTVerify", "ユーザーが認証をキャンセルしました")
                }
            }
        }
    }
)

            
このコードブロックはフローティングウィンドウ内に表示されます

データモデル

IPEnvironment

環境タイプの列挙:

enum class IPEnvironment { SANDBOX, // テスト/サンドボックス環境 PRODUCTION // 本番環境 }
              
              enum class IPEnvironment {
    SANDBOX,      // テスト/サンドボックス環境
    PRODUCTION    // 本番環境
}

            
このコードブロックはフローティングウィンドウ内に表示されます

InitResult

初期化結果:

data class InitResult( val code: Int, // ステータスコード。0 は成功 val message: String? // メッセージ )
              
              data class InitResult(
    val code: Int,        // ステータスコード。0 は成功
    val message: String?  // メッセージ
)

            
このコードブロックはフローティングウィンドウ内に表示されます

CoverageResult

カバレッジ確認結果:

data class CoverageResult( val code: Int, // ステータスコード。0 は成功 val isAvailable: Boolean, // 利用可能かどうか val operatorCode: String?, // キャリアコード val message: String? // メッセージ )
              
              data class CoverageResult(
    val code: Int,           // ステータスコード。0 は成功
    val isAvailable: Boolean, // 利用可能かどうか
    val operatorCode: String?, // キャリアコード
    val message: String?      // メッセージ
)

            
このコードブロックはフローティングウィンドウ内に表示されます

AuthenticationResult

認証結果:

data class AuthenticationResult( val code: Int, // ステータスコード。0 は成功、-1 は失敗、-2 はユーザーキャンセル val token: String?, // 暗号化された認証トークン val message: String? // メッセージ )
              
              data class AuthenticationResult(
    val code: Int,        // ステータスコード。0 は成功、-1 は失敗、-2 はユーザーキャンセル
    val token: String?,   // 暗号化された認証トークン
    val message: String?  // メッセージ
)

            
このコードブロックはフローティングウィンドウ内に表示されます

コールバックインターフェース

InitCallback

初期化コールバックインターフェース:

interface InitCallback { fun onComplete(result: InitResult) }
              
              interface InitCallback {
    fun onComplete(result: InitResult)
}

            
このコードブロックはフローティングウィンドウ内に表示されます

CoverageCallback

カバレッジ確認コールバックインターフェース:

interface CoverageCallback { fun onComplete(result: CoverageResult) }
              
              interface CoverageCallback {
    fun onComplete(result: CoverageResult)
}

            
このコードブロックはフローティングウィンドウ内に表示されます

AuthenticationCallback

認証コールバックインターフェース:

interface AuthenticationCallback { fun onComplete(result: AuthenticationResult) }
              
              interface AuthenticationCallback {
    fun onComplete(result: AuthenticationResult)
}

            
このコードブロックはフローティングウィンドウ内に表示されます

完全な例

class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // 1. ログを有効化(任意) MTVerifyApi.setLogEnable(true) // 2. SDK を初期化 MTVerifyApi.init( context = this, appkey = "your_app_key", environment = IPEnvironment.SANDBOX, callback = object : InitCallback { override fun onComplete(result: InitResult) { if (result.code == 0) { // 初期化成功。他の機能の使用を開始できる checkCoverage() } } } ) } private fun checkCoverage() { // 3. カバレッジを確認 MTVerifyApi.checkCoverage( context = this, phoneNumber = "6281234567890", callback = object : CoverageCallback { override fun onComplete(result: CoverageResult) { if (result.isAvailable) { // 4. 対応していれば認証を実行 startAuthentication() } } } ) } private fun startAuthentication() { // 5. 認証を実行 MTVerifyApi.startAuthentication( activity = this, countryCode = "62", phoneNumber = "81234567890", callback = object : AuthenticationCallback { override fun onComplete(result: AuthenticationResult) { if (result.code == 0) { // 認証成功。token を処理 handleToken(result.token) } } } ) } private fun handleToken(token: String?) { // API を呼び出して置換後の token を処理 } }
              
              class MainActivity : AppCompatActivity() {
    
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        
        // 1. ログを有効化(任意)
        MTVerifyApi.setLogEnable(true)
        
        // 2. SDK を初期化
        MTVerifyApi.init(
            context = this,
            appkey = "your_app_key",
            environment = IPEnvironment.SANDBOX,
            callback = object : InitCallback {
                override fun onComplete(result: InitResult) {
                    if (result.code == 0) {
                        // 初期化成功。他の機能の使用を開始できる
                        checkCoverage()
                    }
                }
            }
        )
    }
    
    private fun checkCoverage() {
        // 3. カバレッジを確認
        MTVerifyApi.checkCoverage(
            context = this,
            phoneNumber = "6281234567890",
            callback = object : CoverageCallback {
                override fun onComplete(result: CoverageResult) {
                    if (result.isAvailable) {
                        // 4. 対応していれば認証を実行
                        startAuthentication()
                    }
                }
            }
        )
    }
    
    private fun startAuthentication() {
        // 5. 認証を実行
        MTVerifyApi.startAuthentication(
            activity = this,
            countryCode = "62",
            phoneNumber = "81234567890",
            callback = object : AuthenticationCallback {
                override fun onComplete(result: AuthenticationResult) {
                    if (result.code == 0) {
                        // 認証成功。token を処理
                        handleToken(result.token)
                    }
                }
            }
        )
    }
    
    private fun handleToken(token: String?) {
        // API を呼び出して置換後の token を処理
        
    }
}

            
このコードブロックはフローティングウィンドウ内に表示されます

注意事項

  1. 初期化の順序:他の機能を使用する前に、必ず init() メソッドを呼び出して SDK を初期化する必要があります。
  2. スレッドセーフ:すべての API メソッドはメインスレッドで呼び出すことができ、コールバックもメインスレッドで実行されます。
  3. 権限要件:アプリが必要なネットワーク権限を要求していることを確認してください。
  4. トークンの復号:認証成功後に返される token は暗号化されているため、対応する復号方法で処理する必要があります。
  5. ログ制御:パフォーマンスとセキュリティを向上させるため、本番環境ではログ出力を無効にすることを推奨します。

バージョン情報

  • SDK バージョン:1.0.1
Icon Solid Transparent White Qiyu
お問い合わせ