chinese_sdk_ios_integration_guide - unity-cn/unityads-help-cn GitHub Wiki
本文档将为您讲解如何使用Objective-C 或 Swift语言在原生iOS项目环境下集成Unity Ads。
如果您是从 SDK 1.5.x 升级的话, 可以参考iOS升级指南
下载最新版本的 Unity Ads Framework
Unity iOS 2.0 SDK 最低支持 iOS 7.0
教学视频:
您也可以到 GitHub 下载我们的 示例项目 作为参考。
针对iOS 14及以上版本的设备的游戏应在 信息属性列表-information property list(Info.plist)文件中实现Unity Ads及与其关联的第三方合作方的网络ID 。更多信息请参考SKAdNetwork IDs。
大纲
- Quickstart 指南
- 新建游戏项目 Project
- 代码集成
- Swift
- Objective-C
- 高级操作指南
使用您的 UDN 账户登录 UnityAds开发者操作台.
- 如果您还没有 UDN 账户,请注册
从开发者后台选择 Projects > 点击 NEW PROJECT 新建一个项目.
提示: 如果您的游戏在美国发布且专门供美国13岁以下的儿童使用,依据美国儿童隐私保护法,您需要点击COPPA勾选框。全年龄段适用的游戏则不需要勾选此项。
选中新建的项目 > Settings > Project Settings , 您可以看到Unity自动为iOS和Android平台分别生成的对应 GAME ID
。您将会在初始化 Unity Ads 时使用对应的 Game ID 。
选中新建的项目 > Monetization > Placements , 您可以查看广告位,Unity会在您新建项目时默认为您生成2个广告位,您也可以手动添加更多。
- video (默认广告位 / 5秒后允许用户跳过广告)
- rewardedVideo (不可跳过广告)
可选: 通过Platform的设置选项开启测试模式以接收测试广告,游戏发布上线前,请您务必记得回到此处关闭测试模式,以免影响您的广告收入。
Projects > 选中一个项目 > Settings > Project Settings > Test Mode > 选择一个平台 > Force test mode ON
点击跳转Objective-C方式
下载最新版本的 Unity Ads Framework
拖拽UnityAds.framework到您的项目,添加时勾选 Copy items.
在 ViewController 中导入UnityAds
,并实现 UnityAdsDelegate
协议
import UnityAds
class GameViewController: UIViewController, UnityAdsDelegate {
在 ViewController 中实现UnityAdsDelegate
协议的如下回调方法
- unityAdsReady
- unityAdsDidStart
- unityAdsDidError
- unityAdsDidFinish
func unityAdsReady(_ placementId: String) { }
func unityAdsDidStart(_ placementId: String) { }
func unityAdsDidError(_ error: UnityAdsError, withMessage message: String) { }
func unityAdsDidFinish(_ placementId: String, with state: UnityAdsFinishState) { }
到此步骤,您的项目应该可以成功通过编译。
使用 UnityAds.initialize()
初始化SDK。
将您从开发者后台获取的 Game ID 以String类型,以及代表ViewController的 self 作为参数传入:
override func viewDidLoad() {
super.viewDidLoad()
UnityAds.initialize("1003843", delegate: self)
}
提示:
Unity Ads 初始化一般需要至少10秒,建议您尽量在游戏生命周期的早期进行初始化。
Unity Ads 只初始化一次. SDK 2.0 的网络重连功能更加可靠. 您可以在没有网络连接的情况下尝试初始化, 之后 SDK 会在网络可用的时候再请求广告.
检查广告加载完成 ready 后,选择一个合法的 Placement ID 作为参数,和 self 一起传入 UnityAds.show()
来展示广告。
提示:
如果不指定 Placement ID,则展示 Default placement ID, 您可以在开发者后台查看您的 Default placement ID。
Unity Ads SDK 2.0 在任何一次调用展示(show)方法时候, 都需要传入一个 ViewController 作为参数 (如示例中的self
).
let placement = "rewardedVideo"
if (UnityAds.isReady(placement)) {
//广告加载完成 且 广告位合法
UnityAds.show(self, placementId: placement)
}
到此步骤,您应该可以在运行时成功观看到广告展示。
对看完视频的玩家给与奖励,可以提高玩家的参与度,从而带来更高的收入。常见的奖励方式如:
- 免费的游戏货币
- 一定时长的性能提速
- 挑战失败后继续游戏
- 游戏道具 或 解锁关卡
通过在 unityAdsDidFinish()
回调方法里检查广告视频没有被跳过,确认玩家观看完整视频后再给与奖励。
func unityAdsDidFinish(_ placementId: String, with state: UnityAdsFinishState) {
if state != .skipped{
// 奖励用户
}
}
到此步骤,您应该可以成功展示广告和奖励用户。
下载最新版本的 Unity Ads Framework
拖拽UnityAds.framework到您的项目,添加时勾选 Copy items.
在 ViewController(.h)文件中导入UnityAds
,并实现 UnityAdsDelegate
协议
#import "UnityAds/UnityAds.h"
@interface ViewController : UIViewController<UnityAdsDelegate>
在 ViewController(.m)文件中实现UnityAdsDelegate
协议的如下回调方法
- (void)unityAdsReady:(NSString *)placementId{
}
- (void)unityAdsDidError:(UnityAdsError)error withMessage:(NSString *)message{
}
- (void)unityAdsDidStart:(NSString *)placementId{
}
- (void)unityAdsDidFinish:(NSString *)placementId withFinishState:(UnityAdsFinishState)state{
}
到此步骤,您的项目应该可以成功通过编译。
使用 UnityAds.initialize()
初始化SDK。
将您从开发者后台获取的 Game ID 以String类型,以及代表ViewController的 self 作为参数传入:
- (void)viewDidLoad {
[super viewDidLoad];
[UnityAds initialize:@"1088169" delegate:self];
}
提示:
Unity Ads 初始化一般需要至少10秒,建议您尽量在游戏生命周期的早期进行初始化。
Unity Ads 只初始化一次. SDK 2.0 的网络重连功能更加可靠. 您可以在没有网络连接的情况下尝试初始化, 之后 SDK 会在网络可用的时候再请求广告.
检查广告加载完成 ready 后,选择一个合法的 Placement ID 作为参数,和 self 一起传入 UnityAds.show()
来展示广告。
提示:
如果不指定 Placement ID,则展示 Default placement ID, 您可以在开发者后台查看您的 Default placement ID。
Unity Ads SDK 2.0 在任何一次调用展示(show)方法时候, 都需要传入一个 ViewController 作为参数 (如示例中的self
).
if ([UnityAds isReady:@"rewardedVideo"]) {
//广告加载完成 且 广告位合法
[UnityAds show:self placementId:@"rewardedVideo"];
}
到此步骤,您应该可以在运行时成功观看到广告展示。
对看完视频的玩家给与奖励,可以提高玩家的参与度,从而带来更高的收入。常见的奖励方式如:
- 免费的游戏货币
- 一定时长的性能提速
- 挑战失败后继续游戏
- 游戏道具 或 解锁关卡
通过在 unityAdsDidFinish()
回调方法里检查广告视频没有被跳过,确认玩家观看完整视频后再给与奖励。
- (void)unityAdsDidFinish:(NSString *)placementId withFinishState:(UnityAdsFinishState)state{
if (state != kUnityAdsFinishStateSkipped) {
//奖励用户
}
}
到此步骤,您应该可以成功展示广告和奖励用户。
-
- 报错 Errors
- 广告播放状态 Finish States
- 广告位状态 Placement States
-
聚合平台指南 Mediation network guide
-
服务器端回调 Server-to-Server callbacks
如有其他疑问,请邮件发送至 [email protected] 以获取技术支持。