日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

基礎集成

重要

本文中含有需要您注意的重要提示信息,忽略該信息可能對您的業務造成影響,請務必仔細閱讀。

1 路徑設置

需要檢查目前是否已經使用了友盟+SDK,如果已經使用,請及時更改SDK文件路徑:

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

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

警告

如果不按照上述的邏輯調用,則會使友盟+SDK與QT SDK共同使用一個存儲路徑,導致日志混亂。具體邏輯為:先調用的哪個SDK初始化方法,就重新設置另外一個SDK的文件路徑,比如先初始化的友盟+SDK,就調用 [QTConfigure resetStorePath];,如果是先初始化的QT SDK,就需要調用[UMConfigure.resetStorePath];

2 域名設置

接口:

/** 設置上報統計日志的主域名和備用域名。此函數必須在SDK初始化函數調用之前調用。
 
 @param primaryDomain 傳日志的主域名收數地址,參數不能為null或者空串。例如:https://www.xxx.com
 @param standbyDomain 上傳日志備用域名收數地址,參數可以為null或者空串,若此參數為空,SDK內部會自動將主域名設置為備用域名。
*/
+ (void)setCustomDomain:(NSString *)primaryDomain standbyDomain:(NSString *)standbyDomain;

參數:

參數

類型

描述

備注

primaryDomain

NSString

主域名

必需設置

standbyDomain

NSString

備用域名

可選

提示

此方法需要在初始化方法之前調用

示例代碼:

[QTConfigure setCustomDomain:@"您的收數服務域名" 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;

如果您同時使用了性能體驗SDK,并且需要單獨設置性能體驗SDK的收數域名,請通過以下接口進行初始化(v1.5.6.PX 及以上版本支持):

/** 初始化QTSDK所有組件產品
 @param appKey 開發者在QuickTracking平臺官網申請的appkey.
 @param channel 渠道標識,可設置nil表示"App Store".
 @param pluginsTrackDomainIndepent 是否獨立設置性能體驗SDK的收數域名
 */
+ (void)initWithAppkey:(NSString *)appKey channel:(NSString *)channel shouldPluginsTrackDomainIndepent:(BOOL)pluginsTrackDomainIndepent;

一旦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”)

image

D0A83A67-2331-4BE6-804A-42BE6A927A27

4.2 日志插件初始化

1、說明和用途

  • 設置是否在console輸出SDK的log信息。

  • 日志庫UMCommonLog.framework需要明確初始化才能被各個業務組件使用。

  • UMCommonLog.bundle為資源文件,如果您是手動引入的SDK,必須將UMCommonLog.bundle加入到工程中,否則日志顯示的內容會不正確。

2、接口函數

接口:

+(void) setUpUMCommonLogManager;

示例代碼:

#import <UMCommonLog/UMCommonLogManager.h>
  
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
    //開發者需要顯式的調用此函數,日志系統才能工作
    [UMCommonLogManager setUpUMCommonLogManager];
}

4.3 開啟日志

通過QTCommon.framwork的頭文件UMConfigure.h接口API開啟日志

接口:

/** 設置是否在console輸出SDK的log信息.
 @param bFlag 默認NO(不輸出log); 設置為YES, 輸出可供調試參考的log信息. 發布產品時必須設置為NO.
 */
+ (void)setLogEnabled:(BOOL)bFlag;

如果需要查看SDK初始化階段的日志,請在初始化之前設置開啟日志,建議在調用設置收數域名和初始化SDK接口之前開啟。

示例:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
    //開發者需要顯式的調用此函數,日志系統才能工作
    [UMCommonLogManager setUpUMCommonLogManager];
    [QTConfigure setLogEnabled:YES];//設置打開日志
    [QTConfigure setCustomDomain:@"您的收數服務域名" standbyDomain:nil];//設置域名
    [QTConfigure initWithAppkey:@"您的appkey" channel:@"App Store"];
    
     /**
     * 如果需要單獨設置APM收數域名,請通過以下接口初始化
     * [QTConfigure initWithAppkey:@"您的appkey" channel:@"App Store" shouldPluginsTrackDomainIndepent:YES]; //v1.5.6.PX 及以上版本支持
     */
}

日志格式:

舉例:如果用戶傳入的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
{
    // 自定義解密實現
}