すべてのプロダクト
Search
ドキュメントセンター

ID Verification:Flutter 用 ID Verification SDK の統合

最終更新日:Jan 15, 2025

Flutter 用 ID Verification SDK を使用すると、電子的な顧客確認 (eKYC) 機能を Flutter アプリケーションに統合できます。このトピックでは、Flutter 用 ID Verification SDK をアプリケーションと統合する方法について説明し、例を示します。

使用上の注意

  • Flutter 用 ID Verification SDK では、シミュレーターはサポートされていません。開発とデバッグには、物理デバイスを使用してください。

  • iOS 9.0 以降、または Android 5.0 以降がサポートされています。

依存関係の構成

  1. Flutter 用 ID Verification SDK をダウンロードし、パッケージを解凍します。

  2. 解凍したパッケージを格納するディレクトリをプロジェクトにコピーします。

    image.png

  3. プロジェクトの pubspec.yaml ファイルを変更し、aliyun_face_plugin 依存関係をファイルの dev_dependencies フィールドに追加します。

    aliyun_face_plugin:
        path: aliyun_face_plugin

    image.png

Android オペレーティングシステムの環境を構成する

依存関係を追加する

プロジェクトで、[android] > [build.gradle] を選択します。 build.gradle ファイルで、flatDir 構成を allprojects フィールドに追加します。

flatDir {
    dirs project(':aliyun_face_plugin').file('libs')
}

image.png

ProGuard の難読化ルールを構成する

リリースシナリオで ProGuard 難読化ツールが構成されている場合は、[android] > [app] を選択し、次のコードを [proguard-rules.pro] ファイルに追加します。

-verbose
-keep class com.aliyun.identity.platform.api.** {*;}
-keep class com.aliyun.identity.IdentityUtils {*;}
-keep class com.aliyun.identity.ocr.IdentityOcrApi {*;}
-keep class com.aliyun.identity.platform.model.** {*;}
-keep class com.aliyun.identity.platform.config.** {*;}
-keep class com.aliyun.identity.face.IdentityFaceApi {*;}
-keep class com.face.verify.intl.** {*;}
-keep class com.alibaba.fastjson.** {*;}
-keep class com.aliyun.face.aliyun_face_plugin.** {*;}

-dontwarn okio.**

-keepclassmembers,allowobfuscation class * {
@com.alibaba.fastjson.annotation.JSONField <fields>;
}

iOS オペレーティングシステムの環境を構成する

カメラの権限を追加する

  1. Xcode を開きます。プロジェクトを見つけ、左側のナビゲーションペインで [ios] > [runner.xcworkspace] を選択します。 [runner] プロジェクトを開きます。

  2. [runner] プロジェクトの Info.plist ファイルにカメラの権限を追加します。次の図は例を示しています。ビジネス要件に基づいて [value] パラメーターを構成できます。

    image.png

バンドルを追加する

Xcode の左側のナビゲーションペインで、[runner] をクリックします。 runner ページで、[build Phases] タブをクリックします。 [Build Phases] タブで、[copy Bundle Resources] セクションを見つけ、次のバンドルを追加します。

バンドルファイルは、Flutter 用 ID Verification SDK の Frameworks ディレクトリに格納されています。バンドルファイルへのパスは aliyun_face_plugin/ios/Products です。各バンドルは .framework ファイルに対応しています。

  • ToygerService.bundle: ToygerService.framework に対応します。

  • AliyunIdentityPlatform.bundle: AliyunIdentityPlatform.framework に対応します。

  • AliyunIdentityOCR.bundle: AliyunIdentityOCR.framework に対応します。

  • AliyunIdentityFace.bundle: AliyunIdentityFace.framework に対応します。

image.png

-ObjC リンカーフラグを追加する

Xcode の左側のナビゲーションペインで、[pods] をクリックします。 Pods ページで、[build Settings] タブをクリックします。 [Build Settings] タブで、[linking] セクションの [other Linker Flags] を見つけ、[-objc] リンカーフラグを追加します。

image.png

操作の説明

