关于ios 14.5以上版本申请AppTrackingTransparency权限,cocos creator 篇

在iOS 14.5及以上版本,应用需要请求AppTrackingTransparency权限。本文档介绍了如何在Cocos Creator中添加权限提示文案到Info.plist,并提供调用代码实现请求IDFA接口,确保在14.5以上系统中正确显示权限窗口。同时提醒,14.5以下版本权限默认开启,无需调用。

在发布ios版本中,要求加入AppTrackingTransparency权限,网上材料实在是有限,于是搜集了半天,才找到这个解决方案。
参考:解决方案

加粗样式
1、工程 Info.plist文件新增用户授权提示文案,用 Source Code的方式打开Info.plist文件,添加如下代码,string值可根据实际需要自行设置:右键点击加入新字段
在这里插入图片描述
在这里插入图片描述

 <key>NSUserTrackingUsageDescription</key>
<string>该标识符将用于向您投放个性化广告</string>

注意:对应的 的内容一定得写,不然会打回报出

调用代码:添加调取权限窗口代码
在这里插入图片描述

在这里插入图片描述

GDATTrackingIdfa.h

#import <Foundation/Foundation.h>
 
NS_ASSUME_NONNULL_BEGIN
 
@interface GDATTrackingIdfa : NSObject
+ (instancetype)sharedSingleton;
 
+ (void)requestIDFA;
 
- (void) callCocos;
@end
 
NS_ASSUME_NONNULL_END

GDATTrackingIdfa.m

#import "GDATTrackingIdfa.h"
#import <AdSupport/AdSupport.h>
#import <AppTrackingTransparency/AppTrackingTransparency.h>
 
@implementation GDATTrackingIdfa
 
+ (instancetype)sharedSingleton {
   static GDATTrackingIdfa *_sharedSingleton = nil;
   static dispatch_once_t onceToken;
   dispatch_once(&onceToken, ^{
       //不能再使用alloc方法
       //因为已经重写了allocWithZone方法,所以这里要调用父类的分配空间的方法
       _sharedSingleton = [[super allocWithZone:NULL] init];
       [_sharedSingleton initDelegate];
       [_sharedSingleton checkTransaction];
   });
   return _sharedSingleton;
}
 
+ (void)requestIDFA {
    if (@available(iOS 14.0, *)) {
        [ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
 
        }];
        NSLog(@"------ requestIDFA---14.0-------");
    }else
    {
        NSLog(@"------调用 requestIDFA----14.0yixia----------");
    }
}
 
- (void) callCocos {
//   std::string jsCallStr;
//   std::string testString1 =[@"testString1" UTF8String];
//   std::string testString2 = [@"testString2" UTF8String];
//   jsCallStr = cocos2d::StringUtils::format("receiveNative(\"%s\",\"%s\");", testString1.c_str(), testString2.c_str());
//   se::Value *ret = new se::Value();
//   se::ScriptEngine::getInstance()->evalString(jsCallStr.c_str() , -1 , ret);
}
 
@end

然后再cocos creator 中调用 requestIDFA 接口,弹出权限窗口(注意callStaticMethod会报错,不用管,提示需要三个参数,但实际ios使用就是两个参数 ,不需要methodSignature参数)

       if (cc.sys.os === cc.sys.OS_IOS) 
        {
            console.log("cocos---requestIDFA---");
            jsb.reflection.callStaticMethod("GDATTrackingIdfa","requestIDFA");
            DataMgr.inst.ShowATTracking=true;
            
        }

选用ios14.5及以上系统的测试机,或者使用内部的ipone12进行测试,14.5以下的版本是默认开启权限的不会调出窗口
最后在提交审核之前贴在备注里面,找到的大神写的一个模板,让ios对你的应用审核更友善

-Guideline x.x.x - Legal - Privacy - Data Collection and Storage
关于此问题,我们根据您的提示,对项目进行了彻底的检查。
发现确实会询问用户是否同意访问本地网络信息。询问用户的原因是为了实现xxxxxxxxxx功能。
这是一个用户十分需要的xxxx功能,跟用户业务息息相关。
如果没有xxxxx,那么用户就xxxxxxxxx,造成损失,这是我们开发者和用户都不愿意看到的。
对此,我们做了充分说明,在看到说明后用户再做出明智的决定。更改后的说明原文为:此App将可xxxxxxxxx.
除此之外,我们并无做出其他不尊重用户的行为。
 
以上是我这边的处理结果,如果您还有疑问,随时都可以联系我(+86159xxxx8824)。
 
诚挚的问候!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东哥aigc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值