我正在使用Appcelerator Titanium 5.2 SDK中的应用程序,这需要在sync
过程中建立稳定的互联网连接。
我想限制应用程序才能正常工作,只有当其在线和网络连接类型为3G
,4G
或WiFi
时才有效。我不希望应用通过2G
,EDGE
,GPRS
等慢速连接进行同步...
如何在appcelerator钛金属移动应用中实现这一目标?
我可以查看我的应用程序,如果它在线或不使用此方法:
Alloy.Globals.online = Ti.Network.online;
Ti.Network.addEventListener( 'change', function( e ) {
Alloy.Globals.online = e.online;
});
这只告诉我连接状态,但我所追求的连接类型信息不可用。有什么想法吗?
答案 0 :(得分:2)
我知道您可以使用Ti.Network.networkTypeName或Ti.Network.networkType,如下所述:https://docs.appcelerator.com/platform/latest/#!/api/Titanium.Network-property-networkTypeName 但我不确定这对你来说是否足够。我可以推荐你的第二件事是这个模块:https://github.com/benbahrenburg/Pinger 它只是一个检查用户是否有互联网的工具¯_(ツ)_ /¯
答案 1 :(得分:1)
我们为此创建了一个原生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
和(filename:MobileNetworkType.h):
@interface MobileNetworkType : NSObject
-(NSString *) getMobileDataConnectionType;
@end