iOS SDK (Chinese)

当前 iOS SDK版本是 4.12.2

支持 iOS平台的 TUNE SDK提供应用会话(Application Session)和日志(Log)打印功能。TUNE SDK iOS版以 Framework文件的形式提供,您可以轻松将其添加到您的 iOS项目中。我们的 SDK兼容于 iPhone、iPad以及iPod Touch设备,并且支持iOS 6.0及以上版本的自动引用计数(Automatic Reference Counting, ARC)和非自动引用计数(non-ARC)项目 。

接下来为了开始跟踪会话(Session)和监测事件(Event),请先将TUNE SDK集成至您的iOS应用。在您初始化“measureSession”方法之后,您便可以依靠Tune去记录诸如购买、游戏等级和任何其他吸引用户的应用内事件(in-app-events)。

遵循此快速联动指南,您可以迅速完成您的应用与 TUNE SDK 的联动,并使其正常运转。如果您正在从旧版本的MobileAPPTracker(MAT)更新至新版本的TUNE SDK,请访问Migrating from MobileAppTracker SDK 2.x to latest 3.x.x或者Migrating from SDK MobileAppTracker 3.x.x to Tune 4.x.x。如果您正在将TUNE SDK集成至Xcode 6.0+环境下使用Swift 语言编写的iOS 应用,请访问Including Tune iOS Objective C SDK in a Swift project

 

