• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

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

[复制链接]
菜鸟教程小白 发表于 2022-12-11 17:00:40 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

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

以下是我关注的一些引用链接 Reachability airplane mode (3G) vs. Wifi Using Private Framework: Importing RadioPreferences.h



Best Answer-推荐答案


您好,我创建了自己的检查方法

#import <Foundation/Foundation.h>
#import "AppDelegate.h"
@interface InternetConnectionCheck : NSObject

+(BOOL)CheckConnection ;

@end


#import "InternetConnectionCheck.h"
#import <SystemConfiguration/SystemConfiguration.h>

@implementation InternetConnectionCheck

static InternetConnectionCheck *singletonObject = nil;


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


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

+(BOOL)CheckConnection{
    NSString * str = [[InternetConnectionCheck sharedInstance] newtworkType];
    if ( [[InternetConnectionCheck sharedInstance] connectedToInternet]==YES) {
        NSLog(@"INTERNET AVAILABLE VIA %@", str);
        return YES;
    }else{
        NSString * msg = [NSString stringWithFormat"Device is Connected Via %@ But We Unable to reach",str];
        UIAlertView * alert =[[UIAlertView alloc]initWithTitle"Error" message:msg delegate:nil cancelButtonTitle"Ok" otherButtonTitles: nil];
        [alert show];
        return NO;
    }
    return NO;
}


-(NSString * )newtworkType {
    NSArray *subviews = [[[[UIApplication sharedApplication] valueForKey"statusBar"] valueForKey"foregroundView"]subviews];
    NSNumber *dataNetworkItemView = nil;

    for (id subview in subviews) {
        if([subview isKindOfClass:[NSClassFromString(@"UIStatusBarDataNetworkItemView") class]]) {
            dataNetworkItemView = subview;
            break;
        }
    }

    NSString * connectedBy =@"None";
    switch ([[dataNetworkItemView valueForKey"dataNetworkType"]integerValue]) {
        case 0:
            NSLog(@"No wifi or cellular");
            connectedBy=@"No wifi or cellular";
            break;

        case 1:
            NSLog(@"2G");
            connectedBy= @"2G";
            break;

        case 2:
            NSLog(@"3G");
            connectedBy= @"3G";
            break;

        case 3:
            NSLog(@"4G");
            connectedBy= @"4G";
            break;

        case 4:
            NSLog(@"LTE");
            connectedBy= @"LTE";
            break;

        case 5:
            NSLog(@"Wifi");
            connectedBy=@"Wifi";
            break;


        default:
            break;
    }
    return connectedBy;
}

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

    NSHTTPURLResponse *response;
    NSURLResponse * resp;

    [self sendSynchronousRequest:request returningResponse:&resp error:nil];

    if ([resp isKindOfClass:[NSHTTPURLResponse class]]) {
        response = (NSHTTPURLResponse*)resp;
    }

    return ([response statusCode] == 200) ? YES : NO;

}

- (NSData *)sendSynchronousRequestNSURLRequest *)request returningResponseNSURLResponse **)response errorNSError **)error
{

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

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

    while (!reqProcessed) {
        [NSThread sleepForTimeInterval:0];
    }

    *response = resp;
    return data;
}

@end

并像使用它一样

 // Check Connection.
    BOOL Y =  [InternetConnectionCheck CheckConnection];
    NSLog(@"bool %s", Y ? "true" : "false");

要在模拟器上进行测试,您可以查看 my Blog

关于iOS - 在应用程序中跟踪飞行模式状态(我想在 appstore 构建中使用它),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38450494/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap