菜鸟教程小白 发表于 2022-12-11 17:00:40

iOS - 在应用程序中跟踪飞行模式状态(我想在 appstore 构建中使用它)


                                            <p><p>在我的应用程序中,我想知道飞行模式的当前状态。我浏览了很多链接,有些人说我们可以使用可达性来了解飞行模式状态,但没有得到正确的结果。和通过使用 <strong>Private Framework: Importing RadioPreferences.h</strong> 了解飞行模式状态的方法相同,但是有人说使用这个我们不能将应用程序提交到 Appstore。但我必须将应用提交到应用商店</p>

<p>以下是我关注的一些引用链接
<a href="https://stackoverflow.com/questions/13095109/reachability-airplane-mode-3g-vs-wifi" rel="noreferrer noopener nofollow">Reachability airplane mode (3G) vs. Wifi</a>
<a href="https://stackoverflow.com/questions/13387213/using-private-framework-importing-radiopreferences-h" rel="noreferrer noopener nofollow">Using Private Framework: Importing RadioPreferences.h</a> </p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>您好,我创建了自己的检查方法</p>

<pre><code>#import &lt;Foundation/Foundation.h&gt;
#import &#34;AppDelegate.h&#34;
@interface InternetConnectionCheck : NSObject

+(BOOL)CheckConnection ;

@end


#import &#34;InternetConnectionCheck.h&#34;
#import &lt;SystemConfiguration/SystemConfiguration.h&gt;

@implementation InternetConnectionCheck

static InternetConnectionCheck *singletonObject = nil;


+ (id) sharedInstance
{
    if (! singletonObject) {
      singletonObject = [ init];
    }
    return singletonObject;
}


// Initialize class object
- (id)init
{
    if (! singletonObject) {
      singletonObject = ;
    }
    return singletonObject;
}

+(BOOL)CheckConnection{
    NSString * str = [ newtworkType];
    if ( [ connectedToInternet]==YES) {
      NSLog(@&#34;INTERNET AVAILABLE VIA %@&#34;, str);
      return YES;
    }else{
      NSString * msg = ;
      UIAlertView * alert =[initWithTitle:@&#34;Error&#34; message:msg delegate:nil cancelButtonTitle:@&#34;Ok&#34; otherButtonTitles: nil];
      ;
      return NO;
    }
    return NO;
}


-(NSString * )newtworkType {
    NSArray *subviews = [[[ valueForKey:@&#34;statusBar&#34;] valueForKey:@&#34;foregroundView&#34;]subviews];
    NSNumber *dataNetworkItemView = nil;

    for (id subview in subviews) {
      if(]) {
            dataNetworkItemView = subview;
            break;
      }
    }

    NSString * connectedBy =@&#34;None&#34;;
    switch ([integerValue]) {
      case 0:
            NSLog(@&#34;No wifi or cellular&#34;);
            connectedBy=@&#34;No wifi or cellular&#34;;
            break;

      case 1:
            NSLog(@&#34;2G&#34;);
            connectedBy= @&#34;2G&#34;;
            break;

      case 2:
            NSLog(@&#34;3G&#34;);
            connectedBy= @&#34;3G&#34;;
            break;

      case 3:
            NSLog(@&#34;4G&#34;);
            connectedBy= @&#34;4G&#34;;
            break;

      case 4:
            NSLog(@&#34;LTE&#34;);
            connectedBy= @&#34;LTE&#34;;
            break;

      case 5:
            NSLog(@&#34;Wifi&#34;);
            connectedBy=@&#34;Wifi&#34;;
            break;


      default:
            break;
    }
    return connectedBy;
}

- (BOOL)connectedToInternet
{
    NSString *urlString = @&#34;http://www.google.com/&#34;;
    NSURL *url = ;
    NSURLRequest *request = [NSURLRequest requestWithURL:url
                                                                                             cachePolicy:NSURLRequestUseProtocolCachePolicy
                                                                                       timeoutInterval:5.0];

    NSHTTPURLResponse *response;
    NSURLResponse * resp;

    ;

    if (]) {
      response = (NSHTTPURLResponse*)resp;
    }

    return ( == 200) ? YES : NO;

}

- (NSData *)sendSynchronousRequest:(NSURLRequest *)request returningResponse:(NSURLResponse **)response error:(NSError **)error
{

    NSError __block *err = NULL;
    NSData __block *data;
    BOOL __block reqProcessed = false;
    NSURLResponse __block *resp;

    [[ dataTaskWithRequest:request completionHandler:^(NSData * _Nullable _data, NSURLResponse * _Nullable _response, NSError * _Nullable _error) {
      resp = _response;
      err = _error;
      data = _data;
      reqProcessed = true;
    }] resume];

    while (!reqProcessed) {
      ;
    }

    *response = resp;
    return data;
}

@end
</code></pre>

<p>并像使用它一样</p>

<pre><code> // Check Connection.
    BOOL Y =;
    NSLog(@&#34;bool %s&#34;, Y ? &#34;true&#34; : &#34;false&#34;);
</code></pre>

<p>要在模拟器上进行测试,您可以查看 <a href="http://sagarshirbhate.blogspot.in/2016/07/network-link-conditioner.html" rel="noreferrer noopener nofollow">my Blog</a> </p></p>
                                   
                                                <p style="font-size: 20px;">关于iOS - 在应用程序中跟踪飞行模式状态(我想在 appstore 构建中使用它),我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/38450494/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/38450494/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: iOS - 在应用程序中跟踪飞行模式状态(我想在 appstore 构建中使用它)