TUNE SDK iOS 版支持以下 TMC(TUNE Marketing Console) 解决方案

  •      归因分析(Attribution Analytics
  •      应用内营销(In-App Marketing需要额外的 SDK 配置,而且仅支持 v4.0.0 以上版本。)
  •      应用商店分析(App Store Analytics

 

下载 TUNE SDK

iOS目标平台版本为6.0(最早版本)时,TUNE SDK iOS 版的有效大小约为 1MB。在您可以下载 TUNE SDK之前,请确认您的应用已经添加到您在 TUNE平台上的账户下。

在您的应用添加到TUNE平台之后,您可以自行下载和安装TUNE SDK,也可通过Tune CocoaPod实现安装。

同时,TUNE SDK也提供开源的Framework,并且您可以通过访问GitHub获得。

代码实现

安装

您可以通过两种方式安装TUNE SDK,包括Cocoapods方式和手动添加的方式。

通过Cocoapods安装

如果您正在使用Cocoapods,请参照下列代码更新您的Podfile文件并运行podinstall.

target '<your_project_target>' do 
    pod 'Tune'
end

 

上述操作之后,如果依然显示不存在,请将“$(inherited)添加至Xcode项目的“Build Settings”下的“Other Linker Flags”中。

手动添加安装

手动添加安装TUNE SDK请遵循如下步骤:

  1.  解压并复制Tune.framework文件夹至您的源文件目录中(source tree)。
  2. 将Tune.framework添加至您的Xcode项目中。
    a. 在项目导航界面中,点击项目名称。
    b. 点击“General”标签中,向下滚动画面至“Linked Frameworks and Libraries”。
    c. 为了添加新的Framework,点击“+”图标,在弹出的窗口中点击“Add Other...”
    d. 浏览目录内容并选择Tune.framework文件夹,之后点击“Open”。
  3.  另外再将如下Framework也添加至您的项目中:
    · AdSupport.framework
    · CoreSpotlight.framework
    · CoreTelephony.framework
    · iAd.framework
    · libz.dylib/libz.tbd
    · MobileCoreServices.framework
    · QuartzCore.framework
    · Security.framework
    · StoreKit.framework
    · SystemConfiguration.framework
    · UserNotifications.framework (仅在 Xcode 8,用于支持iOS 10+)
  4. 请将下列指令添加至Xcode项目的“Build Setting”下的“Other Linker Flags”中。
-ObjC -lz

代码变更

首先,请您确认项目的“Build Setting”配置中,将“Enable Modules(C and Objective-C)”设置为了“YES”。

在您的“AppDelegate.m”文件中,导入“Tune”并将其初始化。

@import Tune;
 
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
   
    // TUNE 账户配置信息(必须设置)
    [Tune initializeWithTuneAdvertiserId:@"your_advertiser_ID"
                       tuneConversionKey:@"your_conversion_key"];
 
    // 将此类(Class)注册为深度链接监听器,从而操作延迟深度链接和Tune 通用连接。
    // 此类(Class)必须确认TuneDelegate协议,实现tuneDidReceiveDeeplink 和tuneDidFailDeeplinkWithError回调。
    [Tune registerDeeplinkListener:self];
 
    // 解除以下注释,可在应用内购买交易发生时,允许Tune自动发送“purchase”事件。
    //[Tune automateIapEventMeasurement:YES];
 
    return YES;
}
 
- (void)applicationDidBecomeActive:(UIApplication *)application {
// 应用从后台(background)转到前台(foreground)时,发送“Open”事件。
//如果不调用此函数,安装和打开事件将不被记录。
    [Tune measureSession];
}
 
// 捕捉通用链接
- (BOOL)application:(UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity restorationHandler:(nonnull void (^)(NSArray * _Nullable))restorationHandler {
    // 确认Tune是否要操作通用链接。如果是,深度链接将被您的tuneDidReceiveDeeplink或者tuneDidFailDeeplinkWithError回调处理。
    BOOL handledByTune = [Tune handleContinueUserActivity:userActivity restorationHandler:restorationHandler];
   
    // 如果Tune不操作通用链接,自行处理链接。
    if (!handledByTune) {
    	...
    }
    return YES;
}
 
//捕获深度链接 。( iOS >= 9.0)
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options {
    // 如果此应用被深度链接打开,调用Tune deep link setter.
    [Tune handleOpenURL:url options:options];
    // 在此处理内容链接(Take care of the routing yourself here)
    ...
    return YES;
}
 
// 捕获深度链接。( iOS < 9.0)
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
    //如果此应用被深度链接打开,调用Tune deep link setter.
    [Tune handleOpenURL:url sourceApplication:sourceApplication];
    // 在此处理内容链接(Take care of the routing yourself here)
    ...
    return YES;
}
 
// TuneDelegate 协议,深度链接回调
// 更多信息请参考 https://developers.tune.com/sdk/implementing-a-deferred-deep-link/#code-platform-ios
- (void)tuneDidReceiveDeeplink:(NSString *)deeplink {
    NSLog(@"Tune deferred deeplink = %@", deeplink);
   
    //打开深度链接的操作
    ...
}
 
- (void)tuneDidFailDeeplinkWithError:(NSError *)error {
    NSLog(@"Tune failed to receive deferred deep link: error = %@", error);
}

需要注意的事项

  •      “your_advertiser_ID”和“your_conversion_key”的值对应于您在TMC平台上创建“Mobile App”的时候,TUNE提供的Advertiser ID和Conversion Key。有关Advertiser ID和Conversion Key的更多内容,请参考Finding Advertiser ID and Conversion Key
  •      Deferred deep linking功能仅支持MAT/TUNE SDK for iOS 3.15.0及以上版本。有关Deferred deep linking的更多内容,请参考Implementing a Deferred Deeplink
  •  如果您的应用已有一定的用户基础(已经安装您的应用的用户),可以使用TUNE提供的几种方法识别和处理已有用户(Pre-Existing User),从而避免将这些用户归因于某个媒体。有关识别和处理已有用户的方案,可以参考handle existing users prior to SDK implementation
  •      MAT SDK v3.9+ 版本支持自动监测成功应用内购买事件。您可以在集成TUNE SDK的时候,根据需要选择性的配置此功能。在此功能打开的同时,您不需要且不应该监测成功的购买事件,从而避免重复的事件监测。有关此功能的更多信息,请参考IAP Event Measurement
  •      MAT SDK v3.10.0+版本将在您已经导入AdSupport.framework的情况下,自动收集广告标识符(IFA,Identifier for Advertising)。IFA的收集将提升iOS的事件归因的准确性。如果您的应用内使用了IFA,需要在iTunes Connect上提交应用之前,明确IFA的用途。(use IFA in your mobile app)如果您决定禁止收集IFA,请参考Implications of Removing Apple’s IFA
  •      MAT SDK v3.10.0+版本将自动收集用户设备的位置信息,从而促进基于地理位置的市场(用户)细分。位置信息仅在导入了CoreLocation.framework且应用已经从终端用户获取访问位置信息的情况下收集。TUNE SDK不会向终端用户发送位置信息访问权限请求。更多相关信息,请参考Location Auto-Collection
  •      从SDK v3.11.0开始,您可以通过相应的TUNE设定控制IFA和设备位置信息自动收集的行为。

测试和故障排除

如果您想测试是否在您的应用上正确集成和实现了TUNE SDK,您可以直接在TUNE 平台上测试,无需另行测试环境,详情参考Testing Your Mobile App

随着iOS 9的发布,苹果介绍了通用链接(Universal Links),它让应用内的内容搜索成为可能。本质上,通用链接让深度链接(Deep Link)变得更加容易,从而让用户从网页体验进入到应用内体验。有关如何配置您的应用和浏览器,从而让其支持通用链接,请参考Implementing iOS Universal Links

监测Event

在您的应用上集成和实现TUNE SDK 并可以记录会话(Logging Session)之后,您可以尝试将广泛且多样的应用内事件(In-App Event)集成到您的应用中。(例如用户注册和应用内购买等)

通过监测和分析您的应用内事件,您可以更加有效的优化您的应用功能和广告战略。更重要的是您可以了解用户是如何与您的应用进行互动,从而直接地影响您构建有效、获益的广告方案。

如果您要构建自定义事件(Custom Event),请参考Event Builder

 

 

在应用程序的事件中