目录
一、审核说明
ios升级到14版本之后,强制要求app授权apptrackingtransparency,无法授权审核会被打回。
根据苹果官方说明文档:requesttrackingauthorization(completionhandler:) | apple developer documentation
需要在程序激活时唤起授权,
每次激活时检查授权状态,直到获取到权限或检测到用户拒绝,因为一旦用户作出选择,他们的决定会被保存,并且不能通过程序再次弹出请求。之后重复唤起授权也会被拒审。
二、xcode工程配置
framework添加:
info.plist添加:
三、修改代码
在unityappcontroller.mm 文件下:
#import <apptrackingtransparency/attrackingmanager.h>
#import <adsupport/adsupport.h>
- (void)getappidfadatawithcompletion:(void (^)(nsstring *))completion {
__block nsstring *idfa = @"";
if (@available(ios 14, *)) {
attrackingmanagerauthorizationstatus status = [attrackingmanager trackingauthorizationstatus];
// 用户还没有做出选择时
if (status == attrackingmanagerauthorizationstatusnotdetermined) {
[attrackingmanager requesttrackingauthorizationwithcompletionhandler:^(attrackingmanagerauthorizationstatus status) {
if (status == attrackingmanagerauthorizationstatusauthorized) {
idfa = [[asidentifiermanager sharedmanager].advertisingidentifier uuidstring];
} else {
nslog(@"请在设置-隐私-跟踪中允许app请求跟踪");
idfa = @"00000000-0000-0000-0000-000000000000";
}
if (completion) {
completion(idfa);
}
}];
} else if (status == attrackingmanagerauthorizationstatusauthorized) {
idfa = [[asidentifiermanager sharedmanager].advertisingidentifier uuidstring];
if (completion) {
completion(idfa);
}
} else {
nslog(@"用户已拒绝授权或在设置中关闭了idfa");
idfa = @"00000000-0000-0000-0000-000000000000";
if (completion) {
completion(idfa);
}
}
} else {
idfa = [[asidentifiermanager sharedmanager].advertisingidentifier uuidstring];
if (completion) {
completion(idfa);
}
}
}
// 在 applicationdidbecomeactive 中调用这个方法
- (void)applicationdidbecomeactive:(uiapplication *)application {
//...
[self getappidfadatawithcompletion:^(nsstring *idfa) {
// 在这里使用 idfa
}];
}
发表评论