chinese_sdk_ios_integration_guide - unity-cn/unityads-help-cn GitHub Wiki

Unity Ads SDK - iOS Integration Guide (Xcode)

本文档将为您讲解如何使用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
  • 高级操作指南

Quickstart 指南

在Unity Ads Dashboard 新建一个游戏项目 Project

使用您的 UDN 账户登录 UnityAds开发者操作台.

  • 如果您还没有 UDN 账户,请注册

从开发者后台选择 Projects > 点击 NEW PROJECT 新建一个项目.

提示: 如果您的游戏在美国发布且专门供美国13岁以下的儿童使用,依据美国儿童隐私保护法,您需要点击COPPA勾选框。全年龄段适用的游戏则不需要勾选此项。

选中新建的项目 > Settings > Project Settings , 您可以看到Unity自动为iOS和Android平台分别生成的对应 GAME ID 。您将会在初始化 Unity Ads 时使用对应的 Game ID 。

Locate your Game ID

选中新建的项目 > Monetization > Placements , 您可以查看广告位,Unity会在您新建项目时默认为您生成2个广告位,您也可以手动添加更多。

  • video (默认广告位 / 5秒后允许用户跳过广告)
  • rewardedVideo (不可跳过广告)

可选: 通过Platform的设置选项开启测试模式以接收测试广告,游戏发布上线前,请您务必记得回到此处关闭测试模式,以免影响您的广告收入。

Projects > 选中一个项目 > Settings > Project Settings > Test Mode > 选择一个平台 > Force test mode ON

代码集成

Swift 集成 Unity Ads

点击跳转Objective-C方式

导入Unity Ads

下载最新版本的 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) { }

到此步骤,您的项目应该可以成功通过编译。

初始化 Unity Ads 和 展示广告

使用 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{
    // 奖励用户
  }
}

到此步骤,您应该可以成功展示广告和奖励用户。


Objective-C 集成 Unity Ads

导入Unity Ads

下载最新版本的 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{
}

到此步骤,您的项目应该可以成功通过编译。

初始化 Unity Ads 和 展示广告

使用 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) {
        //奖励用户
    }
}

到此步骤,您应该可以成功展示广告和奖励用户。

Unity Ads iOS 高级操作指南

如有其他疑问,请邮件发送至 [email protected] 以获取技术支持。

⚠️ **GitHub.com Fallback** ⚠️