如何判断用户是否为第一次进入app或者是第一次进入指定页面

本文介绍了一种在iOS应用中实现新手引导的方法。通过记录版本号和首次进入特定页面的状态,来判断是否展示新手引导。利用缓存管理和UIViewController的viewDidAppear方法进行逻辑控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


1. 可以将版本号,或者判断第一次进入某页面的参数写在model中

#import <Foundation/Foundation.h>


@interface UserFirstLaunchModel : NSObject


@property (copy, nonatomic) NSString *appVersion;

@property (copy, nonatomic) NSString *appBuild;

@property (nonatomicBOOL isFirstLaunch;//第一次进入app

@property (nonatomic) BOOL isHomeControllerFirstLaunch;//第一次进入首页

@property (nonatomic) BOOL isOrderStatusControllerFirstLaunch;//第一次进入订单状态页

...


@end


2. 在app delegate中根据版本号判断是否第一次安装,取出缓存中的UserFirstLaunch对应的字典信息,与当前app比对版本号信息,如果不一致说明为第一次安装,就将app的版本号信息和首次进入的信息都初始化为YES后缓存到本地


- (void)judgeIsFirstLaunch{

    NSString *appVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];

    NSString *appBuild = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];

//取出缓存中的UserFirstLaunch对应的字典信息,这里我把缓存中的信息整理放到单例中管理,意思知道了就可以了

    UserFirstLaunchModel *firstLaunchModel = [RMUserInfo shareInstance].firstLaunchModel;

    if ( ![firstLaunchModel.appVersion isEqualToString:appVersion] || ![firstLaunchModel.appBuild isEqualToString:appBuild]) {

        NSDictionary *firstLaunchDict = @{@"appVersion" : appVersion, @"appBuild":appBuild, @"isFirstLaunch": @YES

@"isHomeControllerFirstLaunch": @YES, @"isOrderStatusControllerFirstLaunch":@YES

};

        NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];

        [userDefaults setObject:firstLaunchDict forKey:@"UserFirstLaunch"];

        [userDefaults synchronize];

    }

}



3. 比如,要求第一次安装进入首页,加一个新手指引。就可以在viewDidAppear中判断是否为第一次安装进入首页,再添加一个新手指引的方法,然后在新手指引结束后修改本地信息。


//这是使用XSportView集成的新手指引方法,但是显示效果可能没有很理想,但是思路很好,你也可以把imageview铺到视图上,点击切换图片,最后移除

- (void)showXSportView{

    UserFirstLaunchModel *firstLaunchModel = [RMUserInfo shareInstance].firstLaunchModel;

    if (!firstLaunchModel.isHomeControllerFirstLaunch) {

        return;

    }

    

    TXHXSportLight *SportLight = [[TXHXSportLight alloc]init];

    SportLight.messageArray = @[

      @"这是《天下货》",

      @"点这里可以切换地址",

      @"点这里查看消息",

    ];

    SportLight.rectArray = @[

      [NSValue valueWithCGRect:CGRectMake(0, 0, 0, 0)],

      [NSValue valueWithCGRect:CGRectMake(kScreenWidth / 2, 40, 50, 20)],

      [NSValue valueWithCGRect:CGRectMake(kScreenWidth - 20, 40, 40, 40)]

    ];

    [self presentViewController:SportLight animated:false completion:^{

        NSMutableDictionary *firstLaunchDict = [firstLaunchModel mj_keyValues];//这边用的是MJExtention框架,总之意思对了就可以了

        [firstLaunchDict setObject:@NO forKey:@"isHomeControllerFirstLaunch"];//修改本地首次进入首页的信息,在做缓存,下次就不会走这个方法了。

        NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];

        [userDefaults setObject:firstLaunchDict forKey:@"UserFirstLaunch"];

        [userDefaults synchronize];

    }];

}


- (void)viewDidAppear:(BOOL)animated{

    [super viewDidAppear:animated];

    //设置状态栏文本颜色为白色

    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

 

    [self showXSportView];

}





评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值