SDK接入文档
前提条件
已在营销引擎云码渠道平台注册账号,获取渠道ID, 请参考如何获取正式渠道ID。
已在营销引擎云码渠道平台已创建媒体,获取媒体ID,请参考如何获取正式媒体ID。
使用限制
iOS >= iOS 9.0
SDK编译环境 Xcode 12
framework架构 : x86_64 armv7 arm64
样例代码
阿里云营销引擎云码iOS SDK接入工程样例参见营销引擎云码iOS Demo。
集成步骤
添加依赖
手动添加依赖
解压下载好的SDK包,在Xcode中,把SDK包目录中的framework、bundle拖入对应Target下即可,在弹出框勾选Copy items if needed。
framework: AlicloudCloudCode.framework AlicloudSender.framework EMASRest.framework UTDID.framework bundle: AlicloudCloudCode.bundle
配置Objc
iOS端集成SDK时需要做
-ObjC
配置,即应用的 TARGETS -> Build Settings -> Linking -> Other Linker Flags ,需添加上-ObjC
这个属性。
Pod 集成
指定Master仓库和阿里云仓库。
source 'https://github.com/CocoaPods/Specs.git' source 'https://github.com/aliyun/aliyun-specs.git'
添加依赖
pod 'AlicloudCloudCode', '~> x.x.x'
说明~>为模糊指定版本号方式,~> 1.19.2.4表明引用版本位于
1.19.2.4 <= version < 1.20.0
之间的最新版本SDK,用户可参考 Podfile Syntax Reference,根据项目需要指定SDK版本。
引入头文件
#import <AlicloudCloudCode/AliCloudCodeAdSDK.h>
配置Objc
iOS端集成SDK时需要做
-ObjC
配置 ,即应用的 TARGETS -> Build Settings -> Linking -> Other Linker Flags ,需添加上-ObjC
这个属性,否则推送服务无法正常使用。Other Linker Flags
中设定链接器参数-ObjC
,加载二进制文件时,会将 Objective-C 类和 Category 一并载入 ,若工程依赖多个三方库 ,将所有 Category 一并加载后可能发生冲突,可以使用-force_load
单独载入指定二进制文件,配置如下 :-force_load<framework_path>/AlicloudCloudCode.framework/AlicloudCloudCode
SDK初始化配置
设置渠道ID、媒体ID
/// AliCloudCodeAdSDK.h /// 渠道ID /// @param channelId 渠道ID /// @param mediaID 媒体ID + (void)setChannelID:(NSString *)channelId mediaID:(NSString *)mediaID; /// 配置渠道ID 媒体ID [AliCloudCodeAdSDK setChannelID:@"渠道ID" mediaID:@"媒体ID"];
SDK初始化
/// AliCloudCodeAdSDK.h /// SDK 初始化 /// @param callBack 初始化状态回调 + (void)sdkInit:(void (^)(BOOL isSuccess, NSError * _Nullable error))callBack; /// 初始化SDK [AliCloudCodeAdSDK sdkInit:^(BOOL isSuccess, NSError *error) { if (isSuccess) { //SDK 初始化成功 } else { //SDK 初始化失败 NSLog(@"失败原因:%@", error.description); } }];
注意事项
iOS14 针对IDFA获取做了改变。需要适配ATT,获取IDFA前需要设置 App Tracking Transparency的跟踪权限,若用户拒绝则获取的IDFA 将无效。
App Tracking Transparency(ATT)详见文档:https://developer.apple.com/documentation/apptrackingtransparency
适配ATT
编译环境Xcode12及以上版本
Info.plist,添加 NSUserTrackingUsageDescription 字段和自定义文案描述
<key>NSUserTrackingUsageDescription</key> <string>idfa申请文案</string>
获取IDFA
if (@available(iOS 14, *)) { ATTrackingManagerAuthorizationStatus status = ATTrackingManager.trackingAuthorizationStatus; switch (status) { case ATTrackingManagerAuthorizationStatusDenied: { NSLog(@"用户拒绝"); } break; case ATTrackingManagerAuthorizationStatusAuthorized: { NSLog(@"用户允许"); } break; case ATTrackingManagerAuthorizationStatusNotDetermined: { NSLog(@"用户未做选择或未弹窗"); //申请权限后获取idfa [ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) { NSLog(@"获取权限后的后续操作"); }]; } break; default: break; } } else { // Fallback on earlier versions if ([ASIdentifierManager.sharedManager isAdvertisingTrackingEnabled]) { //获取IDFA } else { NSLog(@"用户禁止IDFA获取"); } }