在Appcelerator Mobile应用程序中检查网络连接类型是否为2G、3G、4G或WiFi



我正在Appcelerator Titanium 5.2 SDK中开发一个应用程序,该应用程序在sync过程中需要稳定的互联网连接。

我想限制应用程序执行工作,仅当其联机并且网络连接类型为3G4GWiFi时。我不希望应用程序通过2GEDGEGPRS等慢速连接进行同步…

如何在appcelerator钛合金移动应用程序中实现这一点?

我可以查看我的应用程序,如果它是在线的或不使用这种方法:

Alloy.Globals.online = Ti.Network.online;
Ti.Network.addEventListener( 'change', function( e ) {
    Alloy.Globals.online = e.online;
});

这只是告诉我连接状态,但是我要的连接类型信息不可用。有什么想法吗?

我知道你可以使用Ti.Network.networkTypeName或Ti.Netwwork.networkType,如下所述:https://docs.appcelerator.com/platform/latest/#/api/Tatianium.Network-property-networkTypeName但我不确定这对你来说是否足够。我可以向您推荐的第二件事是这个模块:https://github.com/benbahrenburg/Pinger它只是一个检查用户是否有互联网的工具_(ツ)_/

我们为此创建了一个本地iOS模块。不幸的是,这个模块还不能作为开放源代码使用。如果您熟悉模块,这将有助于您入门(文件名:MobileNetworkType.m):

#import "MobileNetworkType.h"
@import CoreTelephony;
@interface MobileNetworkType ()
@end
@implementation MobileNetworkType
- (NSString *)getMobileDataConnectionType {
  CTTelephonyNetworkInfo *telephonyInfo = [CTTelephonyNetworkInfo new];
  NSString *radioAccessTechnology =       telephonyInfo.currentRadioAccessTechnology;
if ([radioAccessTechnology isEqualToString:CTRadioAccessTechnologyGPRS]) {
    return @"GPRS";
} else if ([radioAccessTechnology isEqualToString:CTRadioAccessTechnologyEdge]) {
    return @"Edge";
} else if ([radioAccessTechnology isEqualToString:CTRadioAccessTechnologyWCDMA]
           || [radioAccessTechnology isEqualToString:CTRadioAccessTechnologyHSDPA]
           || [radioAccessTechnology isEqualToString:CTRadioAccessTechnologyHSUPA]
           || [radioAccessTechnology isEqualToString:CTRadioAccessTechnologyCDMA1x]
           || [radioAccessTechnology isEqualToString:CTRadioAccessTechnologyCDMAEVDORev0]
           || [radioAccessTechnology isEqualToString:CTRadioAccessTechnologyCDMAEVDORevA]
           || [radioAccessTechnology isEqualToString:CTRadioAccessTechnologyCDMAEVDORevB]
           || [radioAccessTechnology isEqualToString:CTRadioAccessTechnologyeHRPD]) {
    return @"3G";
} else if ([radioAccessTechnology isEqualToString:CTRadioAccessTechnologyLTE]) {
    return @"LTE";
}
return @"Unknown";
}
@end

和(文件名:MobileNetworkType.h):

@interface MobileNetworkType : NSObject 
-(NSString *) getMobileDataConnectionType;
@end

最新更新