zoukankan      html  css  js  c++  java
  • ios开发-程序压后台后,悄悄的抓取数据~~

    我们使用某个app的时候,当我们将程序压到后台之后,我们希望它还能从服务器抓取一些数据,类似微博,微信,qq这些程序压后台

    之后,我们依然能看到icon上显示未读数量。但是ios系统是伪多任务操作系统。

    当我们将程序压后台之后,大概过1分钟,程序就会被关闭。就不能抓取数据了。很久之前的做法是:压后台之后,播放一个没有声音

    的音频,保证程序存活。然后苹果很快发现了这种方法,并禁止了。我们用这种方法提交审核之后,一般都会被苹果驳回。当然,苹果

    依然很贴心的给我提供了相应的解决办法。(使用swift演示。oc的方法与swift一致)

    第一步,如图,设置

    第二步,在AppDelegate中

     func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool 

    中设置最小后台抓取时间

    1         //设置最小后台抓取间隔
    2         application.setMinimumBackgroundFetchInterval(UIApplicationBackgroundFetchIntervalMinimum)

    第三步,在AppDelegate中实现一个代理方法,并编写代码

     1  ///后台抓取数据的代理方法
     2     func application(application: UIApplication, performFetchWithCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) {
    14         
    15         //请求需要获取的数据
    16         HJCStatus.loadUnReadStatus { (count) -> () in
    17             application.applicationIconBadgeNumber = count
    18             
    19             if count > 0 {
    //回调,告诉此次网络请求的结果
    20 completionHandler(UIBackgroundFetchResult.NewData) 21 }else{
    //回调,告诉此次网络请求的结果
    22 completionHandler(UIBackgroundFetchResult.NoData) 23 } 24 } 25 }

     这一步中,有几点注意点

            1. 不能做太大数据量的请求,要尽量的小

            2. 网络请求,结束后,一定要通过回调方法,告诉系统此次网络请求的结果

            - 有数据

            - 无数据

            - 错误

            系统可以根据报告,自动调度后台的网络数据抓取的频率,具体的调度时间,程序员无法干预

            3. 如果后台抓取数据过大,同时网络`超时`频繁,整个后台任务会被系统挂起,不再调度

     

    第四步,在设置如图的

  • 相关阅读:
    dedecms自定义表单提交获取时间跟ip地址
    JQuery购物车多物品数量的加减+总价计算
    jquery手机触屏滑动拼音字母城市选择器代码
    js实现图片上传实时显示
    js实现发送验证码倒计时效果
    JS 仿支付宝input文本输入框放大组件
    js实现倒计时效果
    jquery统计输入文字的个数并对其进行判断
    【Linux】Linux系统安全设置
    java泛型(generics)
  • 原文地址:https://www.cnblogs.com/haojuncong/p/4534797.html
Copyright © 2011-2022 走看看