A.app启动步骤
1.加入了授权步骤之后,最先要判断app内是否已经登陆了账号
2.在程序启动的时候,先检测是否已有登陆账号
AppDelegate:
 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
     // Override point for customization after application launch.

     // 启动后显示状态栏
     UIApplication *app = [UIApplication sharedApplication];
     app.statusBarHidden = NO;

     // 设置window
     self.window = [[UIWindow alloc] init];
     self.window.frame = [UIScreen mainScreen].bounds;
     [self.window makeKeyAndVisible];

     // 检查是否已有登陆账号
     NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
     NSString *filePath = [docPath stringByAppendingPathComponent:@"accountInfo.plist"];
     NSDictionary *accountInfo = [NSDictionary dictionaryWithContentsOfFile:filePath];

     if (!accountInfo) { // 如果不存在登陆账号,要先进行授权
         self.window.rootViewController = [[HVWOAuthViewController alloc] init];
     } else {
         /** 新版本特性 */
         // app现在的版本
         // 由于使用的时Core Foundation的东西,需要桥接
         NSString *versionKey = (__bridge NSString*) kCFBundleVersionKey;
         NSDictionary *infoDic = [[NSBundle mainBundle] infoDictionary];
         NSString *currentVersion = [infoDic objectForKey:versionKey];

         // 上次使用的版本
         NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
         NSString *lastVersion = [defaults stringForKey:versionKey];

         // 如果版本变动了,存储新的版本号并启动新版本特性图
         if (![lastVersion isEqualToString:currentVersion]) {

             // 存储
             [defaults setObject:currentVersion forKey:versionKey];
             [defaults synchronize];

             // 开启app显示新特性
             HVWNewFeatureViewController *newFeatureVC = [[HVWNewFeatureViewController alloc] init];
             self.window.rootViewController = newFeatureVC;
         } else {
             // 创建根控制器
             HVWTabBarViewController *tabVC = [[HVWTabBarViewController alloc] init];
             self.window.rootViewController = tabVC;
         }
     }

     return YES;
 }
 
在授权控制器,授权完毕之后也要继续进入app:
 //  HVWOAuthViewController.m
 /** 根据access_code获取access_token */
 - (void) accessTokenWithAccessCode:(NSString *) accessCode {
     // 创建AFN的http操作请求管理者
     AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

     // 参数设置
     NSMutableDictionary *param = [NSMutableDictionary dictionary];
     param[";
     param[@"client_secret"] = @"cc577953b2aa3aa8ea220fd15775ea35";
     param[@"grant_type"] = @"authorization_code";
     param[@"code"] = accessCode;
     param[@"redirect_uri"] = @"http://www.cnblogs.com/hellovoidworld/";

     // 发送请求
     [manager POST:@"https://api.weibo.com/oauth2/access_token" parameters:param success:^(AFHTTPRequestOperation *operation, NSDictionary *accountInfo) {
         [MBProgressHUD hideHUD];

         // 返回的是用户信息字典
         // 存储用户信息,包括access_token到沙盒中
         NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
         NSString *filePath = [docPath stringByAppendingPathComponent:@"accountInfo.plist"];
         [accountInfo writeToFile:filePath atomically:YES];

         /** 新版本特性 */
         // app现在的版本
         // 由于使用的时Core Foundation的东西,需要桥接
         NSString *versionKey = (__bridge NSString*) kCFBundleVersionKey;
         NSDictionary *infoDic = [[NSBundle mainBundle] infoDictionary];
         NSString *currentVersion = [infoDic objectForKey:versionKey];

         // 上次使用的版本
         NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
         NSString *lastVersion = [defaults stringForKey:versionKey];

         UIWindow *window = [UIApplication sharedApplication].keyWindow;

         // 如果版本变动了,存储新的版本号并启动新版本特性图
         if (![lastVersion isEqualToString:currentVersion]) {
             // 存储
             [defaults setObject:currentVersion forKey:versionKey];
             [defaults synchronize];

             // 开启app显示新特性
             HVWNewFeatureViewController *newFeatureVC = [[HVWNewFeatureViewController alloc] init];
             window.rootViewController = newFeatureVC;
         } else {
             // 创建根控制器
             HVWTabBarViewController *tabVC = [[HVWTabBarViewController alloc] init];
             window.rootViewController = tabVC;
         }

     } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
         [MBProgressHUD hideHUD];
         HVWLog(@"请求access_token失败 ----> %@", error);
     }];

 }
第一次启动:
需要授权+新特性显示
 

