Flutter广告集成插件tyrads_sdk的使用
Flutter广告集成插件tyrads_sdk的使用
Tyrads
Tyrads 是一个开源框架,提供了一个用于展示和创建奖励墙的包装器。它与Tyrads后端进行交互,仅用几行代码就能轻松展示广告。
注意事项
- 儿童和家庭计划 的应用不应使用Tyrads SDK,因为Tyrads不收集13岁以下用户的数据。
- Tyrads SDK 使用Apple的广告标识符(IDFA)在iOS上和Google广告标识符(GAID)在Android上来识别和重定向用户。您应在用户授予相关IDFA/GAID权限后初始化Tyrads Flutter插件。
入门指南
前提条件
- Android SDK 21或更高版本,并使用Google Play服务
- iOS版本11.0或更高版本
- Flutter版本1.20.0或更高版本
- Dart SDK版本2.12.0或更高版本
- CocoaPods版本1.10.0或更高版本
安装
打开项目根目录下的终端并运行以下命令:
flutter pub get tyrads_sdk
将Tyrads功能集成到您的应用程序是一个简单的过程,涉及几个关键步骤。通过遵循这些集成步骤,您可以无缝地将奖励墙功能整合到您的应用中,增强用户体验并可能为您的应用带来收入。
初始化
此步骤在您的应用中初始化Tyrads SDK。您需要提供从Tyrads平台获得的API密钥和API密钥。这允许您的应用安全地与Tyrads服务器通信。
Tyrads.instance.init(apiKey: "xyz", apiSecret: "abc123");
从版本1.1.2开始,您还可以向SDK传递用户和媒体源信息。这些信息用于个性化用户体验和改进归因准确性。有关每个参数的信息,请参阅文档。
Tyrads.instance
.init(
apiKey: Env.TYRADS_SDK_KEY,
apiSecret: Env.TYRADS_SDK_SECRET,
userInfo: TyradsUserInfo(
email: "example@tyrads.com",
phoneNumber: "001234567890",
userGroup: "High purchase user",
),
mediaSourceInfo: TyradsMediaSourceInfo(
mediaSourceName: "Facebook",
mediaCampaignName: "Summer2023Promo",
mediaSourceId: "FB001",
mediaSubSourceId: "FB001_Stories",
incentivized: false,
mediaAdsetName: "YoungAdults25-34",
mediaAdsetId: "AD001",
mediaCreativeName: "SummerSale_Video",
mediaCreativeId: "CR001",
sub1: "ReferralCode123",
sub2: "OrganicInstall",
sub3: "HighValueUser",
sub4: "FirstTimeUser",
sub5: "iOSDevice",
),
);
用户登录
在初始化SDK之后,必须进行用户登录。但是,传递用户ID是可选的,只有在发布者拥有自己的用户系统时才需要。此登录过程确保用户与奖励墙的交互能够被准确跟踪和归因。
var isLoginSuccessful = await Tyrads.instance.loginUser(userID: "xxx"); // userID 是可选的
显示奖励墙
一旦SDK已初始化且用户已登录(如果适用),您可以向用户显示奖励墙。这通常涉及调用由Tyrads SDK提供的函数,例如 showOffers
,并传入您的应用上下文。奖励墙是用户可以参与各种优惠、广告或促销的地方,从而可能获得奖励或激励。
Tyrads.instance.showOffers(context);
深度链接路由
Tyrads SDK支持深度链接到奖励墙的特定部分。在初始化或与SDK交互时,您可以指定一个路由以打开特定页面。对于特定活动的路由,您需要提供活动ID。
// 注意:CAMPAIGNS 是默认路由,当未提供特定路由时
Tyrads.instance.showOffers(context);
// 明确指定活动页面
Tyrads.instance.showOffers(context, route: TyradsDeepRoutes.CAMPAIGNS);
// 已激活活动页面
Tyrads.instance.showOffers(context, route: TyradsDeepRoutes.CAMPAIGNS_ACTIVATED);
// 活动详情页面(需要活动ID)
Tyrads.instance.showOffers(context, route: TyradsDeepRoutes.CAMPAIGN_DETAILS, campaignID: "your_campaign_id_here");
// 活动票务页面(需要活动ID)
Tyrads.instance.showOffers(context, route: TyradsDeepRoutes.CAMPAIGN_TICKETS, campaignID: "your_campaign_id_here");
Android 12
将目标API级别更新到31(Android 12)或更高的应用需要在AndroidManifest.xml文件中声明Google Play服务的正常权限。
导航到项目根目录下的 android/app/src/main
目录,找到AndroidManifest.xml文件并在 <application>
之前添加以下行:
<uses-permission android:name="com.google.android.gms.permission.AD_ID" />
您可以在此处阅读有关Google广告ID更改的更多信息。
iOS 14+
您需要在 info.plist
文件中添加 NSUserTrackingUsageDescription
,如下所示:
<key>NSUserTrackingUsageDescription</key>
<string>我们使用设备标识符来个性化您的奖励体验,跟踪您的进度,并提供定制的优惠。这有助于我们改进我们的服务,并确保您从我们的奖励计划中获得最大价值。</string>
Tyrads SDK可以在iOS 14+上与或不与IDFA权限一起工作。如果在ATT弹窗中未获得权限,SDK将向用户提供非个性化优惠。在这种情况下,转化率可能会较低。与未获得IDFA权限相比,奖励墙集成表现更好。建议您在Tyrads SDK初始化前请求IDFA使用权限。
示例代码
以下是一个完整的示例代码,展示了如何使用Tyrads SDK。
// ignore_for_file: use_build_context_synchronously
import 'package:example/env/env.dart';
import 'package:flutter/material.dart';
import 'package:tyrads_sdk/tyrads_sdk.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化Tyrads SDK
Tyrads.instance
.init(
apiKey: Env.TYRADS_SDK_KEY,
apiSecret: Env.TYRADS_SDK_SECRET,
userInfo: TyradsUserInfo(
email: "example@tyrads.com",
phoneNumber: "001234567890",
userGroup: "High purchase user",
),
mediaSourceInfo: TyradsMediaSourceInfo(
mediaSourceName: "Facebook",
mediaCampaignName: "Summer2023Promo",
mediaSourceId: "FB001",
mediaSubSourceId: "FB001_Stories",
incentivized: false,
mediaAdsetName: "YoungAdults25-34",
mediaAdsetId: "AD001",
mediaCreativeName: "SummerSale_Video",
mediaCreativeId: "CR001",
sub1: "ReferralCode123",
sub2: "OrganicInstall",
sub3: "HighValueUser",
sub4: "FirstTimeUser",
sub5: "iOSDevice",
),
);
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Tyrrewards SDK Demo',
theme: ThemeData.light(),
home: Builder(builder: (context) {
return const MyHomePage(title: "Tyrads SDK");
}),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key, required this.title});
final String title;
[@override](/user/override)
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
String? userID;
void _showOfferwall() async {
var isLoginSuccessful = await Tyrads.instance.loginUser(userID: userID);
if (!isLoginSuccessful) {
// 重新初始化
}
// 或者您可以不等待未来完成就登录
// Tyrads.instance.loginUser(userID: userID);
// if (!Tyrads.instance.initializationWait.isCompleted) {
// await Tyrads.instance.initializationWait.future;
// }
// if (!Tyrads.instance.isLoginSuccessful) {
// // 重新初始化
// }
Tyrads.instance.showOffers(context);
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Theme.of(context).colorScheme.inversePrimary,
title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
SizedBox(
width: 300,
child: TextField(
onChanged: (v) {
userID = v;
},
decoration: const InputDecoration(
border: OutlineInputBorder(),
hintText: "自定义用户ID或留空以匿名",
),
),
),
const SizedBox(height: 10),
OutlinedButton(
onPressed: _showOfferwall,
child: const Text("显示奖励墙"),
),
],
),
),
);
}
}
更多关于Flutter广告集成插件tyrads_sdk的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter广告集成插件tyrads_sdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
Flutter 广告集成插件 tyrads_sdk
的使用
tyrads_sdk
是一个用于 Flutter 应用集成广告的插件。它可以帮助开发者在应用中展示横幅广告、插页广告、奖励视频广告等。以下是使用 tyrads_sdk
的基本步骤:
1. 添加依赖
在 pubspec.yaml
文件中添加 tyrads_sdk
依赖:
dependencies:
flutter:
sdk: flutter
tyrads_sdk: ^latest_version # 使用最新版本
运行 flutter pub get
以安装依赖。
2. 初始化 SDK
在应用启动时初始化 tyrads_sdk
。通常在 main.dart
中进行初始化:
import 'package:tyrads_sdk/tyrads_sdk.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化 Tyrads SDK
await TyradsSdk.initialize(
appId: '你的AppID', // 从 Tyrads 控制台获取
isTestMode: true, // 测试模式,发布时设置为 false
);
runApp(MyApp());
}
3. 展示横幅广告
使用 BannerAdWidget
在页面中展示横幅广告:
import 'package:tyrads_sdk/tyrads_sdk.dart';
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Tyrads 广告示例'),
),
body: Column(
children: [
Expanded(
child: Center(
child: Text('这里是应用内容'),
),
),
// 展示横幅广告
BannerAdWidget(unitId: '你的横幅广告UnitID'),
],
),
);
}
}
4. 展示插页广告
插页广告通常在特定场景(如页面切换时)展示:
import 'package:tyrads_sdk/tyrads_sdk.dart';
void showInterstitialAd() async {
await TyradsSdk.showInterstitialAd(
unitId: '你的插页广告UnitID',
onAdClosed: () {
print('插页广告关闭');
},
onAdFailedToLoad: (error) {
print('插页广告加载失败: $error');
},
);
}
在需要展示广告的地方调用 showInterstitialAd()
方法。
5. 展示奖励视频广告
奖励视频广告通常用于激励用户完成某些操作:
import 'package:tyrads_sdk/tyrads_sdk.dart';
void showRewardedAd() async {
await TyradsSdk.showRewardedAd(
unitId: '你的奖励视频广告UnitID',
onRewarded: (reward) {
print('用户获得奖励: ${reward.amount} ${reward.type}');
},
onAdClosed: () {
print('奖励视频广告关闭');
},
onAdFailedToLoad: (error) {
print('奖励视频广告加载失败: $error');
},
);
}
在需要展示奖励视频广告的地方调用 showRewardedAd()
方法。
6. 测试模式
在开发阶段,建议启用测试模式,以避免展示真实广告。初始化时设置 isTestMode: true
。
await TyradsSdk.initialize(
appId: '你的AppID',
isTestMode: true, // 发布时设置为 false
);
7. 处理广告加载失败
所有广告类型都提供了 onAdFailedToLoad
回调,用于处理广告加载失败的情况。
onAdFailedToLoad: (error) {
print('广告加载失败: $error');
},