unity 里面目前是没有直接调用Ios的接口的,需要自己编写,关联App Tracking Transparency框架的,在通过c#代码调用
这里说一下问题啊,方法1的话只有开始第一次游戏会调用,如果你频繁的调用请求的话,审核是不会给你过的,所以一般都是之调用一次,需要权限时一般都是弹提示让用户自己开启,
方法1有的时候用unity下的UnityEngine.iOS.Device.advertisingTrackingEnabled来判断是否允许,有的时候会请求失败,很迷,也没找到具体问题
需要一些ios的设备信息,都建议追踪协议后来调用,不然审核也不给你过
这里是unity的UnityEngine.iOS.Device函数,可以自行查看一下
ios的广告标识符可以用作ios设备的唯一标识符。
方法1
- 正常打包完xcode后,步骤如下,选择Classes下的UnityAppController.mm 添加两个引用
#import <AdSupport/AdSupport.h>
#import <AppTrackingTransparency/AppTrackingTransparency.h>
- 然后搜索是否有bool _unityAppReady =
false(这个字段一般打包出来都是有的),如果没有需要自己添加一下
- 在继续查找- (void)applicationDidBecomeActive:(UIApplication*)application方法,在此方法最后添加
if (@available(iOS 14, *)) {
[ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
}];
} else {
[[ASIdentifierManager sharedManager] isAdvertisingTrackingEnabled];
}
代码部分就完成了。
- 接下来需要去 info里面添加请求的说明 可以用我这里可以用字段Privacy - Tracking Usage Description 添加使用说明也可以是NSUserTrackingUsageDescription,一般中国地区你说明“您的数据将被用于为您提供更好的个性化广告体验。”就可以了。
打包运行就可以了,你怕填错了可以尝试点击你的info文件,如果不能正常打开,可能你复制后的结尾会有个隐藏的空格,删除一下就好
这里还需要注意,你要是前面已经打包运行了请删除手机上的程序重新构建一下项目