【问题标题】:WebService Call after timeInterval时间间隔后的 WebService 调用
【发布时间】:2015-10-12 08:50:01
【问题描述】:

我想每 6 小时调用一次我的 Web 服务。我在 iOS 中比较新。请帮助任何帮助。我被卡住了。

【问题讨论】:

  • 使用 NSTimer 定期调用方法。
  • 您可以使用后台刷新模式,但无法安排特定的时间间隔,例如 6 小时。如果您需要正好六个小时,那么从您的服务器静默推送是唯一的方法

标签: ios objective-c iphone ios8


【解决方案1】:

您可以使用 NSTimer 并将其安排为 6 小时

        NSTimer *timer = nil;
        timer = [NSTimer scheduledTimerWithTimeInterval:6*60*60 //6 hour
                                                          target:self
                                                        selector:@selector(performAction)
                                                        userInfo:nil
                                                         repeats:YES];

【讨论】:

【解决方案2】:

您可以使用 NSTimer 调用。这会在您设置的时间自动调用。 例如

  NSTimer *timer= [NSTimer scheduledTimerWithTimeInterval:10.0(your time) target:self selector:@selector(someMethod) userInfo:nil repeats:YES];

-(void)someMethod
{
   ////API called here...
}

【讨论】:

  • 谢谢,但是当用户杀死应用程序时,此方法是否调用。我想在任何情况下调用。
  • 如果应用程序被杀死,则不会调用任何方法。如果应用程序后台状态则调用它。如果应用程序被杀死,就不可能调用方法。
  • 但是您在 AppDelegate 文件中调用方法。- (void)applicationDidEnterBackground:(UIApplication *)application
  • 你可以请求一个后台任务,它会给你大约 3 分钟,但你不能安排一个 NSTimer 10 小时,并期望它在你的应用程序处于后台时触发,无论你的应用程序是否被杀死
【解决方案3】:
In ViewDidLoad 
 NSTimer *timer = [NSTimer timerWithTimeInterval:360.0 target:self selector:@selector(hideandview) userInfo:nil repeats:YES];

    -(void)hideandview
    {
       ////API called here...
    }

【讨论】:

    【解决方案4】:

    当您拨打电话时,您应该将最后一次保存在偏好 (NSUserDefaults) 中。

    每当应用启动时。启动计时器并检查当前时间与上次保存的时间并获取差异。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-04
      • 1970-01-01
      • 2014-03-04
      • 2016-04-05
      相关资源
      最近更新 更多