测试已测试 | ✗ |
Lang语言 | Obj-CObjective C |
许可证 | MIT |
Released最后发布 | 2015年9月 |
由Daryl Low、mikerollins、Daryl Low维护。
用于检测应用启动源(如应用启动、深度链接、本地通知、远程通知等)的包装器。虽然是为 Flurry 设计的,但该库不依赖于 Flurry。应用可以查询检测到的当前启动源或在其发生变化时接收通知。
目前支持的启动“方法”包括
您可以将 FlurryLaunchOrigin Cocoapod 添加到项目中,或者将 FlurryLaunchOrigin.[hm] 文件剪切并粘贴到您的项目中。
将以下片段添加到您的应用程序代理中
#import <FlurryLaunchOrigin/FlurryLaunchOrigin.h>
...
- (instancetype)init
{
self = [super init];
if (self) {
// **** THIS IS WHERE THE MAGIC HAPPENS ****
[FlurryLaunchOrigin autoInstrumentDelegate:self];
}
return self;
}
...
- (void)applicationDidBecomeActive:(UIApplication *)application
{
// **** This is probably a good place to get the update launch origin ****
NSLog(@"%s: Method: %@", __PRETTY_FUNCTION__, [FlurryLaunchOrigin launchMethod]);
NSLog(@"%s: Origin: %@", __PRETTY_FUNCTION__, [FlurryLaunchOrigin launchOrigin]);
NSLog(@"%s: Properties: %@", __PRETTY_FUNCTION__, [FlurryLaunchOrigin launchProperties]);
NSMutableDictionary *sessionProps = [NSMutableDictionary dictionary];
NSString *method = [FlurryLaunchOrigin launchMethod];
if ([method isKindOfClass:[NSString class]) {
[sessionProps setObject:method forKey:@"method"];
}
NSString *origin = [FlurryLaunchOrigin launchOrigin];
if ([origin isKindOfClass:[NSString class]) {
[sessionProps setObject:origin forKey:@"origin"];
}
[Flurry sessionProperties:sessionProps];
[Flurry addSessionOrigin:[FlurryLaunchOrigin launchOrigin]];
}
[FlurryLaunchOrigin launchProperties]
中的启动属性包含一个字典,它根据方法收集更多详细信息。例如,推送通知将包含推送数据的元素。可根据需要将这些数据添加到会话属性中。
虽然自动仪器化非常酷,但它依赖于某些 Objective-C 运行时黑客技巧(这里不提其名)。如果在某种程度上让您烦恼,该库包括手动仪器化方法。只需将它们添加到您的 UIApplicationDelegate
中,并遵循以下规则即可:1. 确保您仪器化了应用支持的所有入口点
application:didFinishLaunchingWithOptions:
并非唯一地方!openURL:
,您还需要仪器化相关的代理applicationDidEnterBackground:
虽然 applicationDidBecomeActive:
对于大多数用法来说已经足够好,但它并不总是在后台运行时被调用。此外,从源头信息更新和应用程序进入活跃状态这一段时间内可能发生很多事情。
跟踪源头变化的一个更好的方法是监听 通知。
MIT