FlurryLaunchOrigin 0.0.1

FlurryLaunchOrigin 0.0.1

测试已测试
Lang语言 Obj-CObjective C
许可证 MIT
Released最后发布2015年9月

Daryl LowmikerollinsDaryl Low维护。



  • 作者
  • Daryl Low

用于检测应用启动源(如应用启动、深度链接、本地通知、远程通知等)的包装器。虽然是为 Flurry 设计的,但该库不依赖于 Flurry。应用可以查询检测到的当前启动源或在其发生变化时接收通知。

目前支持的启动“方法”包括

  • 常规启动(主屏幕、Siri 等…)
  • 深度链接(Safari、openURL:等…)
  • 本地通知
  • 远程通知
  • 连续性
  • 手表
  • 蓝牙
  • 后台位置
  • 后台获取
  • 后台 NSURLSession
  • 后台新闻摊位

快速入门

获取代码

您可以将 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:,您还需要仪器化相关的代理
    1. 始终仪器化 applicationDidEnterBackground:
  • 当应用挂起时,需要清除原始状态
    1. 对于具有完成块的方法,始终使用返回的完成块
  • 包装的完成块将在应用挂起时清除原始状态

通知

虽然 applicationDidBecomeActive: 对于大多数用法来说已经足够好,但它并不总是在后台运行时被调用。此外,从源头信息更新和应用程序进入活跃状态这一段时间内可能发生很多事情。

跟踪源头变化的一个更好的方法是监听 通知。

待办事项

  • [] 添加监视和扩展生命周期支持

许可

MIT