博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS中判断是否首次下载app
阅读量:4289 次
发布时间:2019-05-27

本文共 1515 字,大约阅读时间需要 5 分钟。

//判断是否首次下载

在程序启动的时候app delegate 中先判断

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    

BOOL isFirst=[[NSUserDefaultsstandardUserDefaultsboolForKey:@"firstDownload"];

    if(!isFirst){

//如果不存在,则是第一次下载

        NSLog(@"第一次下载");

        [[NSUserDefaultsstandardUserDefaultssetBool:YESforKey:@"firstDownLoad"];

//执行相应的操作,如第一次下载发红包,给优惠券等

    }else {

        NSLog(@"不是第一次下载");

    }

   

    returnYES;

}

//这个是用本地偏好设置存储的,会存在一个问题,如果应用删除了,又重新下载,(当iCloud不存储时)会清除缓存。吧数据保存到服务器,根据手机唯一的标志,保存;下次登陆的时候从服务器取出判断;

手机标识的方法:1.钥匙串保存(不存app的删除要消失,一直在电脑中);

1.钥匙串KeyChian 是保存在沙盒之外的存储数据,相当于Dictionary, 所有应用都可以获取和保存,因此当一个软件卸载之后完全不影响里面的数据,这样当软件重新安装之后,还可以获取里面的原数据。

 钥匙串的第三方框架SFHFKeychainUtils

   //保存数据

       BOOL s = [SFHFKeychainUtils storeUsername:name andPassword:pswd forServiceName:server updateExisting:NO error:nil];

   //获取密码

        NSString * psw = [SFHFKeychainUtils getPasswordForUsername:name andServiceName:server error:nil];

还有许多框架:

SSKeyChains

KeychainItemWrapper

#pragma mark - 判断是不是首次登录或者版本更新

-(BOOL )isFirstLauch{

    //获取当前版本号

    NSDictionary *infoDic = [[NSBundle mainBundle] infoDictionary];

    NSString *currentAppVersion = infoDic[@"CFBundleShortVersionString"];

    //获取上次启动应用保存的appVersion

    NSString *version = [[NSUserDefaults standardUserDefaults] objectForKey:kAppVersion];

    //版本升级或首次登录

    if (version == nil || ![version isEqualToString:currentAppVersion]) {

        [[NSUserDefaults standardUserDefaults] setObject:currentAppVersion forKey:kAppVersion];

        [[NSUserDefaults standardUserDefaults] synchronize];

        return YES;

    }else{

        return NO;

    }

}

转载地址:http://wzmgi.baihongyu.com/

你可能感兴趣的文章
分享一首小诗--《致程序员》
查看>>
为什么百度只抓取了首页而不抓取我的网站的内页的原因分析
查看>>
年薪170万的阿里P8级员工征婚有感--话说阿里真有钱,这员工要求的条件真多
查看>>
又是一年桂花飘香时,祝我们伟大的祖国70年华诞更加繁荣昌盛,祝大家国庆节快乐
查看>>
谷歌浏览器chrome即将在2020年底停止支持flash,我们程序员该怎么办
查看>>
如何将数据采集到 Elasticsearch 服务
查看>>
面试官:mysql表设计要注意什么?
查看>>
一些精致小众网站收集录
查看>>
计算机科学探秘之linux发展史
查看>>
程序员每天早上早来10分钟的好处
查看>>
互联网30年,泡沫如梦,一个个泡沫和风口过后,会是什么样的结局
查看>>
升级centos 6.8 服务器的gcc
查看>>
网络案例分析之999皮炎平出鹤顶红色号的口红
查看>>
API网关在微服务架构中的应用,这一篇就够了
查看>>
微服务部署:蓝绿部署、滚动部署、灰度发布、金丝雀发布
查看>>
架构成长之路:Spring Cloud微服务如何实现熔断降级?
查看>>
JVM发生内存溢出的8种原因、及解决办法
查看>>
SpringBoot2.0 基础案例(12):基于转账案例,演示事务管理操作
查看>>
高性能负载均衡:nginx搭建tomcat集群
查看>>
Spring切面中的正则表达式
查看>>