企业信息

    北京沃赢科技有限公司

  • 11
  • 公司认证: 营业执照已认证
  • 企业性质:
    成立时间:
  • 公司地址: 北京市 海淀区 海淀街道 北京市海淀区银海大厦
  • 姓名: 刘老师
  • 认证: 手机未认证 身份证未认证 微信未绑定

    我赢职场iOS 7 SDK的介绍

  • 所属行业:商务服务 教育培训 管理培训
  • 发布日期:2015-07-21
  • 阅读量:277
  • 价格:面议
  • 产品规格:不限
  • 产品数量:10000.00 件
  • 包装说明:不限
  • 发货地址:北京海淀海淀  
  • 关键词:我赢职场,在线教育,ios

    我赢职场iOS 7 SDK的介绍详细内容

    iOS 7 SDK: 如何使用后台获取(Background Fetch)
    本文主要教你如何使用iOS 7 SDK多任务处理API--Background Fetch。我们生活在一个社交化的世界中,大部分用户都安装了几个社交类app,但是每次用户打开app,他们必须要等待app加载更新才能看到跟更多较新的内容,对于越来越没耐心的用户来说这一点无疑令人非常痛苦。现在,iOS 7的后台获取(Background Fetch)可以很好地解决这个问题,在用户打开应用之前,app就能自动更新获取内容。
    ?
    以检测流量的app为例来说明Background Fetch如何工作。如果你会在每天早上查看应用,我们假设在8:20 AM,,你的iOS app必须在当时获得信息。现在如果操作系统知道你将会在8:20 AM左右使用app,那么它可以提前获得数据,从而提供更好的用户体验。
    ?
    关于iOS 7多任务执行更全面的概览可参看我们的主题“?iOS 7 SDK: Multitasking Enhancements”。以下我们将会以一个实例工程来演示如何使用后台获取(Background Fetch)。
    ?
    1.项目安装
    第一步是创建一个iOS 7项目,并选择单视图app,接着添加一些有用的属性:
    ?
    1
    2
    3
    4	@property (nonatomic) NSMutableArray *objects; 
    @property (nonatomic) NSArray *possibleTableData; 
    @property (nonatomic) int numberOfnewPosts; 
    @property (nonatomic) UIRefreshControl *refreshControl;
    
    
    NSMutablearray对象将会被用来在TableView中保存对象列表。在这个教程中,你将不能调用任何服务来获得数据。相反,你将使用possibleTableData数组,并随机从中选择几个对象。整个numberOfnewPosts代表新发布的内容--每次进行请求或者接收后台获取时可用。refrestControl是一个在更新任务时使用的控件。由于不在教程之内,所以本文不会在此展开。
    ?
    在Main.storyboard中,把ViewController改为UITableViewController,下一步,点击UITableViewController,转到Editor > Embed in >?Navigation Controller。记得把自定义类设置为ViewController。然后转至ViewController.m,第一步加载一些数据。以下代码将会申请内存并创建数据对象,创建一个标题以及初始化refreshControl:
    ?
    1
    2
    3
    4
    5	self.possibleTableData = [NSArray arrayWithObjects:@"Spicy garlic Lime Chicken",@"Apple Crisp II",@"Eggplant Parmesan II",@"Pumpkin Ginger Cupcakes",@"Easy Lasagna", @"Puttanesca", @"Alfredo Sauce", nil]; 
    self.navigationItem.title = @"Delicious Dishes"; 
    self.refreshControl = [[UIRefreshControl alloc] init]; 
    [self.refreshControl addTarget:self action:@selector(insertNewObject:) forControlEvents:UIControlEventValueChanged]; 
    [self.tableView addSubview:self.refreshControl];
    以上代码将会产生一个提醒,因为我们丢失了insertNewObject method。让我们来解决它。该方法将会产生一个随机数,并且将从日期数组获得对象相同的数据,然后它将会通过新值来更新tableview。
    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10	- (void)insertNewObject:(id)sender 
    { 
    ????self.numberOfnewPosts = [self getRandomNumberBetween:0 to:4]; 
    ????NSLog(@"%d new fetched objects",self.numberOfnewPosts); 
    ????for(int i = 0; i < self.numberOfnewPosts; i++){ 
    ????????int addPost = [self getRandomNumberBetween:0 to:(int)([self.possibleTableData count]-1)]; 
    ????????[self insertObject:[self.possibleTableData objectAtIndex:addPost]]; 
    ????} 
    ????[self.refreshControl endRefreshing]; 
    }
    当你添加以下方法时,getRandomNumberBetween提醒将会被禁止:
    ?
    1
    2
    3	-(int)getRandomNumberBetween:(int)from to:(int)to { 
    ????return (int)from + arc4random() % (to-from+1); 
    }
    
    
    为了在 NSArray object上加载对象,我们需要执行TableView委托函数。
    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16	- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 
    ????return 1; 
    } 
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    ????return self.objects.count; 
    } 
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    ????UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath]; 
    ????cell.textLabel.text = self.objects[indexPath.row]; 
    ????if(indexPath.row < self.numberOfnewPosts){ 
    ????????cell.backgroundColor = [UIColor yellowColor]; 
    ????} 
    ????else
    ????????cell.backgroundColor = [UIColor whiteColor]; 
    ????return cell; 
    }
    非常简单吧?如果运行项目,你会看到一个类似下图的界面:
    
    2. Background Fetch
    现在开始创建Background Fetch功能,首先从Project开始,接着是Capabilities,然后Put Background Modes ON,再选择Background Fetch,如下图所示:
    
    但仅仅做这个是不够的。默认地,app不会调用后台API,所以你需要在AppDelegate.m文件中把以下代码添加至-(BOOL)application:(UIApplication?*)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions method.
    ?
    1	[[UIApplication sharedApplication] setMinimumBackgroundFetchInterval:UIApplicationBackgroundFetchIntervalMinimum];
    这个可以让系统决定何时应该展示新内容。现在你的app已经知道启动ackground fetch,让我们告诉它要做些什么。方法-(void)application:(UIApplication *)application?performFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler将会对你有所帮助。每当执行后台获取时该方法都会被调用,并且应该被包含在AppDelegate.m文件中。以下是完整版本:
    ???
    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10	-(void)application:(UIApplication *)application performFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler { 
    ????UINavigationController *navigationController = (UINavigationController*)self.window.rootViewController; 
    ????id topViewController = navigationController.topViewController; 
    ????if ([topViewController isKindOfClass:[ViewController class]]) { 
    ????????[(ViewController*)topViewController insertNewObjectForFetchWithCompletionHandler:completionHandler]; 
    ????} else { 
    ????????NSLog(@"Not the right class %@.", [topViewController class]); 
    ????????completionHandler(UIBackgroundFetchResultFailed); 
    ????} 
    }
    
    
    下一步你应该也把ViewController头文件放进AppDelegate.m类。
     #import?"ViewController.h"?
    注意insertNewObjectForFetchWithCompletionHandler并没有被创建,所以还需要在ViewController.h中声明它。
    ?
     -?(void)insertNewObjectForFetchWithCompletionHandler:(void?(^)(UIBackgroundFetchResult))completionHandler;? 
    现在关注执行文件,类似于之前insertNewObject调用的添加。我们使用completionHandler来和系统“交流”,并让它告诉我们app是否现在获取数据,或者当前是否有有效数据。
    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13	- (void)insertNewObjectForFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler { 
    ????NSLog(@"Update the tableview."); 
    ????self.numberOfnewPosts = [self getRandomNumberBetween:0 to:4]; 
    ????NSLog(@"%d new fetched objects",self.numberOfnewPosts); 
    ????for(int i = 0; i  Simulate Background Fetch开始。
    学习链接/ios/?tg=5009295340
    学习交流群:317140762
    
    

    http://jiexiaotan.cn.b2b168.com
    欢迎来到北京沃赢科技有限公司网站, 具体地址是北京市海淀区海淀街道北京市海淀区银海大厦,联系人是刘老师。 主要经营iOS开发、互联网架构师、安卓、Oracle、SAP、RedHat等。 单位注册资金未知。 我们公司主要服务有:教育教学软件等,我们愿以优质的服务和诚意、为您提供精良的产品和专业枝术,共创美好未来!