Flutter Facebook Deeplinks集成插件flutter_facebook_deeplinks的使用
Flutter Facebook Deeplinks集成插件flutter_facebook_deeplinks的使用
Flutter插件用于支持Facebook App Links SDK。此插件必须用于捕获从Facebook广告安装应用后发送的延迟深度链接。
开始使用
首先,如果没有现有账户,请先在Facebook开发者平台创建一个应用:https://developers.facebook.com/(网址已去除)
获取您的应用ID(以下用[APP_ID]
表示)。
配置Android
对于Android配置,可以遵循与Flutter Facebook App Events插件相同的说明:
阅读"Android App Events入门教程",并特别注意步骤2,通过在/app/res/values/strings.xml
(或相应的debug
或release
构建版本)中添加以下内容:
<string name="facebook_app_id">[APP_ID]</string>
之后,在主AndroidManifest.xml
文件中添加该字符串资源引用:
<meta-data
android:name="com.facebook.sdk.ApplicationId"
android:value="@string/facebook_app_id" />
配置iOS
对于iOS配置,可以遵循与Flutter Facebook App Events插件相同的说明:
阅读"iOS App Events入门教程",并特别注意步骤4,通过以源代码形式打开info.plist
并添加以下内容:
- 如果代码中没有
CFBundleURLTypes
,请在最后的</dict>
元素之前添加以下内容:
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>fb[APP_ID]</string>
</array>
</dict>
</array>
<key>FacebookAppID</key>
<string>[APP_ID]</string>
<key>FacebookDisplayName</key>
<string>[APP_NAME]</string>
- 如果代码中已有
CFBundleURLTypes
,请插入以下内容:
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>fb[APP_ID]</string>
</array>
</dict>
</array>
<key>FacebookAppID</key>
<string>[APP_ID]</string>
<key>FacebookDisplayName</key>
<string>[APP_NAME]</string>
关于Facebook App Links
重要提示
用户隐私 [切勿忽略]
根据Facebook文档,从SDK v5.0.0开始,他们引入了一个标志来禁用自动SDK初始化以符合GDPR规定。
这意味着您应该在调用此插件的initFBLinks()
方法之前收集用户同意,并保存用户的选项。此外,您还应给用户提供在未来撤销其同意的机会。
请注意,此插件默认情况下在Android上使用FacebookSDK.setAutoInitEnabled(true)
,在iOS上使用Settings.isAutoInitEnabled = true
,因此在调用FlutterFacebookAppLinks.initFBLinks()
之前,您必须在Dart代码中授予同意。
测试延迟深度链接
为了正确测试延迟深度链接,请勿使用FB广告系列的预览功能。 相反,请使用此工具APP ADS HELPER。
在页面底部会找到一个“测试深度链接”按钮,
点击它并输入自定义URL方案(深度链接),例如:myawesomeapp://screen/login
选择第二个复选框(或两者都选)。记住,为了让它工作,您需要在设备上安装Facebook应用(Android或iPhone),并且必须使用与Facebook开发者控制台相同的帐户登录。
您的应用无需发布到商店,只需卸载它,然后使用Android Studio/VSCode或XCode重新安装即可在发送延迟深度链接后运行。
完整示例Demo
以下是一个完整的示例代码,展示如何在Flutter中集成flutter_facebook_deeplinks
插件:
import 'package:flutter/material.dart';
import 'package:flutter_facebook_deeplinks/flutter_facebook_deeplinks.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: HomeScreen(),
);
}
}
class HomeScreen extends StatefulWidget {
[@override](/user/override)
_HomeScreenState createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
String _deepLinkUrl = '';
[@override](/user/override)
void initState() {
super.initState();
// 初始化Facebook深度链接插件
initFacebookDeepLinks();
}
Future<void> initFacebookDeepLinks() async {
try {
// 请求用户同意
bool consentGranted = await requestUserConsent();
if (consentGranted) {
// 初始化Facebook深度链接
await FlutterFacebookAppLinks.initFBLinks();
// 监听深度链接事件
FlutterFacebookAppLinks.onDeepLink.listen((event) {
setState(() {
_deepLinkUrl = event.url.toString();
});
});
} else {
print('用户未同意使用Facebook深度链接');
}
} catch (e) {
print('初始化失败: $e');
}
}
Future<bool> requestUserConsent() async {
// 模拟请求用户同意(实际应用中可替换为弹窗)
return true;
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Facebook Deep Links Demo'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('接收到的深度链接:'),
SizedBox(height: 10),
Text(_deepLinkUrl),
],
),
),
);
}
}
更多关于Flutter Facebook Deeplinks集成插件flutter_facebook_deeplinks的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter Facebook Deeplinks集成插件flutter_facebook_deeplinks的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
flutter_facebook_deeplinks
是一个 Flutter 插件,用于处理 Facebook 的深度链接(Deep Links)。它可以帮助你在应用中处理来自 Facebook 的深度链接,以便在用户点击 Facebook 广告或帖子时,能够直接跳转到应用中的特定页面。
安装插件
首先,你需要在 pubspec.yaml
文件中添加 flutter_facebook_deeplinks
插件的依赖:
dependencies:
flutter:
sdk: flutter
flutter_facebook_deeplinks: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来安装插件。
配置 Facebook App Links
在 Facebook 开发者平台上,你需要为你的应用配置 App Links。具体步骤如下:
- 登录 Facebook 开发者平台。
- 选择你的应用。
- 在左侧菜单中选择 “App Links”。
- 添加你的应用的 App Links URL,并配置相应的路径和参数。
在 Flutter 中使用 flutter_facebook_deeplinks
1. 初始化插件
在你的 main.dart
文件中,初始化 flutter_facebook_deeplinks
插件:
import 'package:flutter/material.dart';
import 'package:flutter_facebook_deeplinks/flutter_facebook_deeplinks.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化 Facebook Deep Links
await FlutterFacebookDeepLinks.init();
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Facebook Deep Links',
home: HomeScreen(),
);
}
}
2. 处理深度链接
在你的应用启动时,你可以检查是否有来自 Facebook 的深度链接,并根据链接跳转到相应的页面。
class HomeScreen extends StatefulWidget {
@override
_HomeScreenState createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
String _deepLinkData = 'No deep link data';
@override
void initState() {
super.initState();
_checkDeepLink();
}
Future<void> _checkDeepLink() async {
final deepLinkData = await FlutterFacebookDeepLinks.getDeepLink();
if (deepLinkData != null) {
setState(() {
_deepLinkData = deepLinkData.toString();
});
// 根据 deepLinkData 跳转到相应的页面
_navigateToPage(deepLinkData);
}
}
void _navigateToPage(Map<String, dynamic> deepLinkData) {
// 根据 deepLinkData 中的参数跳转到相应的页面
// 例如:
// if (deepLinkData['path'] == '/product') {
// Navigator.push(context, MaterialPageRoute(builder: (context) => ProductPage(id: deepLinkData['id'])));
// }
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter Facebook Deep Links'),
),
body: Center(
child: Text(_deepLinkData),
),
);
}
}
3. 监听深度链接
你还可以监听深度链接的变化,以便在应用运行时处理新的深度链接。
@override
void initState() {
super.initState();
_checkDeepLink();
// 监听深度链接的变化
FlutterFacebookDeepLinks.onDeepLink.listen((deepLinkData) {
setState(() {
_deepLinkData = deepLinkData.toString();
});
_navigateToPage(deepLinkData);
});
}
处理 iOS 和 Android 的配置
iOS 配置
在 ios/Runner/Info.plist
文件中,添加以下配置以支持 Facebook 的深度链接:
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>fb{your-app-id}</string>
</array>
</dict>
</array>
<key>FacebookAppID</key>
<string>{your-app-id}</string>
<key>FacebookDisplayName</key>
<string>{your-app-name}</string>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fbapi</string>
<string>fb-messenger-share-api</string>
<string>fbauth2</string>
<string>fbshareextension</string>
</array>
Android 配置
在 android/app/src/main/AndroidManifest.xml
文件中,添加以下配置以支持 Facebook 的深度链接:
<application
android:label="your_app_name"
android:icon="@mipmap/ic_launcher">
<meta-data
android:name="com.facebook.sdk.ApplicationId"
android:value="@string/facebook_app_id" />
<activity
android:name=".MainActivity"
android:launchMode="singleTop"
android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize">
<intent-filter>
<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="your-domain.com" />
</intent-filter>
</activity>
</application>