{"id":26223311,"url":"https://github.com/rxreader/link_kit","last_synced_at":"2026-03-03T20:33:25.628Z","repository":{"id":53930140,"uuid":"518050272","full_name":"RxReader/link_kit","owner":"RxReader","description":"Flutter plugin for App/Deep Link.","archived":false,"fork":false,"pushed_at":"2023-06-08T07:50:46.000Z","size":166,"stargazers_count":8,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2023-08-09T13:42:34.537Z","etag":null,"topics":["applink","deeplink","flutter","link"],"latest_commit_sha":null,"homepage":"","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RxReader.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-07-26T12:22:35.000Z","updated_at":"2023-07-26T19:24:33.000Z","dependencies_parsed_at":"2023-02-18T06:01:01.854Z","dependency_job_id":null,"html_url":"https://github.com/RxReader/link_kit","commit_stats":null,"previous_names":[],"tags_count":0,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RxReader%2Flink_kit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RxReader%2Flink_kit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RxReader%2Flink_kit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RxReader%2Flink_kit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RxReader","download_url":"https://codeload.github.com/RxReader/link_kit/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243261789,"owners_count":20262906,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["applink","deeplink","flutter","link"],"created_at":"2025-03-12T17:30:53.590Z","updated_at":"2026-03-03T20:33:25.573Z","avatar_url":"https://github.com/RxReader.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"# link_kit\n\nFlutter plugin for Deep Link/App Link/Universal Links.\n\n## ⚠️⚠️⚠️\n\n* link_kit 1.0.0 配置并不与 0.0.x 兼容，请手动删除 0.0.x 配置\n* 因为 Android 的 manifestPlaceholders 能力有限，又懒得写需要兼容各版本的 Gradle 插件，所以默认只支持配置一个 DeepLink/AppLink/UniversalLink\n\n## Android\n\n#### 文档\n\n* [创建指向应用内容的深层链接](https://developer.android.com/training/app-links/deep-linking)\n* [添加 Android 应用链接](https://developer.android.com/studio/write/app-link-indexing.html)\n* [simonmarquis/Android App Linking](https://simonmarquis.github.io/Android-App-Linking/)\n* [Statement List Generator and Tester](https://developers.google.com/digital-asset-links/tools/generator)\n\n#### 配置\n\n```\n# 不需要做任何额外接入工作\n# 配置已集成到脚本里\n```\n\n* App Links\n\nassetlinks.json - 通过 https://${your applinks domain}/.well-known/assetlinks.json 链接可访问\n\n示例:\n\nhttps://${your applinks domain}/universal_link/${example_app}/link_kit/\n\n```json\n[\n  {\n    \"relation\": [\n      \"delegate_permission/common.handle_all_urls\"\n    ],\n    \"target\": {\n      \"namespace\": \"android_app\",\n      \"package_name\": \"your_app_package_name\",\n      \"sha256_cert_fingerprints\": [\n        \"your_app_package_fingerprint_sha256\"\n      ]\n    }\n  }\n]\n```\n\n\u003e [获取 Android 签名信息](https://github.com/RxReader/wechat_kit#android)\n\n#### 测试\n\n```shell\n# Deep Link\nadb shell am start -a android.intent.action.VIEW -c android.intent.category.BROWSABLE -d \"flk:///power\"\n```\n\n```shell\n# App Link\nadb shell am start -a android.intent.action.VIEW -c android.intent.category.BROWSABLE -d \"https://www.yourdomain.com/universal_link/example_app/link_kit/power\"\n```\n\n## iOS\n\n#### 文档\n\n[Support Universal Links](https://developer.apple.com/library/archive/documentation/General/Conceptual/AppSearch/UniversalLinks.html)\n\n#### 配置\n\n```\n# 不需要做任何额外接入工作\n# 配置已集成到脚本里\n```\n\n* Universal Links\n\napple-app-site-association - 通过 https://${your applinks domain}/.well-known/apple-app-site-association 链接可访问\n\n示例:\n\nhttps://${your applinks domain}/universal_link/${example_app}/link_kit/\n\n```json\n{\n  \"applinks\": {\n    \"apps\": [],\n    \"details\": [\n      {\n        \"appID\": \"${your team id}.${your app bundle id}\",\n        \"paths\": [\n          \"/universal_link/${example_app}/link_kit/*\"\n        ]\n      }\n    ]\n  }\n}\n```\n\n\u003e ⚠️ 很多 SDK 都会用到 universal_link，可为不同 SDK 分配不同的 path 以作区分\n\n#### 测试\n\n```shell\n# Deep Link\nxcrun simctl openurl booted flk:///power\n```\n\n```shell\n# Universal Links\nxcrun simctl openurl booted https://www.yourdomain.com/universal_link/example_app/link_kit/power\n```\n\n## Flutter\n\n#### 配置\n\n```yaml\ndependencies:\n  link_kit: ^${latestTag}\n#  link_kit:\n#    git:\n#      url: https://github.com/RxReader/link_kit.git\n\nlink_kit:\n  deep_link: ${your deep link scheme}:///\n  android:\n    app_link: https://${your applinks domain}/universal_link/${example_app}/link_kit/ # 可选配置\n  ios:\n    universal_link: https://${your applinks domain}/universal_link/${example_app}/link_kit/ # 可选配置\n```\n\n#### 安装\n\n```shell\n# Android\n# 修改配置后，必须执行 flutter clean 清理中间编译产物 BuildConfig.java\n# step.1 切换工作目录\ncd example/\n# step.2\nflutter clean \u0026\u0026 flutter pub get\n```\n\n```shell\n# iOS\n# 首次/修改配置后，必须执行 pod install 让配置生效\n# step.0 安装必要依赖\nsudo gem install plist\n# step.1 切换工作目录\ncd example/\n# step.2\nflutter clean \u0026\u0026 flutter pub get\n# step.3 执行脚本\ncd ios/\npod install\n```\n\n#### 编码\n\n```dart\n    _linkClickSubs = LinkKitPlatform.instance.linkClickStream().listen((String event) {\n      if (kDebugMode) {\n        print('linkClick: $event');\n      }\n      setState(() {\n        _link = event;\n      });\n    });\n    LinkKitPlatform.instance.getInitialLink().then((String? value) {\n      if (kDebugMode) {\n        print('initialLink: $value');\n      }\n      setState(() {\n        _link = value;\n      });\n    });\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frxreader%2Flink_kit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frxreader%2Flink_kit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frxreader%2Flink_kit/lists"}