iOS 首次打开第三方app弹出“想要打开XXX应用”,action捕捉

在开发过程中,app之间的跳转,最通用的方法是通过urlScheme。iOS9以后增加了这样一个弹窗:如果是首次打开某一个第三方app,会弹出如下图的一个Alert,这是系统自动弹出,开发人员无法控制该Alert。

系统弹窗

如果想捕捉到用户行为,应该采用何种策略呢?
1.如果用户点击“打开”,自然而然的就会进入到第三方app,app的生命周期就会如下:
弹出Alert=>applicationWillResignActive=>点击打开=>applicationDidEnterBackground=>返回=>applicationWillEnterForeground=>applicationDidBecomeActive
2.如果用户点击“取消”,alert弹窗会消失,app的生命周期如下所示:
弹出Alert=>applicationWillResignActive=>点击取消=>applicationDidBecomeActive
通过上述不同交互会有不同的生命周期,可以用来判断用户的不同操作。对于iOS9以上的系统,通过一个变量记录app的四个生命周期的状态,如果从applicationWillResignActive直接跳到applicationDidBecomeActive,那就是点击来取消按钮;如果中间经历了其他生命周期状态回到applicationDidBecomeActive,那就是从其他app返回来了。
部分代码如下:

@interface AppDelegate ()

@property (nonatomic, assign) int appLifeCycle;
@end

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    self.appLifeCycle = 5;//app运行时候标志位
    NSLog(@"didFinishLaunchingWithOptions");
    return YES;
}

- (void)applicationWillResignActive:(UIApplication *)application {
    self.appLifeCycle = 0;
    NSLog(@"applicationWillResignActive");
}

- (void)applicationDidEnterBackground:(UIApplication *)application {
    self.appLifeCycle++;
    NSLog(@"applicationDidEnterBackground");
}

- (void)applicationWillEnterForeground:(UIApplication *)application {
    self.appLifeCycle++;
    NSLog(@"applicationWillEnterForeground");
}

- (void)applicationDidBecomeActive:(UIApplication *)application {
    self.appLifeCycle++;
    NSLog(@"applicationDidBecomeActive");
    if (self.appLifeCycle == 1 && [[[UIDevice currentDevice] systemVersion] floatValue] >= 9.0) {
        NSLog(@"it is the first to cancel opening other application above iOS9");
    }else if (self.appLifeCycle != 6){
        NSLog(@"back to myself");//返回到自己app
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,267评论 4 61
  • 作者,乔纳森·弗兰岑,1959出生于美国伊利诺伊州,著名小说家、随笔作家,被评论界誉为最出色的美国小说家之一,其作...
    薄荷_8fad阅读 859评论 0 0
  • 1.使用64位Ubuntu系统(32位编译时会出现一些问题)2.必须使用jdk1.6(其他版本均不可以)
    张汉阅读 608评论 0 0
  • 2019年1月8日,星期二,晴天 人生没有彩排,每一天都是现场直播 ! 一 : 明明白白做人,坦坦荡荡做事。信任的...
    黄晓来阅读 245评论 1 2
  • 如果两人关系很亲密、放松,他们沉浸在二人世界里,不容易给第三方留空间。 如果两人关系很疏离,比如和陌生人的一面之交...
    漠然老师阅读 333评论 0 0