diff --git a/CHANGELOG.md b/CHANGELOG.md
index cf6d7c49845dc4769f2ec5b12098f511174f6673..c569753e48638f6c34b9c03ba7a19f6dcdf0bd06 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,18 @@
All notable changes to this project will be documented in this file.
+## [2.1.3] - 30 Jan, 2023
+
+### New features
+
+- Added an option to handle result on `onActivityResult` method. For more information, please visit our [README](README.md#with-onactivityresult-method).
+- Added Content-Language for every request.
+
+### Changed features
+
+- UI: Increased image compression quality parameter.
+- UI: Improved Auth screen ui components
+
## [2.1.2] - 25 Nov, 2022
### New features
@@ -50,4 +62,4 @@ All notable changes to this project will be documented in this file.
### Fixes
-- 🔨 `Image's size must be lower than 1600 kb`. This bug fixed.
\ No newline at end of file
+- 🔨 `Image's size must be lower than 1600 kb`. This bug fixed.
diff --git a/README.md b/README.md
index 5388a0cf5899a741a7f99e9ce42901de184fd2da..84f1cc1951fb5021eba81080c37389660bbe6073 100644
--- a/README.md
+++ b/README.md
@@ -51,11 +51,11 @@ libraries (For example libs) and copy MyID SDK provided libraries.
Add reference to library to module **_build.gradle_**:
``` gradle
-implementation(files("libs/myid-sdk-2.1.2-release.aar"))
+implementation(files("libs/myid-sdk-2.1.3-release.aar"))
```
-**Note:** You can get `myid-sdk-2.1.2-release.aar` file
-from [here](app/libs/myid-sdk-2.1.2-release.aar)
+**Note:** You can get `myid-sdk-2.1.3-release.aar` file
+from [here](android-sample/app/libs/myid-sdk-2.1.3-release.aar)
After synchronization, You should be able to access to SDK classes from your source code.
@@ -63,7 +63,7 @@ MyID Android SDK also requires following libraries to be added:
``` gradle
dependencies {
- implementation(files("libs/myid-sdk-2.1.2-release.aar"))
+ implementation(files("libs/myid-sdk-2.1.3-release.aar"))
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4")
@@ -104,8 +104,10 @@ Add following lines to the **_AndroidManifest.xml_**:
## Usage
+### With Activity Result API
+
``` kotlin
-class YourActivity : AppCompatActivity(), MyIdResultListener {
+class ExampleActivity : AppCompatActivity(), MyIdResultListener {
private val myIdClient = MyIdClient()
@@ -142,6 +144,53 @@ class YourActivity : AppCompatActivity(), MyIdResultListener {
}
```
+### With `onActivityResult` method
+
+``` kotlin
+class ExampleActivity : AppCompatActivity(), MyIdResultListener {
+
+ private val myIdClient = MyIdClient()
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ startMyId()
+ }
+
+ override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
+ super.onActivityResult(requestCode, resultCode, data)
+ myIdClient.handleActivityResult(resultCode, this)
+ }
+
+ private fun startMyId() {
+ val organizationDetails = OrganizationDetails(
+ phoneNumber = "1234567",
+ logo = R.drawable.image_logo
+ )
+
+ val myIdConfig = MyIdConfig.builder(clientId = /* Your client id */)
+ .withPassportData(passportData)
+ .withBirthDate(dateOfBirth)
+ .withSdkHash(sdkHash)
+ .withExternalId(externalId)
+ .withThreshold(threshold)
+ .withBuildMode(MyIdBuildMode.PRODUCTION)
+ .withEntryType(MyIdEntryType.AUTH)
+ .withLocale(Locale("en"))
+ .withCameraShape(MyIdCameraShape.CIRCLE)
+ .withOrganizationDetails(organizationDetails)
+ .withPhoto(false)
+ .build()
+
+ /*
+ Start the flow. 1 should be your request code (customize as needed).
+ Must be an Activity or Fragment (support library).
+ This request code will be important for you on onActivityResult() to identify the MyIdResultListener.
+ */
+ myIdClient.startActivityForResult(this, 1, myIdConfig)
+ }
+}
+```
+
### 1.1 Methods
Method | Notes | Default
@@ -274,4 +323,4 @@ customize following fields:
providing it in this field ([sample](images/screen01.jpg)).
- *logo* - the drawable asset, that will be displayed on the input screen. If you would like to
display your own logo on the top of the screen, this is the place to provide it. Make sure it fits
- the imageView element, which has the *240x60* size.
\ No newline at end of file
+ the imageView element, which has the *240x60* size.
diff --git a/app/build.gradle b/android-sample/app/build.gradle
similarity index 93%
rename from app/build.gradle
rename to android-sample/app/build.gradle
index 4b2274c1de19f6dfae07ef21238f44de57ab6d71..e880a7b2b404f6e5d339f9a8584d4e6fc3ce3e5e 100644
--- a/app/build.gradle
+++ b/android-sample/app/build.gradle
@@ -37,7 +37,7 @@ android {
}
dependencies {
- implementation(files("libs/myid-sdk-2.1.2-release.aar"))
+ implementation(files("libs/myid-sdk-2.1.3-release.aar"))
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4")
@@ -52,12 +52,12 @@ dependencies {
implementation("androidx.camera:camera-lifecycle:$cameraVersion")
implementation("androidx.camera:camera-view:$cameraVersion")
+ implementation("io.ktor:ktor-client-android:2.1.2")
+ implementation("io.sentry:sentry-android:6.7.0-alpha.1")
+
implementation("com.google.android.gms:play-services-mlkit-face-detection:17.1.0")
implementation("com.google.android.gms:play-services-mlkit-text-recognition:18.0.2")
implementation("com.google.android.gms:play-services-mlkit-barcode-scanning:18.1.0")
- implementation("io.ktor:ktor-client-android:2.1.2")
- implementation("io.sentry:sentry-android:6.7.0-alpha.1")
-
- implementation("com.google.android.material:material:1.7.0")
+ implementation("com.google.android.material:material:1.8.0")
}
\ No newline at end of file
diff --git a/app/libs/myid-sdk-2.1.2-release.aar b/android-sample/app/libs/myid-sdk-2.1.3-release.aar
similarity index 63%
rename from app/libs/myid-sdk-2.1.2-release.aar
rename to android-sample/app/libs/myid-sdk-2.1.3-release.aar
index ebe5380aec858c82732e0f6c25592377b951bbc5..35ab58e86bd1b2339b697ea66d742c78a4ac0270 100644
Binary files a/app/libs/myid-sdk-2.1.2-release.aar and b/android-sample/app/libs/myid-sdk-2.1.3-release.aar differ
diff --git a/app/proguard-rules.pro b/android-sample/app/proguard-rules.pro
similarity index 100%
rename from app/proguard-rules.pro
rename to android-sample/app/proguard-rules.pro
diff --git a/app/src/main/AndroidManifest.xml b/android-sample/app/src/main/AndroidManifest.xml
similarity index 100%
rename from app/src/main/AndroidManifest.xml
rename to android-sample/app/src/main/AndroidManifest.xml
diff --git a/app/src/main/java/uz/myid/sdk/sample/ExampleJavaActivity.java b/android-sample/app/src/main/java/uz/myid/sdk/sample/ExampleJavaActivity.java
similarity index 100%
rename from app/src/main/java/uz/myid/sdk/sample/ExampleJavaActivity.java
rename to android-sample/app/src/main/java/uz/myid/sdk/sample/ExampleJavaActivity.java
diff --git a/app/src/main/java/uz/myid/sdk/sample/ExampleJavaFragment.java b/android-sample/app/src/main/java/uz/myid/sdk/sample/ExampleJavaFragment.java
similarity index 100%
rename from app/src/main/java/uz/myid/sdk/sample/ExampleJavaFragment.java
rename to android-sample/app/src/main/java/uz/myid/sdk/sample/ExampleJavaFragment.java
diff --git a/app/src/main/java/uz/myid/sdk/sample/ExampleKotlinFragment.kt b/android-sample/app/src/main/java/uz/myid/sdk/sample/ExampleKotlinFragment.kt
similarity index 100%
rename from app/src/main/java/uz/myid/sdk/sample/ExampleKotlinFragment.kt
rename to android-sample/app/src/main/java/uz/myid/sdk/sample/ExampleKotlinFragment.kt
diff --git a/android-sample/app/src/main/java/uz/myid/sdk/sample/ExampleWithOnActivityResultActivity.kt b/android-sample/app/src/main/java/uz/myid/sdk/sample/ExampleWithOnActivityResultActivity.kt
new file mode 100644
index 0000000000000000000000000000000000000000..659adfc9043576026fbd33fbff1be9ffc1cff554
--- /dev/null
+++ b/android-sample/app/src/main/java/uz/myid/sdk/sample/ExampleWithOnActivityResultActivity.kt
@@ -0,0 +1,69 @@
+package uz.myid.sdk.sample
+
+import android.content.Intent
+import android.os.Bundle
+import androidx.appcompat.app.AppCompatActivity
+import uz.myid.android.sdk.capture.*
+import uz.myid.android.sdk.capture.model.OrganizationDetails
+import java.util.*
+
+class ExampleWithOnActivityResultActivity : AppCompatActivity(), MyIdResultListener {
+
+ private val myIdClient = MyIdClient()
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ startMyId()
+ }
+
+ override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
+ super.onActivityResult(requestCode, resultCode, data)
+ myIdClient.handleActivityResult(resultCode, this)
+ }
+
+ override fun onSuccess(result: MyIdResult) {
+ // Get face bitmap and result code
+ }
+
+ override fun onError(e: MyIdException) {
+ // Get error message and code
+ }
+
+ override fun onUserExited() {
+ // User exited sdk
+ }
+
+ private fun startMyId() {
+ val clientId = "client_id"
+ val passportData = "passport_data"
+ val dateOfBirth = "date_of_birth"
+ val sdkHash = "sdk_hash"
+ val externalId = "external_id"
+ val threshold = 0.50f
+
+ val organizationDetails = OrganizationDetails(
+ phoneNumber = "1234567",
+ )
+
+ val myIdConfig = MyIdConfig.Builder(clientId)
+ .withPassportData(passportData)
+ .withBirthDate(dateOfBirth)
+ .withSdkHash(sdkHash)
+ .withExternalId(externalId)
+ .withThreshold(threshold)
+ .withBuildMode(MyIdBuildMode.PRODUCTION)
+ .withEntryType(MyIdEntryType.AUTH)
+ .withLocale(Locale("en"))
+ .withCameraShape(MyIdCameraShape.CIRCLE)
+ .withOrganizationDetails(organizationDetails)
+ .withPhoto(false)
+ .build()
+
+ /*
+ Start the flow. 1 should be your request code (customize as needed).
+ Must be an Activity or Fragment (support library).
+ This request code will be important for you on onActivityResult() to identify the MyIdResultListener.
+ */
+ myIdClient.startActivityForResult(this, 1, myIdConfig)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/uz/myid/sdk/sample/MainActivity.kt b/android-sample/app/src/main/java/uz/myid/sdk/sample/MainActivity.kt
similarity index 100%
rename from app/src/main/java/uz/myid/sdk/sample/MainActivity.kt
rename to android-sample/app/src/main/java/uz/myid/sdk/sample/MainActivity.kt
diff --git a/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/android-sample/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
similarity index 100%
rename from app/src/main/res/drawable-v24/ic_launcher_foreground.xml
rename to android-sample/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/android-sample/app/src/main/res/drawable/ic_launcher_background.xml
similarity index 100%
rename from app/src/main/res/drawable/ic_launcher_background.xml
rename to android-sample/app/src/main/res/drawable/ic_launcher_background.xml
diff --git a/app/src/main/res/layout/activity_main.xml b/android-sample/app/src/main/res/layout/activity_main.xml
similarity index 100%
rename from app/src/main/res/layout/activity_main.xml
rename to android-sample/app/src/main/res/layout/activity_main.xml
diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/android-sample/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
similarity index 100%
rename from app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
rename to android-sample/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/android-sample/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
similarity index 100%
rename from app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
rename to android-sample/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/android-sample/app/src/main/res/mipmap-hdpi/ic_launcher.webp
similarity index 100%
rename from app/src/main/res/mipmap-hdpi/ic_launcher.webp
rename to android-sample/app/src/main/res/mipmap-hdpi/ic_launcher.webp
diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/android-sample/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp
similarity index 100%
rename from app/src/main/res/mipmap-hdpi/ic_launcher_round.webp
rename to android-sample/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp
diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/android-sample/app/src/main/res/mipmap-mdpi/ic_launcher.webp
similarity index 100%
rename from app/src/main/res/mipmap-mdpi/ic_launcher.webp
rename to android-sample/app/src/main/res/mipmap-mdpi/ic_launcher.webp
diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/android-sample/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp
similarity index 100%
rename from app/src/main/res/mipmap-mdpi/ic_launcher_round.webp
rename to android-sample/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp
diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/android-sample/app/src/main/res/mipmap-xhdpi/ic_launcher.webp
similarity index 100%
rename from app/src/main/res/mipmap-xhdpi/ic_launcher.webp
rename to android-sample/app/src/main/res/mipmap-xhdpi/ic_launcher.webp
diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/android-sample/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
similarity index 100%
rename from app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
rename to android-sample/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/android-sample/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp
similarity index 100%
rename from app/src/main/res/mipmap-xxhdpi/ic_launcher.webp
rename to android-sample/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/android-sample/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
similarity index 100%
rename from app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
rename to android-sample/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/android-sample/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
similarity index 100%
rename from app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
rename to android-sample/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/android-sample/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
similarity index 100%
rename from app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
rename to android-sample/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
diff --git a/app/src/main/res/values/strings.xml b/android-sample/app/src/main/res/values/strings.xml
similarity index 100%
rename from app/src/main/res/values/strings.xml
rename to android-sample/app/src/main/res/values/strings.xml
diff --git a/app/src/main/res/values/themes.xml b/android-sample/app/src/main/res/values/themes.xml
similarity index 100%
rename from app/src/main/res/values/themes.xml
rename to android-sample/app/src/main/res/values/themes.xml
diff --git a/build.gradle b/android-sample/build.gradle
similarity index 100%
rename from build.gradle
rename to android-sample/build.gradle
diff --git a/gradle.properties b/android-sample/gradle.properties
similarity index 100%
rename from gradle.properties
rename to android-sample/gradle.properties
diff --git a/gradle/wrapper/gradle-wrapper.jar b/android-sample/gradle/wrapper/gradle-wrapper.jar
similarity index 100%
rename from gradle/wrapper/gradle-wrapper.jar
rename to android-sample/gradle/wrapper/gradle-wrapper.jar
diff --git a/gradle/wrapper/gradle-wrapper.properties b/android-sample/gradle/wrapper/gradle-wrapper.properties
similarity index 100%
rename from gradle/wrapper/gradle-wrapper.properties
rename to android-sample/gradle/wrapper/gradle-wrapper.properties
diff --git a/gradlew b/android-sample/gradlew
similarity index 100%
rename from gradlew
rename to android-sample/gradlew
diff --git a/gradlew.bat b/android-sample/gradlew.bat
similarity index 100%
rename from gradlew.bat
rename to android-sample/gradlew.bat
diff --git a/settings.gradle b/android-sample/settings.gradle
similarity index 100%
rename from settings.gradle
rename to android-sample/settings.gradle
diff --git a/app/.DS_Store b/app/.DS_Store
deleted file mode 100644
index 6a1240cc5ad6cc2c6d6f5494715cfd7d71c5ad88..0000000000000000000000000000000000000000
Binary files a/app/.DS_Store and /dev/null differ
diff --git a/app/libs/.DS_Store b/app/libs/.DS_Store
deleted file mode 100644
index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..0000000000000000000000000000000000000000
Binary files a/app/libs/.DS_Store and /dev/null differ
diff --git a/app/src/.DS_Store b/app/src/.DS_Store
deleted file mode 100644
index d143c3e1395807a3e90d29aab32ef55a374e3688..0000000000000000000000000000000000000000
Binary files a/app/src/.DS_Store and /dev/null differ
diff --git a/app/src/main/res/.DS_Store b/app/src/main/res/.DS_Store
deleted file mode 100644
index a57df20ff0ac20cb7457a169461962816b8e84cd..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/.DS_Store and /dev/null differ
diff --git a/flutter-sample/analysis_options.yaml b/flutter-sample/analysis_options.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..61b6c4de17c96863d24279f06b85e01b6ebbdb34
--- /dev/null
+++ b/flutter-sample/analysis_options.yaml
@@ -0,0 +1,29 @@
+# This file configures the analyzer, which statically analyzes Dart code to
+# check for errors, warnings, and lints.
+#
+# The issues identified by the analyzer are surfaced in the UI of Dart-enabled
+# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be
+# invoked from the command line by running `flutter analyze`.
+
+# The following line activates a set of recommended lints for Flutter apps,
+# packages, and plugins designed to encourage good coding practices.
+include: package:flutter_lints/flutter.yaml
+
+linter:
+ # The lint rules applied to this project can be customized in the
+ # section below to disable rules from the `package:flutter_lints/flutter.yaml`
+ # included above or to enable additional rules. A list of all available lints
+ # and their documentation is published at
+ # https://dart-lang.github.io/linter/lints/index.html.
+ #
+ # Instead of disabling a lint rule for the entire project in the
+ # section below, it can also be suppressed for a single line of code
+ # or a specific dart file by using the `// ignore: name_of_lint` and
+ # `// ignore_for_file: name_of_lint` syntax on the line or in the file
+ # producing the lint.
+ rules:
+ # avoid_print: false # Uncomment to disable the `avoid_print` rule
+ # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule
+
+# Additional information about this file can be found at
+# https://dart.dev/guides/language/analysis-options
diff --git a/flutter-sample/android/.gitignore b/flutter-sample/android/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..6f568019d3c69d4966bb5a0f759980a1472afc1e
--- /dev/null
+++ b/flutter-sample/android/.gitignore
@@ -0,0 +1,13 @@
+gradle-wrapper.jar
+/.gradle
+/captures/
+/gradlew
+/gradlew.bat
+/local.properties
+GeneratedPluginRegistrant.java
+
+# Remember to never publicly share your keystore.
+# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
+key.properties
+**/*.keystore
+**/*.jks
diff --git a/flutter-sample/android/app/build.gradle b/flutter-sample/android/app/build.gradle
new file mode 100644
index 0000000000000000000000000000000000000000..320e47f3719681e2f39af2ce94f40b5e4fb2230f
--- /dev/null
+++ b/flutter-sample/android/app/build.gradle
@@ -0,0 +1,88 @@
+def localProperties = new Properties()
+def localPropertiesFile = rootProject.file("local.properties")
+if (localPropertiesFile.exists()) {
+ localPropertiesFile.withReader("UTF-8") { reader ->
+ localProperties.load(reader)
+ }
+}
+
+def flutterRoot = localProperties.getProperty("flutter.sdk")
+if (flutterRoot == null) {
+ throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
+}
+
+def flutterVersionCode = localProperties.getProperty("flutter.versionCode")
+if (flutterVersionCode == null) {
+ flutterVersionCode = "1"
+}
+
+def flutterVersionName = localProperties.getProperty("flutter.versionName")
+if (flutterVersionName == null) {
+ flutterVersionName = "1.0"
+}
+
+apply plugin: "com.android.application"
+apply plugin: "kotlin-android"
+apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
+
+android {
+ compileSdkVersion 33
+
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+
+ kotlinOptions {
+ jvmTarget = "1.8"
+ }
+
+ sourceSets {
+ main.java.srcDirs += "src/main/kotlin"
+ }
+
+ defaultConfig {
+ applicationId "com.example.example"
+ minSdkVersion 21
+ targetSdkVersion 33
+ versionCode flutterVersionCode.toInteger()
+ versionName flutterVersionName
+ }
+
+ buildTypes {
+ release {
+ signingConfig signingConfigs.debug
+ }
+ }
+}
+
+flutter {
+ source "../.."
+}
+
+dependencies {
+ implementation(files("libs/myid-sdk-2.1.3-release.aar"))
+
+ implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4")
+
+ implementation("androidx.core:core-ktx:1.9.0")
+ implementation("androidx.appcompat:appcompat:1.5.1")
+ implementation("androidx.constraintlayout:constraintlayout:2.1.4")
+ implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1")
+ implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.5.1")
+
+ def cameraVersion = "1.3.0-alpha01"
+ implementation("androidx.camera:camera-camera2:$cameraVersion")
+ implementation("androidx.camera:camera-lifecycle:$cameraVersion")
+ implementation("androidx.camera:camera-view:$cameraVersion")
+
+ implementation("io.ktor:ktor-client-android:2.1.2")
+ implementation("io.sentry:sentry-android:6.7.0-alpha.1")
+
+ implementation("com.google.android.gms:play-services-mlkit-face-detection:17.1.0")
+ implementation("com.google.android.gms:play-services-mlkit-text-recognition:18.0.2")
+ implementation("com.google.android.gms:play-services-mlkit-barcode-scanning:18.1.0")
+
+ implementation("com.google.android.material:material:1.8.0")
+ implementation("com.google.code.gson:gson:2.10")
+}
diff --git a/flutter-sample/android/app/libs/myid-sdk-2.1.3-release.aar b/flutter-sample/android/app/libs/myid-sdk-2.1.3-release.aar
new file mode 100644
index 0000000000000000000000000000000000000000..35ab58e86bd1b2339b697ea66d742c78a4ac0270
Binary files /dev/null and b/flutter-sample/android/app/libs/myid-sdk-2.1.3-release.aar differ
diff --git a/flutter-sample/android/app/src/main/AndroidManifest.xml b/flutter-sample/android/app/src/main/AndroidManifest.xml
new file mode 100644
index 0000000000000000000000000000000000000000..144a8052acd209770be77c2fa70e4bc01d7902c5
--- /dev/null
+++ b/flutter-sample/android/app/src/main/AndroidManifest.xml
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/flutter-sample/android/app/src/main/kotlin/com/example/example/Keys.kt b/flutter-sample/android/app/src/main/kotlin/com/example/example/Keys.kt
new file mode 100644
index 0000000000000000000000000000000000000000..31d5d6ee1e5142206818e7621242c11af890c8b8
--- /dev/null
+++ b/flutter-sample/android/app/src/main/kotlin/com/example/example/Keys.kt
@@ -0,0 +1,16 @@
+package com.example.example
+
+object Keys {
+ const val PHONE_NUMBER = "KEY_PHONE_NUMBER"
+ const val CLIENT_ID = "KEY_CLIENT_ID"
+ const val PASSPORT_DATA = "KEY_PASSPORT_DATA"
+ const val DATE_OF_BIRTH = "KEY_DATE_OF_BIRTH"
+ const val SDK_HASH = "KEY_SDK_HASH"
+ const val EXTERNAL_ID = "KEY_EXTERNAL_ID"
+ const val THRESHOLD = "KEY_THRESHOLD"
+ const val BUILD_MODE = "KEY_BUILD_MODE"
+ const val ENTRY_TYPE = "KEY_ENTRY_TYPE"
+ const val LOCALE = "KEY_LOCALE"
+ const val CAMERA_SHAPE = "KEY_CAMERA_SHAPE"
+ const val WITH_PHOTO = "KEY_WITH_PHOTO"
+}
\ No newline at end of file
diff --git a/flutter-sample/android/app/src/main/kotlin/com/example/example/MainActivity.kt b/flutter-sample/android/app/src/main/kotlin/com/example/example/MainActivity.kt
new file mode 100644
index 0000000000000000000000000000000000000000..27f52ebb579740231261caa5cbebef470d2ef341
--- /dev/null
+++ b/flutter-sample/android/app/src/main/kotlin/com/example/example/MainActivity.kt
@@ -0,0 +1,112 @@
+package com.example.example
+
+import android.content.Intent
+import com.google.gson.Gson
+import io.flutter.embedding.android.FlutterActivity
+import io.flutter.embedding.engine.FlutterEngine
+import io.flutter.plugin.common.MethodCall
+import io.flutter.plugin.common.MethodChannel
+import uz.myid.android.sdk.capture.*
+import uz.myid.android.sdk.capture.model.OrganizationDetails
+import java.util.*
+
+class MainActivity : FlutterActivity(), MyIdResultListener {
+
+ private lateinit var flutterResult: MethodChannel.Result
+
+ private val myIdClient = MyIdClient()
+
+ override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
+ super.configureFlutterEngine(flutterEngine)
+
+ MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL)
+ .setMethodCallHandler { call, result ->
+ if (call.method == "runSDK") {
+ flutterResult = result
+
+ startMyId(call)
+ }
+ }
+ }
+
+ override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) {
+ super.onActivityResult(requestCode, resultCode, data)
+
+ if (requestCode == MYID_REQUEST_CODE) {
+ myIdClient.handleActivityResult(resultCode, this)
+ }
+ }
+
+ override fun onSuccess(result: MyIdResult) {
+ val resultData = ResultData(
+ resultCode = result.code,
+ comparison = result.comparison
+ )
+ flutterResult.success(Gson().toJson(resultData))
+ }
+
+ override fun onError(e: MyIdException) {
+ val resultData = ResultData(
+ errorMessage = e.message,
+ errorCode = e.code
+ )
+ flutterResult.success(Gson().toJson(resultData))
+ }
+
+ override fun onUserExited() {
+ val resultData = ResultData(
+ errorMessage = "User exited",
+ errorCode = 400
+ )
+ flutterResult.success(Gson().toJson(resultData))
+ }
+
+ private fun startMyId(call: MethodCall) {
+ val phoneNumber = call.argument(Keys.PHONE_NUMBER).orEmpty()
+ val clientId = call.argument(Keys.CLIENT_ID).orEmpty()
+ val passportData = call.argument(Keys.PASSPORT_DATA).orEmpty()
+ val dateOfBirth = call.argument(Keys.DATE_OF_BIRTH).orEmpty()
+ val sdkHash = call.argument(Keys.SDK_HASH).orEmpty()
+ val externalId = call.argument(Keys.EXTERNAL_ID).orEmpty()
+ val threshold = call.argument(Keys.THRESHOLD) ?: 0.5f
+
+ val buildMode = when (call.argument(Keys.BUILD_MODE)?.uppercase()) {
+ MyIdBuildMode.DEBUG.name -> MyIdBuildMode.DEBUG
+ else -> MyIdBuildMode.PRODUCTION
+ }
+ val entryType = when (call.argument(Keys.ENTRY_TYPE)?.uppercase()) {
+ MyIdEntryType.FACE.name -> MyIdEntryType.FACE
+ else -> MyIdEntryType.AUTH
+ }
+ val cameraShape = when (call.argument(Keys.CAMERA_SHAPE)?.uppercase()) {
+ MyIdCameraShape.ELLIPSE.name -> MyIdCameraShape.ELLIPSE
+ else -> MyIdCameraShape.CIRCLE
+ }
+
+ val locale = call.argument(Keys.LOCALE) ?: "en"
+ val withPhoto = call.argument(Keys.WITH_PHOTO) ?: false
+
+ val organizationDetails = OrganizationDetails(phoneNumber = phoneNumber)
+
+ val myIdConfig = MyIdConfig.builder(clientId = clientId)
+ .withPassportData(passportData)
+ .withBirthDate(dateOfBirth)
+ .withSdkHash(sdkHash)
+ .withExternalId(externalId)
+ .withThreshold(threshold.toFloat())
+ .withBuildMode(buildMode)
+ .withEntryType(entryType)
+ .withLocale(Locale(locale))
+ .withCameraShape(cameraShape)
+ .withOrganizationDetails(organizationDetails)
+ .withPhoto(withPhoto)
+ .build()
+
+ myIdClient.startActivityForResult(this, MYID_REQUEST_CODE, myIdConfig)
+ }
+
+ companion object {
+ private const val CHANNEL = "flutter.native/myid"
+ private const val MYID_REQUEST_CODE = 999
+ }
+}
diff --git a/flutter-sample/android/app/src/main/kotlin/com/example/example/ResultData.kt b/flutter-sample/android/app/src/main/kotlin/com/example/example/ResultData.kt
new file mode 100644
index 0000000000000000000000000000000000000000..015bb972d69980e1523fd2516fc06e585a32b3e4
--- /dev/null
+++ b/flutter-sample/android/app/src/main/kotlin/com/example/example/ResultData.kt
@@ -0,0 +1,16 @@
+package com.example.example
+
+import androidx.annotation.Keep
+import com.google.gson.annotations.SerializedName
+
+@Keep
+data class ResultData(
+ @SerializedName("result_code")
+ val resultCode: String? = null,
+ @SerializedName("comparison")
+ val comparison: Double? = null,
+ @SerializedName("error_message")
+ val errorMessage: String? = null,
+ @SerializedName("error_code")
+ val errorCode: Int? = null
+)
diff --git a/flutter-sample/android/app/src/main/res/drawable-v21/launch_background.xml b/flutter-sample/android/app/src/main/res/drawable-v21/launch_background.xml
new file mode 100644
index 0000000000000000000000000000000000000000..812458bad192c2e2ef635b290299b537746b8dfb
--- /dev/null
+++ b/flutter-sample/android/app/src/main/res/drawable-v21/launch_background.xml
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/flutter-sample/android/app/src/main/res/drawable/launch_background.xml b/flutter-sample/android/app/src/main/res/drawable/launch_background.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5782842b813382ad4296409b812e64ac171d2b30
--- /dev/null
+++ b/flutter-sample/android/app/src/main/res/drawable/launch_background.xml
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/flutter-sample/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/flutter-sample/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..db77bb4b7b0906d62b1847e87f15cdcacf6a4f29
Binary files /dev/null and b/flutter-sample/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/flutter-sample/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/flutter-sample/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..17987b79bb8a35cc66c3c1fd44f5a5526c1b78be
Binary files /dev/null and b/flutter-sample/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/flutter-sample/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/flutter-sample/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..09d4391482be68e9e4a07fab769b5de337d16eb1
Binary files /dev/null and b/flutter-sample/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/flutter-sample/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/flutter-sample/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..d5f1c8d34e7a88e3f88bea192c3a370d44689c3c
Binary files /dev/null and b/flutter-sample/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/flutter-sample/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/flutter-sample/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..4d6372eebdb28e45604e46eeda8dd24651419bc0
Binary files /dev/null and b/flutter-sample/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/flutter-sample/android/app/src/main/res/values-night/styles.xml b/flutter-sample/android/app/src/main/res/values-night/styles.xml
new file mode 100644
index 0000000000000000000000000000000000000000..903bd55a3df46975baf04125edeb5116c7fab5cf
--- /dev/null
+++ b/flutter-sample/android/app/src/main/res/values-night/styles.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
diff --git a/flutter-sample/android/app/src/main/res/values/strings.xml b/flutter-sample/android/app/src/main/res/values/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..73862c416f52865cd0292c70c72eb95470abb84e
--- /dev/null
+++ b/flutter-sample/android/app/src/main/res/values/strings.xml
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/flutter-sample/android/app/src/main/res/values/styles.xml b/flutter-sample/android/app/src/main/res/values/styles.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1daf3aeeacb09e0daf01f2373aedc98f354abbec
--- /dev/null
+++ b/flutter-sample/android/app/src/main/res/values/styles.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
diff --git a/flutter-sample/android/build.gradle b/flutter-sample/android/build.gradle
new file mode 100644
index 0000000000000000000000000000000000000000..d979812819531b2e77b5c49601ee1d55414dd666
--- /dev/null
+++ b/flutter-sample/android/build.gradle
@@ -0,0 +1,30 @@
+buildscript {
+ repositories {
+ google()
+ mavenCentral()
+ }
+
+ dependencies {
+ classpath "com.android.tools.build:gradle:7.3.1"
+ classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.21"
+ }
+}
+
+allprojects {
+ repositories {
+ google()
+ mavenCentral()
+ }
+}
+
+rootProject.buildDir = "../build"
+subprojects {
+ project.buildDir = "${rootProject.buildDir}/${project.name}"
+}
+subprojects {
+ project.evaluationDependsOn(":app")
+}
+
+task clean(type: Delete) {
+ delete rootProject.buildDir
+}
diff --git a/flutter-sample/android/gradle.properties b/flutter-sample/android/gradle.properties
new file mode 100644
index 0000000000000000000000000000000000000000..94adc3a3f97aa8ae37ba567d080f94f95ee8f9b7
--- /dev/null
+++ b/flutter-sample/android/gradle.properties
@@ -0,0 +1,3 @@
+org.gradle.jvmargs=-Xmx1536M
+android.useAndroidX=true
+android.enableJetifier=true
diff --git a/flutter-sample/android/gradle/wrapper/gradle-wrapper.properties b/flutter-sample/android/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000000000000000000000000000000000000..16a7d6d0513ad156be3d76760c3acdd291f7cf7e
--- /dev/null
+++ b/flutter-sample/android/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Fri Jun 23 08:50:38 CEST 2017
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip
diff --git a/flutter-sample/android/settings.gradle b/flutter-sample/android/settings.gradle
new file mode 100644
index 0000000000000000000000000000000000000000..e791cf5c3cabdf398821ad858b67aef8c73075bd
--- /dev/null
+++ b/flutter-sample/android/settings.gradle
@@ -0,0 +1,11 @@
+include ":app"
+
+def localPropertiesFile = new File(rootProject.projectDir, "local.properties")
+def properties = new Properties()
+
+assert localPropertiesFile.exists()
+localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) }
+
+def flutterSdkPath = properties.getProperty("flutter.sdk")
+assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
+apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle"
diff --git a/flutter-sample/ios/.gitignore b/flutter-sample/ios/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..7a7f9873ad7dceb4dc17087fb06c800fa0191376
--- /dev/null
+++ b/flutter-sample/ios/.gitignore
@@ -0,0 +1,34 @@
+**/dgph
+*.mode1v3
+*.mode2v3
+*.moved-aside
+*.pbxuser
+*.perspectivev3
+**/*sync/
+.sconsign.dblite
+.tags*
+**/.vagrant/
+**/DerivedData/
+Icon?
+**/Pods/
+**/.symlinks/
+profile
+xcuserdata
+**/.generated/
+Flutter/App.framework
+Flutter/Flutter.framework
+Flutter/Flutter.podspec
+Flutter/Generated.xcconfig
+Flutter/ephemeral/
+Flutter/app.flx
+Flutter/app.zip
+Flutter/flutter_assets/
+Flutter/flutter_export_environment.sh
+ServiceDefinitions.json
+Runner/GeneratedPluginRegistrant.*
+
+# Exceptions to above rules.
+!default.mode1v3
+!default.mode2v3
+!default.pbxuser
+!default.perspectivev3
diff --git a/flutter-sample/ios/Flutter/AppFrameworkInfo.plist b/flutter-sample/ios/Flutter/AppFrameworkInfo.plist
new file mode 100644
index 0000000000000000000000000000000000000000..8d4492f977adc7dd7a836405d4916e5c9c014536
--- /dev/null
+++ b/flutter-sample/ios/Flutter/AppFrameworkInfo.plist
@@ -0,0 +1,26 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ en
+ CFBundleExecutable
+ App
+ CFBundleIdentifier
+ io.flutter.flutter.app
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ App
+ CFBundlePackageType
+ FMWK
+ CFBundleShortVersionString
+ 1.0
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ 1.0
+ MinimumOSVersion
+ 9.0
+
+
diff --git a/flutter-sample/ios/Flutter/Debug.xcconfig b/flutter-sample/ios/Flutter/Debug.xcconfig
new file mode 100644
index 0000000000000000000000000000000000000000..ec97fc6f30212d34d53ab17751bcabdfab1891d4
--- /dev/null
+++ b/flutter-sample/ios/Flutter/Debug.xcconfig
@@ -0,0 +1,2 @@
+#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
+#include "Generated.xcconfig"
diff --git a/flutter-sample/ios/Flutter/Release.xcconfig b/flutter-sample/ios/Flutter/Release.xcconfig
new file mode 100644
index 0000000000000000000000000000000000000000..c4855bfe2000b73c8a50783b40073676021cbb68
--- /dev/null
+++ b/flutter-sample/ios/Flutter/Release.xcconfig
@@ -0,0 +1,2 @@
+#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
+#include "Generated.xcconfig"
diff --git a/flutter-sample/ios/Podfile b/flutter-sample/ios/Podfile
new file mode 100644
index 0000000000000000000000000000000000000000..0f9cd66a1f1f9f79dcf9875bbf2501913012c1c4
--- /dev/null
+++ b/flutter-sample/ios/Podfile
@@ -0,0 +1,14 @@
+# Uncomment the next line to define a global platform for your project
+ platform :ios, '10.0'
+
+target 'Runner' do
+ # Comment the next line if you don't want to use dynamic frameworks
+ use_frameworks!
+
+ pod 'GoogleMLKit/FaceDetection', '2.6.0'
+ pod 'GoogleMLKit/TextRecognition', '2.6.0'
+ pod 'Alamofire'
+ pod 'MBProgressHUD'
+ pod 'Sentry'
+
+end
diff --git a/flutter-sample/ios/Runner.xcodeproj/project.pbxproj b/flutter-sample/ios/Runner.xcodeproj/project.pbxproj
new file mode 100644
index 0000000000000000000000000000000000000000..ada462b01d13fbb27583e89ea0442a8dfe50a764
--- /dev/null
+++ b/flutter-sample/ios/Runner.xcodeproj/project.pbxproj
@@ -0,0 +1,602 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 51;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 0356D147289FE8FE00A7E842 /* MyIdController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0356D146289FE8FE00A7E842 /* MyIdController.swift */; };
+ 0356D14C289FE9DD00A7E842 /* MyIdSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0356D14B289FE9DD00A7E842 /* MyIdSDK.framework */; };
+ 0356D14D289FE9DD00A7E842 /* MyIdSDK.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 0356D14B289FE9DD00A7E842 /* MyIdSDK.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
+ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
+ 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
+ 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
+ 8290A3FD2A8F3713CFC69AA4 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3AA89A359708575D4CE71461 /* Pods_Runner.framework */; };
+ 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
+ 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
+ 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXCopyFilesBuildPhase section */
+ 9705A1C41CF9048500538489 /* Embed Frameworks */ = {
+ isa = PBXCopyFilesBuildPhase;
+ buildActionMask = 2147483647;
+ dstPath = "";
+ dstSubfolderSpec = 10;
+ files = (
+ 0356D14D289FE9DD00A7E842 /* MyIdSDK.framework in Embed Frameworks */,
+ );
+ name = "Embed Frameworks";
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXCopyFilesBuildPhase section */
+
+/* Begin PBXFileReference section */
+ 0356D146289FE8FE00A7E842 /* MyIdController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyIdController.swift; sourceTree = ""; };
+ 0356D148289FE92B00A7E842 /* MyIdSDK.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MyIdSDK.framework; path = ../ios2/libs/MyIdSDK.framework; sourceTree = ""; };
+ 0356D14B289FE9DD00A7E842 /* MyIdSDK.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MyIdSDK.framework; path = libs/MyIdSDK.framework; sourceTree = ""; };
+ 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; };
+ 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; };
+ 3AA89A359708575D4CE71461 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; };
+ 3BFBAE87AC5F7BBA6F72AC82 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; };
+ 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; };
+ 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
+ 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; };
+ 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; };
+ 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; };
+ 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
+ 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
+ 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
+ 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ B428D608A4B04859E94D047C /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; };
+ DC512C9754B5D59EBDF9F2BF /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 97C146EB1CF9000F007C117D /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 0356D14C289FE9DD00A7E842 /* MyIdSDK.framework in Frameworks */,
+ 8290A3FD2A8F3713CFC69AA4 /* Pods_Runner.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 3EDF73B6FEED61C46673AA07 /* Pods */ = {
+ isa = PBXGroup;
+ children = (
+ 3BFBAE87AC5F7BBA6F72AC82 /* Pods-Runner.debug.xcconfig */,
+ DC512C9754B5D59EBDF9F2BF /* Pods-Runner.release.xcconfig */,
+ B428D608A4B04859E94D047C /* Pods-Runner.profile.xcconfig */,
+ );
+ path = Pods;
+ sourceTree = "";
+ };
+ 9740EEB11CF90186004384FC /* Flutter */ = {
+ isa = PBXGroup;
+ children = (
+ 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */,
+ 9740EEB21CF90195004384FC /* Debug.xcconfig */,
+ 7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
+ 9740EEB31CF90195004384FC /* Generated.xcconfig */,
+ );
+ name = Flutter;
+ sourceTree = "";
+ };
+ 97C146E51CF9000F007C117D = {
+ isa = PBXGroup;
+ children = (
+ 9740EEB11CF90186004384FC /* Flutter */,
+ 97C146F01CF9000F007C117D /* Runner */,
+ 97C146EF1CF9000F007C117D /* Products */,
+ 3EDF73B6FEED61C46673AA07 /* Pods */,
+ D80D4E9D0D600A89C906EFF1 /* Frameworks */,
+ );
+ sourceTree = "";
+ };
+ 97C146EF1CF9000F007C117D /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 97C146EE1CF9000F007C117D /* Runner.app */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ 97C146F01CF9000F007C117D /* Runner */ = {
+ isa = PBXGroup;
+ children = (
+ 97C146FA1CF9000F007C117D /* Main.storyboard */,
+ 97C146FD1CF9000F007C117D /* Assets.xcassets */,
+ 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
+ 97C147021CF9000F007C117D /* Info.plist */,
+ 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */,
+ 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */,
+ 74858FAE1ED2DC5600515810 /* AppDelegate.swift */,
+ 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */,
+ 0356D146289FE8FE00A7E842 /* MyIdController.swift */,
+ );
+ path = Runner;
+ sourceTree = "";
+ };
+ D80D4E9D0D600A89C906EFF1 /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ 0356D148289FE92B00A7E842 /* MyIdSDK.framework */,
+ 0356D14B289FE9DD00A7E842 /* MyIdSDK.framework */,
+ 3AA89A359708575D4CE71461 /* Pods_Runner.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ 97C146ED1CF9000F007C117D /* Runner */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
+ buildPhases = (
+ 9C01A1C5B6C2CBCCC9ED4A97 /* [CP] Check Pods Manifest.lock */,
+ 9740EEB61CF901F6004384FC /* Run Script */,
+ 97C146EA1CF9000F007C117D /* Sources */,
+ 97C146EB1CF9000F007C117D /* Frameworks */,
+ 97C146EC1CF9000F007C117D /* Resources */,
+ 9705A1C41CF9048500538489 /* Embed Frameworks */,
+ 3B06AD1E1E4923F5004D2608 /* Thin Binary */,
+ 1FD5323DC8F6BD8475EAA103 /* [CP] Embed Pods Frameworks */,
+ 367A74D6DFFF5C6DD1D2A720 /* [CP] Copy Pods Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = Runner;
+ productName = Runner;
+ productReference = 97C146EE1CF9000F007C117D /* Runner.app */;
+ productType = "com.apple.product-type.application";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ 97C146E61CF9000F007C117D /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ LastUpgradeCheck = 1300;
+ ORGANIZATIONNAME = "";
+ TargetAttributes = {
+ 97C146ED1CF9000F007C117D = {
+ CreatedOnToolsVersion = 7.3.1;
+ LastSwiftMigration = 1100;
+ };
+ };
+ };
+ buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */;
+ compatibilityVersion = "Xcode 9.3";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ Base,
+ );
+ mainGroup = 97C146E51CF9000F007C117D;
+ productRefGroup = 97C146EF1CF9000F007C117D /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ 97C146ED1CF9000F007C117D /* Runner */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ 97C146EC1CF9000F007C117D /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */,
+ 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
+ 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
+ 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXShellScriptBuildPhase section */
+ 1FD5323DC8F6BD8475EAA103 /* [CP] Embed Pods Frameworks */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
+ );
+ name = "[CP] Embed Pods Frameworks";
+ outputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
+ 367A74D6DFFF5C6DD1D2A720 /* [CP] Copy Pods Resources */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist",
+ );
+ name = "[CP] Copy Pods Resources";
+ outputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
+ 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "Thin Binary";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
+ };
+ 9740EEB61CF901F6004384FC /* Run Script */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "Run Script";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
+ };
+ 9C01A1C5B6C2CBCCC9ED4A97 /* [CP] Check Pods Manifest.lock */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ );
+ inputPaths = (
+ "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+ "${PODS_ROOT}/Manifest.lock",
+ );
+ name = "[CP] Check Pods Manifest.lock";
+ outputFileListPaths = (
+ );
+ outputPaths = (
+ "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+ showEnvVarsInLog = 0;
+ };
+/* End PBXShellScriptBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 97C146EA1CF9000F007C117D /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */,
+ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */,
+ 0356D147289FE8FE00A7E842 /* MyIdController.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXVariantGroup section */
+ 97C146FA1CF9000F007C117D /* Main.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 97C146FB1CF9000F007C117D /* Base */,
+ );
+ name = Main.storyboard;
+ sourceTree = "";
+ };
+ 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 97C147001CF9000F007C117D /* Base */,
+ );
+ name = LaunchScreen.storyboard;
+ sourceTree = "";
+ };
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+ 249021D3217E4FDB00AE95B9 /* Profile */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ SDKROOT = iphoneos;
+ SUPPORTED_PLATFORMS = iphoneos;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Profile;
+ };
+ 249021D4217E4FDB00AE95B9 /* Profile */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ENABLE_MODULES = YES;
+ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+ DEVELOPMENT_TEAM = CC8U293678;
+ ENABLE_BITCODE = NO;
+ FRAMEWORK_SEARCH_PATHS = (
+ "$(inherited)",
+ "$(PROJECT_DIR)2/libs",
+ "$(PROJECT_DIR)/libs",
+ );
+ INFOPLIST_FILE = Runner/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 10.0;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = com.example.myid;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
+ SWIFT_VERSION = 5.0;
+ VALIDATE_WORKSPACE = YES;
+ VERSIONING_SYSTEM = "apple-generic";
+ };
+ name = Profile;
+ };
+ 97C147031CF9000F007C117D /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
+ MTL_ENABLE_DEBUG_INFO = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ SDKROOT = iphoneos;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+ 97C147041CF9000F007C117D /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ SDKROOT = iphoneos;
+ SUPPORTED_PLATFORMS = iphoneos;
+ SWIFT_COMPILATION_MODE = wholemodule;
+ SWIFT_OPTIMIZATION_LEVEL = "-O";
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+ 97C147061CF9000F007C117D /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ENABLE_MODULES = YES;
+ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+ DEVELOPMENT_TEAM = CC8U293678;
+ ENABLE_BITCODE = NO;
+ FRAMEWORK_SEARCH_PATHS = (
+ "$(inherited)",
+ "$(PROJECT_DIR)2/libs",
+ "$(PROJECT_DIR)/libs",
+ );
+ INFOPLIST_FILE = Runner/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 10.0;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = com.example.myid;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ VALIDATE_WORKSPACE = YES;
+ VERSIONING_SYSTEM = "apple-generic";
+ };
+ name = Debug;
+ };
+ 97C147071CF9000F007C117D /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ENABLE_MODULES = YES;
+ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+ DEVELOPMENT_TEAM = CC8U293678;
+ ENABLE_BITCODE = NO;
+ FRAMEWORK_SEARCH_PATHS = (
+ "$(inherited)",
+ "$(PROJECT_DIR)2/libs",
+ "$(PROJECT_DIR)/libs",
+ );
+ INFOPLIST_FILE = Runner/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 10.0;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = com.example.myid;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
+ SWIFT_VERSION = 5.0;
+ VALIDATE_WORKSPACE = YES;
+ VERSIONING_SYSTEM = "apple-generic";
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 97C147031CF9000F007C117D /* Debug */,
+ 97C147041CF9000F007C117D /* Release */,
+ 249021D3217E4FDB00AE95B9 /* Profile */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 97C147061CF9000F007C117D /* Debug */,
+ 97C147071CF9000F007C117D /* Release */,
+ 249021D4217E4FDB00AE95B9 /* Profile */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = 97C146E61CF9000F007C117D /* Project object */;
+}
diff --git a/flutter-sample/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/flutter-sample/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 0000000000000000000000000000000000000000..919434a6254f0e9651f402737811be6634a03e9c
--- /dev/null
+++ b/flutter-sample/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/flutter-sample/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/flutter-sample/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
new file mode 100644
index 0000000000000000000000000000000000000000..18d981003d68d0546c4804ac2ff47dd97c6e7921
--- /dev/null
+++ b/flutter-sample/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
@@ -0,0 +1,8 @@
+
+
+
+
+ IDEDidComputeMac32BitWarning
+
+
+
diff --git a/flutter-sample/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/flutter-sample/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
new file mode 100644
index 0000000000000000000000000000000000000000..f9b0d7c5ea15f194be85eb6ee8e6721a87ff4644
--- /dev/null
+++ b/flutter-sample/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
@@ -0,0 +1,8 @@
+
+
+
+
+ PreviewsEnabled
+
+
+
diff --git a/flutter-sample/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/flutter-sample/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
new file mode 100644
index 0000000000000000000000000000000000000000..c87d15a335208541da7c11961b0f6d5f6035512e
--- /dev/null
+++ b/flutter-sample/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/flutter-sample/ios/Runner.xcworkspace/contents.xcworkspacedata b/flutter-sample/ios/Runner.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 0000000000000000000000000000000000000000..21a3cc14c74e969ab1548274a8512ebfecc40f78
--- /dev/null
+++ b/flutter-sample/ios/Runner.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
diff --git a/flutter-sample/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/flutter-sample/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
new file mode 100644
index 0000000000000000000000000000000000000000..18d981003d68d0546c4804ac2ff47dd97c6e7921
--- /dev/null
+++ b/flutter-sample/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
@@ -0,0 +1,8 @@
+
+
+
+
+ IDEDidComputeMac32BitWarning
+
+
+
diff --git a/flutter-sample/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/flutter-sample/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
new file mode 100644
index 0000000000000000000000000000000000000000..f9b0d7c5ea15f194be85eb6ee8e6721a87ff4644
--- /dev/null
+++ b/flutter-sample/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
@@ -0,0 +1,8 @@
+
+
+
+
+ PreviewsEnabled
+
+
+
diff --git a/flutter-sample/ios/Runner/AppDelegate.swift b/flutter-sample/ios/Runner/AppDelegate.swift
new file mode 100644
index 0000000000000000000000000000000000000000..709432560855d395e371a7a90487b9551d959d47
--- /dev/null
+++ b/flutter-sample/ios/Runner/AppDelegate.swift
@@ -0,0 +1,40 @@
+import UIKit
+import Flutter
+
+@UIApplicationMain
+@objc class AppDelegate: FlutterAppDelegate {
+ override func application(
+ _ application: UIApplication,
+ didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
+ ) -> Bool {
+ GeneratedPluginRegistrant.register(with: self)
+
+ let controller : FlutterViewController = window?.rootViewController as! FlutterViewController
+ let methodChannel = FlutterMethodChannel(name: "flutter.native/myid", binaryMessenger: controller.binaryMessenger)
+
+ let navigationController = UINavigationController(rootViewController: controller)
+ navigationController.setNavigationBarHidden(true, animated: false)
+ self.window!.rootViewController = navigationController
+ self.window!.makeKeyAndVisible()
+
+ methodChannel.setMethodCallHandler({
+ (call: FlutterMethodCall, result: @escaping FlutterResult) -> Void in
+ if (call.method == "runSDK") {
+ let vc = MyIdController(
+ onResult: { data in
+ result(data)
+ navigationController.dismiss(animated: true)
+ },
+ onCancel: {
+ navigationController.dismiss(animated: true)
+ }
+ )
+ vc.modalPresentationStyle = .pageSheet
+ navigationController.present(vc, animated: true)
+ }
+ })
+
+
+ return super.application(application, didFinishLaunchingWithOptions: launchOptions)
+ }
+}
diff --git a/flutter-sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/flutter-sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..d36b1fab2d9dea668a4f83df94d525897d9e68dd
--- /dev/null
+++ b/flutter-sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,122 @@
+{
+ "images" : [
+ {
+ "size" : "20x20",
+ "idiom" : "iphone",
+ "filename" : "Icon-App-20x20@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "20x20",
+ "idiom" : "iphone",
+ "filename" : "Icon-App-20x20@3x.png",
+ "scale" : "3x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "iphone",
+ "filename" : "Icon-App-29x29@1x.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "iphone",
+ "filename" : "Icon-App-29x29@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "iphone",
+ "filename" : "Icon-App-29x29@3x.png",
+ "scale" : "3x"
+ },
+ {
+ "size" : "40x40",
+ "idiom" : "iphone",
+ "filename" : "Icon-App-40x40@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "40x40",
+ "idiom" : "iphone",
+ "filename" : "Icon-App-40x40@3x.png",
+ "scale" : "3x"
+ },
+ {
+ "size" : "60x60",
+ "idiom" : "iphone",
+ "filename" : "Icon-App-60x60@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "60x60",
+ "idiom" : "iphone",
+ "filename" : "Icon-App-60x60@3x.png",
+ "scale" : "3x"
+ },
+ {
+ "size" : "20x20",
+ "idiom" : "ipad",
+ "filename" : "Icon-App-20x20@1x.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "20x20",
+ "idiom" : "ipad",
+ "filename" : "Icon-App-20x20@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "ipad",
+ "filename" : "Icon-App-29x29@1x.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "ipad",
+ "filename" : "Icon-App-29x29@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "40x40",
+ "idiom" : "ipad",
+ "filename" : "Icon-App-40x40@1x.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "40x40",
+ "idiom" : "ipad",
+ "filename" : "Icon-App-40x40@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "76x76",
+ "idiom" : "ipad",
+ "filename" : "Icon-App-76x76@1x.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "76x76",
+ "idiom" : "ipad",
+ "filename" : "Icon-App-76x76@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "83.5x83.5",
+ "idiom" : "ipad",
+ "filename" : "Icon-App-83.5x83.5@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "1024x1024",
+ "idiom" : "ios-marketing",
+ "filename" : "Icon-App-1024x1024@1x.png",
+ "scale" : "1x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
diff --git a/flutter-sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/flutter-sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
new file mode 100644
index 0000000000000000000000000000000000000000..dc9ada4725e9b0ddb1deab583e5b5102493aa332
Binary files /dev/null and b/flutter-sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png differ
diff --git a/flutter-sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/flutter-sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
new file mode 100644
index 0000000000000000000000000000000000000000..28c6bf03016f6c994b70f38d1b7346e5831b531f
Binary files /dev/null and b/flutter-sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png differ
diff --git a/flutter-sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/flutter-sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..2ccbfd967d9697cd4b83225558af2911e9571c9b
Binary files /dev/null and b/flutter-sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png differ
diff --git a/flutter-sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/flutter-sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
new file mode 100644
index 0000000000000000000000000000000000000000..f091b6b0bca859a3f474b03065bef75ba58a9e4c
Binary files /dev/null and b/flutter-sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png differ
diff --git a/flutter-sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/flutter-sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
new file mode 100644
index 0000000000000000000000000000000000000000..4cde12118dda48d71e01fcb589a74d069c5d7cb5
Binary files /dev/null and b/flutter-sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png differ
diff --git a/flutter-sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/flutter-sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..d0ef06e7edb86cdfe0d15b4b0d98334a86163658
Binary files /dev/null and b/flutter-sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png differ
diff --git a/flutter-sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/flutter-sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
new file mode 100644
index 0000000000000000000000000000000000000000..dcdc2306c28505ebc0b6c3a359c4d252bf626b9f
Binary files /dev/null and b/flutter-sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png differ
diff --git a/flutter-sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/flutter-sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
new file mode 100644
index 0000000000000000000000000000000000000000..2ccbfd967d9697cd4b83225558af2911e9571c9b
Binary files /dev/null and b/flutter-sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png differ
diff --git a/flutter-sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/flutter-sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..c8f9ed8f5cee1c98386d13b17e89f719e83555b2
Binary files /dev/null and b/flutter-sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png differ
diff --git a/flutter-sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/flutter-sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
new file mode 100644
index 0000000000000000000000000000000000000000..a6d6b8609df07bf62e5100a53a01510388bd2b22
Binary files /dev/null and b/flutter-sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png differ
diff --git a/flutter-sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/flutter-sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..a6d6b8609df07bf62e5100a53a01510388bd2b22
Binary files /dev/null and b/flutter-sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png differ
diff --git a/flutter-sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/flutter-sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
new file mode 100644
index 0000000000000000000000000000000000000000..75b2d164a5a98e212cca15ea7bf2ab5de5108680
Binary files /dev/null and b/flutter-sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png differ
diff --git a/flutter-sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/flutter-sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
new file mode 100644
index 0000000000000000000000000000000000000000..c4df70d39da7941ef3f6dcb7f06a192d8dcb308d
Binary files /dev/null and b/flutter-sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png differ
diff --git a/flutter-sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/flutter-sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..6a84f41e14e27f4b11f16f9ee39279ac98f8d5ac
Binary files /dev/null and b/flutter-sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png differ
diff --git a/flutter-sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/flutter-sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..d0e1f58536026aebc4f1f70e481f6993c9ff088d
Binary files /dev/null and b/flutter-sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png differ
diff --git a/flutter-sample/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/flutter-sample/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..0bedcf2fd46788ae3a01a423467513ff59b5c120
--- /dev/null
+++ b/flutter-sample/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "LaunchImage.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "LaunchImage@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "LaunchImage@3x.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
diff --git a/flutter-sample/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/flutter-sample/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
new file mode 100644
index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838
Binary files /dev/null and b/flutter-sample/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png differ
diff --git a/flutter-sample/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/flutter-sample/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838
Binary files /dev/null and b/flutter-sample/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png differ
diff --git a/flutter-sample/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/flutter-sample/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
new file mode 100644
index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838
Binary files /dev/null and b/flutter-sample/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png differ
diff --git a/flutter-sample/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/flutter-sample/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..89c2725b70f1882be97f5214fafe22d27a0ec01e
--- /dev/null
+++ b/flutter-sample/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md
@@ -0,0 +1,5 @@
+# Launch Screen Assets
+
+You can customize the launch screen with your own desired assets by replacing the image files in this directory.
+
+You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images.
\ No newline at end of file
diff --git a/flutter-sample/ios/Runner/Base.lproj/LaunchScreen.storyboard b/flutter-sample/ios/Runner/Base.lproj/LaunchScreen.storyboard
new file mode 100644
index 0000000000000000000000000000000000000000..f2e259c7c9390ff69a6bbe1e0907e6dc366848e7
--- /dev/null
+++ b/flutter-sample/ios/Runner/Base.lproj/LaunchScreen.storyboard
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/flutter-sample/ios/Runner/Base.lproj/Main.storyboard b/flutter-sample/ios/Runner/Base.lproj/Main.storyboard
new file mode 100644
index 0000000000000000000000000000000000000000..f3c28516fb38e64d88cfcf5fb1791175df078f2f
--- /dev/null
+++ b/flutter-sample/ios/Runner/Base.lproj/Main.storyboard
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/flutter-sample/ios/Runner/Info.plist b/flutter-sample/ios/Runner/Info.plist
new file mode 100644
index 0000000000000000000000000000000000000000..6a69092181d0a37a6175e74e5b569ec5272c097a
--- /dev/null
+++ b/flutter-sample/ios/Runner/Info.plist
@@ -0,0 +1,49 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleDisplayName
+ Myid
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ myid
+ CFBundlePackageType
+ APPL
+ CFBundleShortVersionString
+ $(FLUTTER_BUILD_NAME)
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ $(FLUTTER_BUILD_NUMBER)
+ LSRequiresIPhoneOS
+
+ UILaunchStoryboardName
+ LaunchScreen
+ UIMainStoryboardFile
+ Main
+ UISupportedInterfaceOrientations
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ UISupportedInterfaceOrientations~ipad
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationPortraitUpsideDown
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ UIViewControllerBasedStatusBarAppearance
+
+ CADisableMinimumFrameDurationOnPhone
+
+
+
diff --git a/flutter-sample/ios/Runner/MyIdController.swift b/flutter-sample/ios/Runner/MyIdController.swift
new file mode 100644
index 0000000000000000000000000000000000000000..f1209f5c46e53df429804c6f933573e0d7e72862
--- /dev/null
+++ b/flutter-sample/ios/Runner/MyIdController.swift
@@ -0,0 +1,70 @@
+//
+// MyIdController.swift
+// Runner
+//
+// Created by Azamat on 07/08/22.
+//
+
+import UIKit
+import MyIdSDK
+
+class MyIdController: UIViewController {
+
+ var onResult: (String) -> Void
+ var onCancel: () -> Void
+
+ init(onResult: @escaping (String) -> Void, onCancel: @escaping () -> Void) {
+ self.onResult = onResult
+ self.onCancel = onCancel
+
+ super.init(nibName: nil, bundle: nil)
+ }
+
+ required init?(coder: NSCoder) {
+ fatalError("init(coder:) has not been implemented")
+ }
+
+ override func viewDidAppear(_ animated: Bool) {
+ MyIdSdk.start(withConfigureOptions: { options in
+ options?.clientId = "YOUR_CLIENT_ID"
+ options?.locale = .UZ
+ }, withDelegate: self)
+ }
+
+ func toJson(json: [String: Any]) -> String {
+ do {
+ let data = try JSONSerialization.data(withJSONObject: json)
+ return String(data: data, encoding: String.Encoding.utf8) ?? ""
+ } catch let JSONError {
+ print(JSONError)
+ }
+
+ return ""
+ }
+}
+
+extension MyIdController: MyIdSdkDelegate {
+
+ func myidOnSuccess(result: MyIdResult) {
+ let jsonObject: [String: Any] = [
+ "code": result.code ?? "",
+ ]
+
+ onResult(toJson(json: jsonObject))
+ }
+
+ func myidOnError(exception: MyIdException) {
+ let jsonObject: [String: Any] = [
+ "error": [
+ "code": exception.code,
+ "message": exception.message,
+ ],
+ ]
+
+ onResult(toJson(json: jsonObject))
+ }
+
+ func myidOnUserExited() {
+ onCancel()
+ }
+}
diff --git a/flutter-sample/ios/Runner/Runner-Bridging-Header.h b/flutter-sample/ios/Runner/Runner-Bridging-Header.h
new file mode 100644
index 0000000000000000000000000000000000000000..308a2a560b42f17aaf3c36e4e9c8cd07182fbb7e
--- /dev/null
+++ b/flutter-sample/ios/Runner/Runner-Bridging-Header.h
@@ -0,0 +1 @@
+#import "GeneratedPluginRegistrant.h"
diff --git a/flutter-sample/lib/main.dart b/flutter-sample/lib/main.dart
new file mode 100644
index 0000000000000000000000000000000000000000..e4de347947b04157e8acec907f71f9389135a349
--- /dev/null
+++ b/flutter-sample/lib/main.dart
@@ -0,0 +1,67 @@
+import 'package:flutter/material.dart';
+import 'package:flutter/services.dart';
+
+void main() {
+ runApp(const App());
+}
+
+class App extends StatelessWidget {
+ const App({Key? key}) : super(key: key);
+
+ @override
+ Widget build(BuildContext context) {
+ return const MaterialApp(
+ title: 'AppName',
+ debugShowCheckedModeBanner: false,
+ themeMode: ThemeMode.light,
+ home: View(),
+ );
+ }
+}
+
+class View extends StatefulWidget {
+ const View({Key? key}) : super(key: key);
+
+ static const platform = MethodChannel('flutter.native/myid');
+
+ @override
+ State createState() => _ViewState();
+}
+
+class _ViewState extends State {
+ var result = "";
+
+ @override
+ Widget build(BuildContext context) {
+ return Center(
+ child: Column(
+ mainAxisAlignment: MainAxisAlignment.center,
+ children: [
+ TextButton(
+ onPressed: () {
+ View.platform.invokeMethod('runSDK', {
+ 'KEY_PHONE_NUMBER': "1234567", // Organization phone number
+ 'KEY_CLIENT_ID': "",
+ 'KEY_PASSPORT_DATA': "AB1234567",
+ 'KEY_DATE_OF_BIRTH': "01.09.1999", // Format: dd.MM.yyyy
+ 'KEY_SDK_HASH': "", // Optional
+ 'KEY_EXTERNAL_ID': "", // Optional
+ 'KEY_THRESHOLD': 0.5, // 0.5 until 1.0
+ 'KEY_BUILD_MODE': "PRODUCTION", // PRODUCTION or DEBUG
+ 'KEY_ENTRY_TYPE': "AUTH", // AUTH or FACE
+ 'KEY_LOCALE': "uz", // uz, en, ru
+ 'KEY_CAMERA_SHAPE': "CIRCLE", // CIRCLE or ELLIPSE
+ 'KEY_WITH_PHOTO': false
+ }).then((value) => setState(() => result = value));
+ },
+ child: const Text("Run myID SDK"),
+ ),
+ Text(
+ "Result is: " + result,
+ style: const TextStyle(fontSize: 26),
+ ),
+ ],
+ ),
+ );
+ }
+}
diff --git a/flutter-sample/pubspec.lock b/flutter-sample/pubspec.lock
new file mode 100644
index 0000000000000000000000000000000000000000..779e035b1326e4f1732fcf713ef37af78a38a578
--- /dev/null
+++ b/flutter-sample/pubspec.lock
@@ -0,0 +1,167 @@
+# Generated by pub
+# See https://dart.dev/tools/pub/glossary#lockfile
+packages:
+ async:
+ dependency: transitive
+ description:
+ name: async
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "2.8.2"
+ boolean_selector:
+ dependency: transitive
+ description:
+ name: boolean_selector
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "2.1.0"
+ characters:
+ dependency: transitive
+ description:
+ name: characters
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.2.0"
+ charcode:
+ dependency: transitive
+ description:
+ name: charcode
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.3.1"
+ clock:
+ dependency: transitive
+ description:
+ name: clock
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.1.0"
+ collection:
+ dependency: transitive
+ description:
+ name: collection
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.16.0"
+ cupertino_icons:
+ dependency: "direct main"
+ description:
+ name: cupertino_icons
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.0.5"
+ fake_async:
+ dependency: transitive
+ description:
+ name: fake_async
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.3.0"
+ flutter:
+ dependency: "direct main"
+ description: flutter
+ source: sdk
+ version: "0.0.0"
+ flutter_lints:
+ dependency: "direct dev"
+ description:
+ name: flutter_lints
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.0.4"
+ flutter_test:
+ dependency: "direct dev"
+ description: flutter
+ source: sdk
+ version: "0.0.0"
+ lints:
+ dependency: transitive
+ description:
+ name: lints
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.0.1"
+ matcher:
+ dependency: transitive
+ description:
+ name: matcher
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "0.12.11"
+ material_color_utilities:
+ dependency: transitive
+ description:
+ name: material_color_utilities
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "0.1.4"
+ meta:
+ dependency: transitive
+ description:
+ name: meta
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.7.0"
+ path:
+ dependency: transitive
+ description:
+ name: path
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.8.1"
+ sky_engine:
+ dependency: transitive
+ description: flutter
+ source: sdk
+ version: "0.0.99"
+ source_span:
+ dependency: transitive
+ description:
+ name: source_span
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.8.2"
+ stack_trace:
+ dependency: transitive
+ description:
+ name: stack_trace
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.10.0"
+ stream_channel:
+ dependency: transitive
+ description:
+ name: stream_channel
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "2.1.0"
+ string_scanner:
+ dependency: transitive
+ description:
+ name: string_scanner
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.1.0"
+ term_glyph:
+ dependency: transitive
+ description:
+ name: term_glyph
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.2.0"
+ test_api:
+ dependency: transitive
+ description:
+ name: test_api
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "0.4.9"
+ vector_math:
+ dependency: transitive
+ description:
+ name: vector_math
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "2.1.2"
+sdks:
+ dart: ">=2.17.0-0 <3.0.0"
diff --git a/flutter-sample/pubspec.yaml b/flutter-sample/pubspec.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..6bfe5151b0c9eb79dc9ed363fbe03010732d2c6e
--- /dev/null
+++ b/flutter-sample/pubspec.yaml
@@ -0,0 +1,89 @@
+name: example
+description: A new Flutter project.
+
+# The following line prevents the package from being accidentally published to
+# pub.dev using `flutter pub publish`. This is preferred for private packages.
+publish_to: 'none' # Remove this line if you wish to publish to pub.dev
+
+# The following defines the version and build number for your application.
+# A version number is three numbers separated by dots, like 1.2.43
+# followed by an optional build number separated by a +.
+# Both the version and the builder number may be overridden in flutter
+# build by specifying --build-name and --build-number, respectively.
+# In Android, build-name is used as versionName while build-number used as versionCode.
+# Read more about Android versioning at https://developer.android.com/studio/publish/versioning
+# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
+# Read more about iOS versioning at
+# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
+version: 1.0.0+1
+
+environment:
+ sdk: ">=2.16.2 <3.0.0"
+
+# Dependencies specify other packages that your package needs in order to work.
+# To automatically upgrade your package dependencies to the latest versions
+# consider running `flutter pub upgrade --major-versions`. Alternatively,
+# dependencies can be manually updated by changing the version numbers below to
+# the latest version available on pub.dev. To see which dependencies have newer
+# versions available, run `flutter pub outdated`.
+dependencies:
+ flutter:
+ sdk: flutter
+
+
+ # The following adds the Cupertino Icons font to your application.
+ # Use with the CupertinoIcons class for iOS style icons.
+ cupertino_icons: ^1.0.2
+
+dev_dependencies:
+ flutter_test:
+ sdk: flutter
+
+ # The "flutter_lints" package below contains a set of recommended lints to
+ # encourage good coding practices. The lint set provided by the package is
+ # activated in the `analysis_options.yaml` file located at the root of your
+ # package. See that file for information about deactivating specific lint
+ # rules and activating additional ones.
+ flutter_lints: ^1.0.0
+
+# For information on the generic Dart part of this file, see the
+# following page: https://dart.dev/tools/pub/pubspec
+
+# The following section is specific to Flutter.
+flutter:
+
+ # The following line ensures that the Material Icons font is
+ # included with your application, so that you can use the icons in
+ # the material Icons class.
+ uses-material-design: true
+
+ # To add assets to your application, add an assets section, like this:
+ # assets:
+ # - images/a_dot_burr.jpeg
+ # - images/a_dot_ham.jpeg
+
+ # An image asset can refer to one or more resolution-specific "variants", see
+ # https://flutter.dev/assets-and-images/#resolution-aware.
+
+ # For details regarding adding assets from package dependencies, see
+ # https://flutter.dev/assets-and-images/#from-packages
+
+ # To add custom fonts to your application, add a fonts section here,
+ # in this "flutter" section. Each entry in this list should have a
+ # "family" key with the font family name, and a "fonts" key with a
+ # list giving the asset and other descriptors for the font. For
+ # example:
+ # fonts:
+ # - family: Schyler
+ # fonts:
+ # - asset: fonts/Schyler-Regular.ttf
+ # - asset: fonts/Schyler-Italic.ttf
+ # style: italic
+ # - family: Trajan Pro
+ # fonts:
+ # - asset: fonts/TrajanPro.ttf
+ # - asset: fonts/TrajanPro_Bold.ttf
+ # weight: 700
+ #
+ # For details regarding fonts from package dependencies,
+ # see https://flutter.dev/custom-fonts/#from-packages
diff --git a/local.properties b/local.properties
deleted file mode 100644
index a4628bc4eb664b4a00a4f22126dfaa5aeee35435..0000000000000000000000000000000000000000
--- a/local.properties
+++ /dev/null
@@ -1 +0,0 @@
-sdk.dir=/Users/javokhir/Library/Android/sdk
\ No newline at end of file