【问题标题】:How to tell if the user turned off cellular data for my app?如何判断用户是否为我的应用关闭了蜂窝数据?
【发布时间】:2014-10-14 10:00:39
【问题描述】:

虽然我的应用可以在没有任何互联网连接的情况下使用,但它可能会与网络服务器交换数据(以显示一些用户统计信息)。因此,我将该应用程序宣传为“不需要互联网连接”。一些用户随后为我的应用关闭了蜂窝数据,这应该完全没问题。但是当我的应用程序尝试交换数据时,这些用户会遇到“[App Name] 的蜂窝数据已关闭”的问题。对话框。

这对他们来说很烦人,我想阻止这些对话并简单地跳过整个数据交换的事情。

Apple's Reachability Sample Code

但是,尽管我关闭了整个设备的 WiFi 和应用程序的蜂窝数据,但 Reachability 确认了积极的互联网连接。更具体地说,它报告

Reachability Flag Status: WR t------ networkStatusForFlags

无论我是否激活了蜂窝数据。当然,当蜂窝数据关闭时,实际上没有可用的互联网连接,因此数据交换失败。但无论如何都会向用户显示蜂窝数据对话框。

是否有任何方法可以检测 iOS 7 和 iOS 8 上的互联网连接是否可用,同时考虑到特定应用的蜂窝数据设置 - 所有这些都不会每次都使用蜂窝数据对话框再次打扰用户?

我的应用目前没有任何设置面板,因此我想避免设置(第二个,应用内)开关“不使用蜂窝数据”。另外,我不想将数据交换限制为 WiFi 连接,因为每个会话只有 2 KB 的数据,这对大多数用户来说并不是什么大事。

【问题讨论】:

    标签: ios cocoa-touch foundation


    【解决方案1】:

    我认为 iOS8 中唯一受支持的方法是向已知服务器发送 Ping 并使用警报面板多次错误用户。在 iOS8 上,Apple 只显示面板两次,然后即使重新启动应用程序也会跳过它,也许它会在一天后再次出现。 (这对于支持广告的应用来说真是个坏消息。)

    Apple 说 (https://devforums.apple.com/message/1059332#1059332):

    另一位开发人员写信给 DTS,因此我有机会 对此进行深入调查。唉,消息和我预期的差不多: 没有支持的方法来检测您的应用程序是否处于此状态。 也没有办法建立“无用户交互”的网络连接, 也就是说,请求连接失败而不是像 这个。

    以下文章建议使用 ping 的方法:

    http://www.splinter.com.au/how-to-ping-a-server-in-objective-c-iphone/

    http://elbsolutions.com/projects/reachability-with-simpleping-wrapper/

    【讨论】:

      【解决方案2】:

      试试这个git project.

      如何安装您可以在git 上的自述文件中查看。 我还使用了dispatch_once 来确保可达性只会被初始化一次。这种dispatch 类型有时非常有用!

      在类中定义变量

      BOOL _online = NO;
      

      初始化变量

      static dispatch_once_t predicate;
          dispatch_once(&predicate, ^{
              Reachability *reach = 
                [Reachability reachabilityWithHostname:gameApiHost];
              reach.reachableBlock = ^(Reachability*reach) {
                  NSLog(@"REACHABLE!"); _online = YES; 
              };
              reach.unreachableBlock = ^(Reachability*reach) { 
                  NSLog(@"UNREACHABLE!"); _online = NO; 
              };
              [reach startNotifier];
          });
      

      【讨论】:

      • 可达性不起作用,它错误地报告“可达”。
      猜你喜欢
      • 1970-01-01
      • 2015-09-06
      • 2020-05-31
      • 1970-01-01
      • 1970-01-01
      • 2011-03-14
      • 1970-01-01
      • 2012-10-13
      • 2013-12-27
      相关资源
      最近更新 更多