diff --git a/native-apps/unity_ii_applink/README.md b/native-apps/unity_ii_applink/README.md
index 8880d7407..1c1fafe35 100644
--- a/native-apps/unity_ii_applink/README.md
+++ b/native-apps/unity_ii_applink/README.md
@@ -11,15 +11,22 @@ This is a Unity project with [ICP.NET](https://github.com/BoomDAO/ICP.NET) embed
## Workflow
Before continuing, please read through the [Android App Links](https://developer.android.com/studio/write/app-link-indexing) to understand how Android App Links works.
-Here is the basic workflow that how to integrate with Internet Identity from a Unity Android game. The basic idea is to open the Web Browser from the game, login in with II in the browser, and pass the DelegationIdentity back to the game.
+Here is the basic workflow that how to integrate with Internet Identity from a Unity Android game. The basic idea is to open the Web Browser from the game, login in with II in the browser, and pass the `DelegationChain` back to the game.
The steps in detail are described below:
1. Set up an [Internet Identity integration dapp](#ii_integration_dapp) which supports logging in with II, with an `assetlinks.json` file associated.
Please refer to [ii_integration_dapp](./ii_integration_dapp/README.md) to set up the dapp.
+
2. Run a Unity game on Android, which is built from [android_integration sample](#unity_project).
Please refer to [unity_project](./unity_project/README.md) to build the Unity Android game.
+
3. Launch the Web Browser from the game to open the dapp frontend deployed in #1, with the public key of `Ed25519Identity` as a parameter.
+
4. Login with your Internet Identity in the Web Browser.
-5. Launch the application via App Links, and pass the `DelegationIdentity` back to the game as the URL parameter.
-6. Call the backend canister with the `DelegationIdentity` to greet.
+
+5. Launch the application via App Links, and pass the `DelegationChain` back to the game as the URL parameter.
+
+6. Composite the `DelegationIdentity` with `DelegationChain` and the `Ed25519Identity`.
+
+7. Call the backend canister with the `DelegationIdentity` to greet.
diff --git a/native-apps/unity_ii_applink/ii_integration_dapp/README.md b/native-apps/unity_ii_applink/ii_integration_dapp/README.md
index 4592266ea..f16c221ba 100644
--- a/native-apps/unity_ii_applink/ii_integration_dapp/README.md
+++ b/native-apps/unity_ii_applink/ii_integration_dapp/README.md
@@ -4,13 +4,15 @@ This example derives from the [internet_identity_integration](https://github.com
## Overview
-This example shows a special case to support login with the `IncompleteEd25519KeyIdentity` which only contains the public key. The reason why we support this is all for security.
+This example shows a use case to support login with the two delegations on the `DelegationChain`.
As we described in [Internet Identity Integration](../README.md#workflow), users can log in with II from the game. Usually what they do is
1. Generate the `Ed25519KeyIdentity` supported by [ICP.NET](https://github.com/BoomDAO/ICP.NET) in the Unity game.
-2. For security purposes, only pass the public key of the `Ed25519KeyIdentity` to the Web browser for login, this is where `IncompleteEd25519KeyIdentity` can be used for.
-3. In [index.js](./src/greet_frontend/src/index.js), we describe how to retrieve the public key of the `Ed25519Identity` from the URL parameter, use it to instantiate an `IncompleteEd25519KeyIdentity`, and log in with Internet Identity.
+2. For security purposes, only pass the public key of the `Ed25519KeyIdentity` to the Web browser for login. And only the public key is necessary when creating a `DelegationChain`.
+3. In [index.js](./src/greet_frontend/src/index.js), we describe how to
+ - log in with Internet Identity with the frontend generated session key
+ - retrieve the public key of the `Ed25519Identity` from the URL parameter and create another delegation with it.
With this, users don't need to pass the private key around, also they don't need to store the private key outside of the game as they can regenerate the key pairs for every session.
diff --git a/native-apps/unity_ii_applink/ii_integration_dapp/canister_ids.json b/native-apps/unity_ii_applink/ii_integration_dapp/canister_ids.json
new file mode 100644
index 000000000..6b0f9fa0c
--- /dev/null
+++ b/native-apps/unity_ii_applink/ii_integration_dapp/canister_ids.json
@@ -0,0 +1,8 @@
+{
+ "greet_backend": {
+ "ic": "72rj2-biaaa-aaaan-qdatq-cai"
+ },
+ "greet_frontend": {
+ "ic": "6x7nu-oaaaa-aaaan-qdaua-cai"
+ }
+}
\ No newline at end of file
diff --git a/native-apps/unity_ii_applink/ii_integration_dapp/src/greet_frontend/assets/.well-known/assetlinks.json b/native-apps/unity_ii_applink/ii_integration_dapp/src/greet_frontend/assets/.well-known/assetlinks.json
index 49a4f1c11..88d52e098 100644
--- a/native-apps/unity_ii_applink/ii_integration_dapp/src/greet_frontend/assets/.well-known/assetlinks.json
+++ b/native-apps/unity_ii_applink/ii_integration_dapp/src/greet_frontend/assets/.well-known/assetlinks.json
@@ -2,8 +2,8 @@
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
- "package_name": "com.DefaultCompany.II_AppLink_Integration",
+ "package_name": "com.dfinity.ii_applink_integration",
"sha256_cert_fingerprints":
- ["86:C9:CA:6F:5A:53:7E:75:9C:D7:29:1E:8A:94:90:BE:90:0B:02:12:40:45:19:B6:65:84:3C:02:AB:B5:97:14"]
+ ["A3:E2:36:BC:E9:04:3F:8F:A9:C5:9B:B5:FE:89:95:C8:08:BA:35:2D:07:D8:76:13:65:A9:27:D6:33:6B:44:6E"]
}
}]
\ No newline at end of file
diff --git a/native-apps/unity_ii_applink/ii_integration_dapp/src/greet_frontend/src/index.html b/native-apps/unity_ii_applink/ii_integration_dapp/src/greet_frontend/src/index.html
index b2c95ec09..93b7e0415 100644
--- a/native-apps/unity_ii_applink/ii_integration_dapp/src/greet_frontend/src/index.html
+++ b/native-apps/unity_ii_applink/ii_integration_dapp/src/greet_frontend/src/index.html
@@ -21,6 +21,10 @@
+