flutter如何实现app link功能
在Flutter中如何实现App Link功能?需要配置哪些Android和iOS的原生设置?有没有具体的代码示例或插件推荐?处理深度链接时需要注意哪些常见问题?
2 回复
在Flutter中实现App Link功能,需在pubspec.yaml添加uni_links依赖。然后在Android的AndroidManifest.xml和iOS的Info.plist中配置URL Scheme和关联域名。最后在Flutter代码中监听链接并处理跳转逻辑。
更多关于flutter如何实现app link功能的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter中实现App Link功能(也称为深度链接)主要通过以下步骤实现:
1. 配置Android和iOS原生设置
Android配置:
在 android/app/src/main/AndroidManifest.xml 中添加intent过滤器:
<activity android:name=".MainActivity">
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:scheme="https"
android:host="yourdomain.com"
android:pathPrefix="/path" />
</intent-filter>
</activity>
iOS配置:
在 ios/Runner/Info.plist 中添加:
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>yourdomain.com</string>
<key>CFBundleURLSchemes</key>
<array>
<string>https</string>
</array>
</dict>
</array>
2. Flutter端处理链接
使用 uni_links 包处理应用内链接解析:
安装依赖:
dependencies:
uni_links: ^0.5.1
代码实现:
import 'package:uni_links/uni_links.dart';
class DeepLinkHandler {
StreamSubscription? _sub;
void initDeepLinks() {
_sub = getUriLinksStream().listen((Uri uri) {
handleDeepLink(uri);
});
}
void handleDeepLink(Uri uri) {
// 根据uri路径处理不同页面
if (uri.pathSegments.contains('product')) {
// 跳转到商品页面
Navigator.pushNamed(context, '/product', arguments: uri.queryParameters['id']);
}
}
void dispose() {
_sub?.cancel();
}
}
3. 处理冷启动场景
在 main.dart 中获取初始链接:
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 获取初始链接
Uri? initialUri = await getInitialUri();
if (initialUri != null) {
handleDeepLink(initialUri);
}
runApp(MyApp());
}
4. 域名验证(Android App Links)
- 在
https://yourdomain.com/.well-known/assetlinks.json放置数字资产链接文件 - 文件内容示例:
{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "com.yourapp.package",
"sha256_cert_fingerprints": ["YOUR_APP_SHA256_FINGERPRINT"]
}
}
注意事项:
- 测试时使用
adb命令:adb shell am start -W -a android.intent.action.VIEW -d "https://yourdomain.com/path" - iOS需要在开发者账户配置Associated Domains
- 确保URL Scheme在所有场景下都能正确响应
通过以上配置,即可在Flutter应用中实现完整的App Link功能,支持从网页链接直接跳转到应用指定页面。

