菜鸟教程小白 发表于 2022-12-13 09:33:28

ios - 使用 Reachability 类在 ios 中检查整个应用程序中的事件互联网连接


                                            <p><p>我正在构建一个应用程序,只要互联网连接处于事件状态,它就需要将离线数据与服务器同步。因此,目前如果在将数据推送到服务器时互联网连接丢失,它将保存在数据库中,并且只要连接处于事件状态,它就会将数据推送到服务器。我正在使用来自苹果的新可达性类版本:3.5。根据他们针对特定 ViewController 的示例,我可以这样做</p>

<pre><code>- (void)viewDidLoad
{
[ addObserver:self selector:@selector(reachabilityChanged:) name:kReachabilityChangedNotification object:nil];

    self.internetReachability = ;
    ;
    ;

}

/*!
* Called by Reachability whenever status changes.
*/
- (void) reachabilityChanged:(NSNotification *)note
{
    Reachability* curReach = ;
    NSParameterAssert(]);
    ;
}


- (void)updateInterfaceWithReachability:(Reachability *)reachability
{
   if (reachability == self.internetReachability)
    {
   //Internet is active again- call api to push data to server
   }
}
</code></pre>

<p>这适用于特定的 ViewController 。新的 Reachability 类中是否还有其他方法可以检查整个应用程序的运行情况?还是我必须在每个 ViewController 中执行此检查以检查事件的 Internet 连接?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>你可以通过appdelegate查看。我以前也这样做过。</p>

<pre><code>@property (strong,nonatomic)Reachability *reach;
@property(nonatomic)NetworkStatus netStatus;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[ addObserver:self
                                             selector:@selector(checkNetworkStatus:)
                                                 name:kReachabilityChangedNotification object:nil];
    reach = ;
    ;

    ;
}

- (void)checkNetworkStatus:(NSNotification *)notice
{
    netStatus = ;
    if (netStatus == NotReachable)
    {
          NSLog(@&#34;The internet is down.&#34;);
         // do stuff when network gone.
    }
    else
    {
          NSLog(@&#34;The internet is working!&#34;);
          // do stuff when internet comes active
          [ postNotificationName:@&#34;INTERNET_AVAILABLE&#34; object:nil];
    }
}
</code></pre>

<p>现在,当互联网出现时,它会通知。在您需要检查互联网连接的所有 View 中添加通知观察者。它正在检查整个应用程序的互联网。并且属性被合成。</p>

<p>======== 编辑</p>

<p>在应用委托(delegate).h</p>

<pre><code>+ (BOOL)isActiveInternet;
</code></pre>

<p>在应用中的delegate.m</p>

<pre><code>+ (BOOL)isActiveInternet
    {
      netStatus = ;
      if (netStatus == NotReachable)
      {
            NSLog(@&#34;The internet is down.&#34;);
             // do stuff when network gone.
            return FALSE;
      }
      else
      {
            NSLog(@&#34;The internet is working!&#34;);
            // do stuff when internet comes active
            [ postNotificationName:@&#34;INTERNET_AVAILABLE&#34; object:nil];
            return TRUE;
      }
    }
</code></pre>

<p>这样您就可以在项目中的任何位置直接调用此方法,例如</p>

<pre><code>if() {
      //yes net available do your stuff
}
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 使用 Reachability 类在 ios 中检查整个应用程序中的事件互联网连接,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/26250944/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/26250944/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 使用 Reachability 类在 ios 中检查整个应用程序中的事件互联网连接