我正在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;
});
这只是告诉我连接状态,但是我要的连接类型信息不可用。有什么想法吗?
我知道你可以使用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