索引
WiseTracker
1. SDK 安装及初始化
1.1 在 XCode 项目文件中的 Podfile 文件中按以下方式添加 SDK。
pod 'WiseTracker'
如果已经安装了 SDK,有时还需要显示安装的 SDK 版本。用以下方式显式指定要安装的 SDK 版本即可。
pod 'WiseTracker', '~> 21.3.27'
在 Podfile 中添加相应行后,启动 Terminal 程序,执行以下命令。
cmd> pod install
如果需要进行 SDK 版本升级,执行以下命令。
cmd> pod install --repo-update
安装正常后,可以查看以下所示的文件夹结构。
1.2 以下方式应用设置。
1) 在“Project - Target - BuildPhase - Link Binary With Libraries”中单击“+”按钮,添加以下4个库。
- CoreTelephony.framework
- Systemconfigureation.framework
- JavascriptCore.framework
- WebKit.framework
2) 针对libz.dylib framework的使用,为了利用NSData扩展类型,在Build Settings – Linking – Other Linker Flags中添加以下值。
3) http通信允许设置
- 要允许http通信,请在info.plist文件中添加如下所示的NSAppTransportSecurity
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
1.3 按照以下方法复制AppKey并应用。
1) 在http://report.wisetracker.co.kr上登录。
2) 设置 – 基本设置 – 服务 – iOS 分析代码(AppKey) 点击 – 复制对应语言的AppKey后应用。
3) 将复制的AppKey在SDK应用目标项目的AppDelegate的didFinishLaunchingWithOptions函数中应用如下。
- Objective-C : #import<WiseTracker/WiseTracker.h>
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[WiseTracker applicationKey:@"앱의 APPKEY 삽입"];
[WiseTracker setApplication:application];
[WiseTracker initEnd:launchOptions];
return YES;
}
- Swift : import WiseTracker
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
WiseTracker.applicationKey("앱의 APPKEY 삽입")
WiseTracker.setApplication(application)
WiseTracker.initEnd(launchOptions)
return true
}
2. 用户路径分析应用
2.1 DeepLink 分析应用
- 通过已设置的自定义url打开的事件进行分析。分析需要在已设置自定义url方案的应用上进行。
- 为DeepLink分析应用如下。
- Objective-C
iOS 4.2–9.0
-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{
[WiseTracker urlRefererCheck:sourceApplication url:url];
return YES;
}
或者
iOS 9.0+
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
[WiseTracker urlRefererCheck:@"" url:url];
return YES;
}
- Swift
iOS 4.2–9.0
func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
WiseTracker.urlRefererCheck(sourceApplication,url: url)
return true
}
或者
iOS 9.0+
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
WiseTracker.urlRefererCheck("",url: url)
return true
}
2.2 Univarsal Link 분석 적용
2.2.1 Univarsal Link 사용을 위해 Associated Domains에 WiseTracker 서비스 도메인 등록(아래 이미지 참조)
- applinks:cdn.wisetracker.co.kr
- applinks:ads.wisetracker.co.kr
2.2.2 在上述两个域名服务器上,将应用的捆绑ID和团队ID提交给我们
2.2.3 对应用应用以下函数
: “continueUserActivity”部分需要按以下方式应用,才能通过统一链接实现广告分析。
- Objective-C
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity* )userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler{
[WiseTracker setApplication:application];
NSString* encode = [[url absoluteString] stringByReplacingOccurrencesOfString:@"%" withString:@"%%"];
NSString* appLink = [WiseTracker universalLinkCheck:encode];
...
return YES;
}
- Swift
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
if let uniLink = userActivity.webpageURL?.absoluteString {
WiseTracker.setApplication(application)
let appLink = WiseTracker.universalLinkCheck(uniLink)
...
}
return false;
}
2.3 Facebook广告分析设置
为了通过Facebook广告分析应用程序安装和内应用转换性能,需要额外的设置。对于未应用Facebook广告分析SDK的用户,请根据以下链接进行安装: Facebook SDK安装
仅当应用中已安装Facebook SDK时,才应用本文件的内容;如果不满足条件,则不应应用。
如果应用中已安装Facebook SDK,则在Wisetracker的init方法下添加以下设置。
Objective-C
if (launchOptions[UIApplicationLaunchOptionsURLKey] == nil) {
[FBSDKAppLinkUtility fetchDeferredAppLink:^(NSURL *url, NSError *error) {
if (error) {
NSLog(@"Received error while fetching deferred app link %@", error);
}
if (url) {
[WiseTracker setFacebookReferrerData:url];
}
}];
}
Swift
FBSDKAppLinkUtility.fetchDeferredAppLink({ url, error in
if error != nil {
if let anError = error {
print("Received error while fetching deferred app link \(anError)")
}
}
if let unwrappedUrl = url {
WiseTracker.setFacebookReferrerData(unwrappedUrl)
}
})
如果应用了以上设置,则通过Facebook广告的正常安装将得到正确分析。要检查设置是否正确应用,请使用Facebook提供的“App Ads Helper”测试深度链接是否工作。您可以通过以下路径开始测试:
https://developers.facebook.com -> Tools & Support > App Ads Helper
2.3.1 选择要测试的应用后,点击页面下方的 Developer Tool 的 Test Deep Link。
2.3.2 如果测试设备上已安装该应用,请予以删除。
2.3.3 返回打开的 Facebook 测试页面。在 Send Deep Link 区域输入应用安装广告时使用的 Deep Link,然后点击 Send to iOS 按钮。此时,必须确保 Send Deferred 是选中的。
2.3.4 点击 Send to iOS 按钮时,将向已登录的 Facebook 帐户发放用于测试的应用安装广告链接。点击该链接安装应用。
2.3.5 以 Xcode 构建执行安装的应用并确认日志。如果日志内容中正常输出 Deep Link,则可以进行 Facebook 应用安装广告的分析。
2.3.6 在进行应用参与广告的情况下,在已安装应用的用户点击广告并运行应用的时刻,确认 Facebook 广告中注册的深度链接值是否有效。请准备安装测试应用的视频设备。
2.3.7 注册应用参与广告时使用的深度链接,输入到“发送深度链接”区域,然后点击“发送到iOS”按钮。此时,必须确保“发送延迟”复选框未选中。
2.3.8 点击“发送到iOS”按钮时,将发放用于测试的登录Facebook账户的应用参与广告链接。点击该链接以运行应用。
2.3.9 使用Xcode构建来运行已安装的应用并检查日志。如果日志内容如以下所示,则正常输出深度链接,可以分析Facebook应用参与广告。
2. 基本分析API
必需集成API是为利用Wisetracker的基本功能必需应应用这些代码,请推荐全部应用必需集成API的代码。
2.1 StartPage(Object obj)
作为屏幕分析的代码,在进入屏幕时(即在所有viewControlller
的viewWillAppear
中),应用下述代码。
- 在调用startPage的屏幕上,在屏幕消失时调用endPage。
- Objective-C
-(void)viewWillAppear:(BOOL)animated{
[WiseTracker startPage:self];
}
- Swift
override func viewWillAppear(animated: Bool) {
WiseTracker.startPage(self)
}
2.2 endPage(Object obj)
屏幕消失时使用。为了进行屏幕分析,需要在所有 viewControlller
的 viewWillDisappear
方法的应用中做如下操作。
- Objective-C
- (void)viewWillDisappear:(BOOL)animated{
[WiseTracker endPage:self];
}
- Swift
override func viewWillDisappear(animated: Bool) {
WiseTracker.endPage(self)
}
4. WebView 设置
通过添加一些设置,可以对混合应用也进行分析。WiseTracker 支持UIWebView和WKWebView,并为每个提供了不同的分析设置。
4.1 UIWebView
- Objective-C
-(void)webViewDidFinishLoad:(UIWebView *)webView{
[WiseTracker injectTracker:webView];
}
- Swift
func webViewDidFinishLoad(webView :UIWebView){
WiseTracker.injectTracker(webView);
}
4.2 WKWebView
在 WKUserContentController 类中添加 WiseTracker 事件处理器。
- Objective-C
// WKWebViewConfiguration 인스턴스 생성
WKWebViewConfiguration *webConfig = [[WKWebViewConfiguration alloc]init];
// 사용자 스크립트 삽입을 위한 WKUserContentController 인스턴스
WKUserContentController* userController = [[WKUserContentController alloc]init];
// WiseTrackerHandler 추가
[WiseTracker addWiseTrackerHandler:userController];
// WKUserContentController로 WKWebViewConfiguration 인스턴스 설정
webConfig.userContentController = userController;
self.wkWebView = [[WKWebView alloc] initWithFrame:웹킷뷰가 들어가는 프레임 configuration:webConfig];
- Swift
// WKWebViewConfiguration 인스턴스 생성
let webConfig = WKWebViewConfiguration()
// 사용자 스크립트 삽입을 위한 WKUserContentController 인스턴스
let userController = WKUserContentController()
// WiseTrackerHandler 추가
WiseTracker.addWiseTrackerHandler(userController)
// WKUserContentController로 WKWebViewConfiguration 인스턴스 설정
webConfig.userContentController = userController // User Content Controller 추가
wkWebview = WKWebView(frame: 웹킷뷰가 들어가는 프레임 , configuration: webConfig)
在客户实现的 ViewController 的 didFinishNavigation 方法中添加 inject 函数。
- Objective-C
- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation {
// webView 삽입
[WiseTracker injectWKTracker:webView];
}
- Swift
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
NSLog("DEBUG_WISETRACKER didFinish navigation.")
WiseTracker.injectWKTracker(webView)
4.3 WebPage 分析代码应用
当分析的对象是除 Native 外的 HTML 页面时,这样应用分析代码。使用 JavaScript 代码,在 script 元素的属性中将 type 和 id 值指定如下。
- type : wisetracker/text
- id : wiseTracker
只有在指定了 type 和 id 的情况下,WebView 上应用的事件在发生时才会被引用并执行。因此,没有指定 type 和 id 的代码将不执行任何操作。
<script type="wisetracker/text" id="wiseTracker">
/**
이 곳에 분석 코드를 적용하면 됩니다.
**/
</script>