[iOS微博项目 - 2.4] - 重新安排app启动步骤的更多相关文章

  1. [iOS微博项目 - 3.0] - 手动刷新微博

    github: https://github.com/hellovoidworld/HVWWeibo   A.下拉刷新微博 1.需求 在“首页”界面,下拉到一定距离的时候刷新微博数据 刷新数据的时候使 ...

  2. [iOS微博项目 - 2.5] - 封装授权和用户信息读写业务

    github: https://github.com/hellovoidworld/HVWWeibo   A.封装授权业务 1.把app的授权信息移动到HVWWeibo-Prefix.pch中作为公共 ...

  3. [iOS微博项目 - 2.3] - 用户取消对app的授权

    github: https://github.com/hellovoidworld/HVWWeibo   A.用户取消对app的授权 用户可以在微博网站上取消对某个应用(app)的授权   1.打开& ...

  4. [iOS微博项目 - 2.2] - 在app中获取授权

    github: https://github.com/hellovoidworld/HVWWeibo   A.发送授权请求 1.使用UIWebView加载请求页面 自定义一个继承UIViewContr ...

  5. [iOS微博项目 - 2.6] - 获取微博数据

    github: https://github.com/hellovoidworld/HVWWeibo   A.新浪获取微博API 1.读取微博API     2.“statuses/home_time ...

  6. [iOS微博项目 - 2.0] - OAuth授权3步

    A.概念      OAUTH协议为用户资源的授权提供了一个安全的.开放而又简易的标准.与以往的授权方式不同之处是OAUTH的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用 ...

  7. [iOS微博项目 - 1.7] - 版本新特性

    A.版本新特性 1.需求 第一次使用新版本的时候,不直接进入app,而是展示新特性界面 github: https://github.com/hellovoidworld/HVWWeibo       ...

  8. [iOS微博项目 - 1.0] - 搭建基本框架

    A.搭建基本环境   github: https://github.com/hellovoidworld/HVWWeibo   项目结构:   1.使用代码构建UI,不使用storyboard     ...

  9. [iOS微博项目 - 4.0] - 自定义微博cell

    github: https://github.com/hellovoidworld/HVWWeibo A.自定义微博cell基本结构 1.需求 创建自定义cell的雏形 cell包含:内容.工具条 内 ...

随机推荐

  1. Beta版本发布说明

    发布地址 https://github.com/LongWerLingShi/DataObtainingAndHandling/tree/beta 版本开发背景 首先,应软件工程课程要求,我们小组针对 ...

  2. Unity3D]引擎崩溃、异常、警告、BUG与提示总结及解决方法

    此贴会持续更新,都是项目中常会遇到的问题,总结成贴,提醒自己和方便日后检查,也能帮到有需要的同学. 若各位有啥好BUG好异常好警告好崩溃可以分享的话,请多多指教.xuzhiping7#qq.com. ...

  3. 利用btrace工具监控在线运行java程序

     一.作用 可以用于对运行中java程序进行诊断监控分析,也可以用于开发阶段查看一些异常信息或者调用过程(如有些第三方代码没有源代码,不便于debug调试). 注:如果用于对在线运行系统的诊断,需 ...

  4. 关于hibernate非主键多对一关联

    一直以来,用hibernate做多对一时,关联的都是主键,今天,同事设计的表,关联的却不是主键,这下麻烦了,hibernate的many-to-one默认关联的都是主键,原来,hibernate提供了 ...

  5. [Poi2010]Monotonicity 2 线段树

    这道题考试的时候先打了个dfs暴力.又打了个O(n²)的动规.然后竟然心血来潮拍了一下..明明知道过不去的...然后水了50分(20个测试点这么多啊啊啊啊). 因为它已经提前给你如果长度为i时下一位的 ...

  6. Centos安装python3

    安装环境 系统:阿里云服务器centos7.5系统 看见好多博客对centos安装python3的方式各不相同且都不完整,今天我来完整的演示安装python3 1.下载python3源码包 命令 wg ...

  7. 开源框架完美组合之Spring.NET + NHibernate + ASP.NET MVC + jQuery + easyUI 中英文双语言小型企业网站Demo(转)

    热衷于开源框架探索的我发现ASP.NET MVC与jQuery easyUI的组合很给力.由于原先一直受Ext JS框架的licence所苦恼,于是痛下决心寻找一个完全免费的js框架——easyUI. ...

  8. 【emWin】例程二十九:窗口对象——Messagebox

    简介: 使用MESSAGEBOX 小工具可在带有标题栏和“确定”按钮(必须按下才能关闭窗口)的 框架窗口中显示消息.本实验通过点击下图中的按键来创建一个Messagebox对话框. 触摸校准(上电可选 ...

  9. MVC删除操作前confirm提示

    本段时间,忙于公司的ERP问题,博客也没有怎样更新了.昨晚于家中学习了MVC时,对删除记录前,让用户有后悔选择.即是说,能先给用户一个提示,然后再让用户决定是否删除记录.以前练习MVC,对删除记录,均 ...

  10. C语言学习笔记—code:blocks工具debug调试异常

    C语言开发工具:code:bolocks17.12版本踩坑记录: 一.下载codeblocks后,安装完成,创建第一个项目在构建mian主函数时构建报错: Goto "Settings-&g ...