文档

基础集成

更新时间:
重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

1 路径设置

需要检查目前是否已经使用了友盟+SDK,如果已经使用,请及时点击查看文档

需要注意,一定更改SDK文件路径:

  • 已经集成了友盟+SDK,现在需要集成QT SDK:在QT和友盟+的所有代码最前面增加(至少早于收数域名)[QTConfigure resetStorePath]

  • 已经集成了QT SDK,现在需要集成友盟+SDK:在QT和友盟+的所有代码最前面(至少早于收数域名)增加[UMConfigure resetStorePath]

警告

如果不按照上述的逻辑调用,则会使友盟+SDK与QT SDK共同使用一个存储路径,导致日志混乱

2 域名设置

接口:

/** 设置上报统计日志的主域名和备用域名。此函数必须在SDK初始化函数调用之前调用。
 
 @param primaryDomain 传日志的主域名收数地址,参数不能为null或者空串。例如:https://www.umeng.com
 @param standbyDomain 上传日志备用域名收数地址,参数可以为null或者空串,若此参数为空,SDK内部会自动将主域名设置为备用域名。
*/
+ (void)setCustomDomain:(NSString *)primaryDomain standbyDomain:(NSString *)standbyDomain;

参数:

参数

类型

描述

备注

primaryDomain

NSString

主域名

必需设置

standbyDomain

NSString

备用域名

可选

提示

此方法需要初始化方法之前调用

示例代码:

[QTConfigure setCustomDomain:@"https://www.xxx.com" standbyDomain:nil];

3 合规初始化

3.1 初始化接口

1、合规声明

您务必告知用户您选择Quick Tracking SDK服务,请在《隐私政策》中增加如下参考条款:

我们的产品集成Quick Tracking SDK,Quick Tracking SDK需要收集您的OAID/GAID/MAC/IMEI/Android ID/IDFA/IDFV/OPENUDID/GUID/SIM卡 IMSI 信息/硬件序列号/MCC(移动国家编码)、MNC(移动网号)以提供统计分析服务。

2、合规初始化

为保证您的App在集成【Quick Tracking】统计SDK之后,能够满足工信部相关合规要求,您应确保App首次冷启动时,在用户阅读您的《隐私政策》并取得用户授权之后,才调用正式初始化函数初始化统计SDK,此时SDK才会真正采集设备信息并上报数据。反之,如果用户不同意《隐私政策》授权,则不能调用初始化函数。

/** 初始化Quick Tracking所有组件产品
 @param appKey 开发者在Quick Tracking产品中申请的appkey.
 @param channel 渠道标识,可设置nil表示"App Store".
 */
+ (void)initWithAppkey:(NSString *)appKey channel:(NSString *)channel;

一旦App获取到《隐私政策》的用户授权,后续的App冷启动,开发者应该保证调用到初始化函数。

3.2 Appkey获取

在初始化SDK时,需要填写参数Appkey。Appkey是在Quick Tracking中代表应用的唯一ID,在创建应用时生成,其获取或查看方法详见文档:应用管理

4 日志打印

iOS中,日志模块为独立的插件,需要集成后才可以使用。

4.1 日志插件引入

如果您是手动引入的SDK,需要将日志插件包导入到您的工程中

1、选择SDK功能组件并下载,解压.zip文件得到相应组件包(例如:UMCommonLog.framework,UMCommonLog.bundle)。

2、XcodeFile —>Add Files to"Your Project",在弹出Panel选中所下载组件包->Add。(注:选中“Copy items if needed”)

502F2D35-9594-4D56-BB3F-8895B3BB3D26D0A83A67-2331-4BE6-804A-42BE6A927A27

4.2 日志插件初始化

1、说明和用途

  • 设置是否在console输出SDK的log信息。

  • 日志库UMCommonLog.framework需要明确初始化才能被各个业务组件使用。

  • UMCommonLog.bundle为资源文件,如果您是手动引入的SDK,必须将UMCommonLog.bundle加入到工程中,否则日志显示的内容会不正确。

2、接口函数

接口:

+(void) setUpUMCommonLogManager;

示例代码:

#import <UMCommonLog/UMCommonLogHeaders.h>
  
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    //开发者需要显式的调用此函数,日志系统才能工作
    [UMCommonLogManager setUpUMCommonLogManager];
}

4.3 开启日志