Flutter 用 ID Verification SDK は、init、getMetaInfos、および verify の操作を提供します。

class AliyunFacePlugin {
  // init 操作。
  Future<void> init() {
    return AliyunFacePluginPlatform.instance.init();
  }

  // getMetaInfos 操作。ID Verification は、クライアントからメタデータを取得して、サーバーから transcationId の値を取得します。
  Future<String?> getMetaInfos() {
    return AliyunFacePluginPlatform.instance.getMetaInfos();
  }
  
  // verify 操作。
  Future<String?> verify(String key, String value) {
    return AliyunFacePluginPlatform.instance.verify(key, value);
  }
}

SDK を初期化する

アプリケーションをコールドスタートし、プライバシーポリシーを確認した後、できるだけ早く init 操作を呼び出して、Flutter 用 ID Verification SDK を初期化します。

メタデータを取得する

getMetaInfos 操作を呼び出して、クライアントの環境に関する情報を取得します。クライアントは、取得した情報に基づいてビジネスサーバーにリクエストを送信します。次に、ビジネスサーバーは初期化のリクエストを Alibaba Cloud に送信して、transactionId の値を取得します。この値は、以下の手順での検証に使用されます。

検証を開始する

verify 操作を呼び出して、eKYC リクエストを開始します。

  • key パラメーターは、文字列である transactionId に固定されています。

  • value パラメーターは、init 操作で取得した transactionId の値に固定されています。

  • レスポンスは code,reason 形式です。 code はステータスコードを示し、reason はステータスコードの説明を示します。 code と reason の値はカンマ (,) で区切られます。

    code と reason の値の意味は、iOS オペレーティングシステムと Android オペレーティングシステムで異なります。詳細については、関連ドキュメントを参照してください。

説明

transactionId の値は 1 回だけ使用できます。それ以外の場合はエラーが発生し、次のエラー情報が返されます。

  • iOS: [2002,zimnetworkfail]

  • Android: [1001,NET_RESPONSE_INVALID]

サンプルコード

import 'package:flutter/material.dart';
import 'dart:async';

import 'package:flutter/services.dart';
import 'package:aliyun_face_plugin/aliyun_face_plugin.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String _infos = 'Unknown';
  final _aliyunFacePlugin = AliyunFacePlugin();

  @override
  void initState() {
    super.initState();

    // アプリケーションの起動直後に init 操作を呼び出します。
    _aliyunFacePlugin.init();
  }

  Future<void> getMetaInfos() async {
    String metainfos;

    try {
      // クライアントのメタデータを取得し、メタデータを ID Verification に送信してから、ID Verification の関連操作を呼び出して transactionId の値を取得します。
      metainfos = await _aliyunFacePlugin.getMetaInfos() ??  'Unknown metainfos';
    } on PlatformException {
      metainfos = 'Failed to get metainfos.';
    }

    setState(() {
      _infos = "metainfos: " + metainfos;
    });
  }

  Future<void> startVerify() async {
    String verifyResult;
    try {
      // verify 操作を呼び出します。最初に ID Verification の関連操作を呼び出して、transcationId の値を取得する必要があります。
      // transcationId の値は 1 回だけ使用できます。それ以外の場合はエラーが発生します。iOS の場合はエラーコード 2002 が返され、Android の場合はエラーコード 1001 が返されます。
      verifyResult = await _aliyunFacePlugin.verify(
        "transactionId", "hksdecd1823a84321d7360dc5119****") ??  '-1,error';
    } on PlatformException {
      verifyResult = '-2,exception';
    }

    setState(() {
      _infos = "verifyResult: " + verifyResult;
    });
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: const Text('Aliyun face plugin demo')),
        body: Center(
            child: Column(children: <Widget>[
          Text('$_infos\n'),
          ElevatedButton(
              onPressed: () async {
                getMetaInfos();
              },
              child: Text("getMetaInfos")),
          ElevatedButton(
              onPressed: () async {
                startVerify();
              },
              child: Text("startVerify")),
        ])),
      ),
    );
  }
}