网络进入iOS时如何自动与服务器同步?

时间:2015-08-13 05:34:33

标签: ios

我在离线模式下在数据库中有一些数据。设备一旦上线,我想与服务器同步。我正在尝试使用Reachability。但我没有得到Reachability的任何回复。我正在尝试下面的代码,但它不起作用。

我在ViewDidiLoad

中调用此方法
 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name:kReachabilityChangedNotification object:nil];

然后调用此方法:

-(BOOL)reachabilityChanged:(NSNotification*)note
{
  BOOL status =YES;

  Reachability * reach = [note object];
  if ([reach currentReachabilityStatus] == NotReachable )
  {
    status = NO;
    NSLog(@"NetWork is not Available");
  }
  else
  {
    status = YES;
    NSLog(@"NetWork is Available");
  }
  return status;

}

但没有任何事情发生。请有人建议我。我的要求是当网络到来的时候自动db数据将与服务器同步。无需触摸设备。

先谢谢...

2 个答案:

答案 0 :(得分:1)

我已经使用了可达性类进行网络检查 在ViewDidload方法中添加以下行:

 [[NSNotificationCenter defaultCenter]
             addObserver:self
             selector:@selector(checkNetworkStatus:)
             name:kReachabilityChangedNotification
             object:nil];

kReachabilityChangedNotification在Reachability类中设置。

还添加以下方法:

-(void) checkNetworkStatus:(NSNotification *)notice
{
    // called after network status changes

    NetworkStatus internetStatus = [internetReachable currentReachabilityStatus];
    switch (internetStatus)
    {
        case NotReachable:
        {
            NSLog(@"The internet is down.");

            break;
        }
        case ReachableViaWiFi:
        {
            NSLog(@"The internet is working via WIFI.");
            break;
        }
        case ReachableViaWWAN:
        {
            NSLog(@"The internet is working via WWAN.");

            break;
        }
    }
}

我已使用上面的代码进行网络检查。

希望这会对你有所帮助。

答案 1 :(得分:0)

您可能缺少启动通知程序。

使可达性对象/属性说“internetReachability”,当你添加观察者时,启动通知程序。

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged :) name:kReachabilityChangedNotification object:nil];     internetReachability = [Reachability reachabilityForInternetConnection];     [internetReachability startNotifier];

希望这会有所帮助。:)