通过UMCommon.framwork的头文件UMConfigure.h接口API开启日志

接口:

/** 设置是否在console输出SDK的log信息.
 @param bFlag 默认NO(不输出log); 设置为YES, 输出可供调试参考的log信息. 发布产品时必须设置为NO.
 */
+ (void)setLogEnabled:(BOOL)bFlag;

示例:

#import <UMCommon/UMCommon.h>
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    //开发者需要显式的调用此函数,日志系统才能工作
    [UMCommonLogManager setUpUMCommonLogManager];
    [QTConfigure setLogEnabled:YES];//设置打开日志
    [QTConfigure setCustomDomain:@"https://www.xxx.com" standbyDomain:nil];//设置域名
    [QTConfigure initWithAppkey:@"Your appkey" channel:@"App Store"];
}

日志格式:

举例:如果用户传入的AppKey为空的话,打印日志如下图:

5FC51E40-553A-4836-BD91-F78B255A8094
  • 2018-02-08 20:19:44: 指当前的打印的时间;

  • UMengCommon: 指组件化SDK(UMCommon.framework)的名字;

  • <1.4.3>: 指组件化SDK(UMCommon.framework)的版本号;

  • (Error)[CIE10001]: 指日志的FAQ的代号,也可通过FAQ文档找到对应的解决方法;

  • 用户传入的AppKey不合法,请到官网申请AppKey,以免影响自己App的统计数据。: 指提示开发者的错误信息,帮助开发者找到错误原因。

5 数据自定义加密

自定义编解码接口函数:

SDK端不直接参与开发者自定义的加解密算法具体实现,SDK提供委托代理QTCryptoProviderDelegate,由开发者自行实现此接口中的如下两个方法。

@protocol QTCryptoProviderDelegate <NSObject>

- (NSData *)encode:(NSMutableDictionary<NSString *,NSString *> *)header input:(NSData *)input;

- (NSData *)decode:(NSDictionary<NSString *,NSString *> *)header input:(NSData *)input;

@end

接口方法

参数说明

- (NSData *)encode:(NSMutableDictionary<NSString *,NSString *> *)header input:(NSData *)input;

参数: header: 需要传递给解密端的额外信息(如:使用的加密算法,加密模式等等任何信息)。 以多个字符串K-V键值对的形式传入。SDK会将此字典中所有K-V键值对参数内容做base64编码后作为http header字段dc-args传递给收数服务端。 收数服务端会将此字典参数原封不动传给对应解密方法。 input: 待加密原始数据。 返回值:加密后数据。

- (NSData *)decode:(NSDictionary<NSString *,NSString *> *)header input:(NSData *)input;

参数: header: 由加密方传入的加密额外信息,解密实现方需要通过这些信息决定解密算法,模式等细节。 input: 待解密原始数据。 返回值:解密后数据。

自定义编解码接口注册函数:

[QTConfigure registerCryptoProvider:self];

接口方法

参数说明

+ (void)registerCryptoProvider:(id<QTCryptoProviderDelegate>)delegate;

参数: delegate: 实现委托代理方法的对象。

示例代码:

#import <QTCommon/UMCommon.h>

@interface AppDelegate ()<QTCryptoProviderDelegate>

@end

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [QTConfigure setCustomDomain:@"您的收数服务域名" standbyDomain:nil];
		[QTConfigure registerCryptoProvider:self];
    [QTConfigure initWithAppkey:@"您的appkey" channel:@"您的渠道"];
    
	....
	
    return YES;
}

- (NSData *)encode:(NSMutableDictionary<NSString *,NSString *> *)header input:(NSData *)input{
    //示例
    [header setObject:@"value1" forKey:@"arg1"];
    [header setObject:@"value2" forKey:@"arg2"];
    return [self customEncode:input key:CryptoKey];
}

- (NSData *)decode:(NSDictionary<NSString *,NSString *> *)header input:(NSData *)input{
    //示例
    NSLog(@"decode header:%@",header);
    return [self customDecode:input key:CryptoKey];
}

// 自定义加密
- (NSData *)customEncode:(NSData *)data key:(NSString *)key
{
    // 自定义加密实现
}

// 自定义解密
- (NSData *)customDecode:(NSData *)data key:(NSString *)key
{
    // 自定义加密实现
}

  • 本页导读 (0)
文档反馈