2016-04-28 23 views
0

我正在研究Appcelerator Titanium 5.2 SDK中的應用程序,該程序在sync進程中需要穩定的Internet連接。檢查Appcelerator Mobile應用程序中的網絡連接類型是2G,3G,4G還是WiFi?

我想限制應用程序的工作,只有當它的在線和網絡連接類型是3G4GWiFi。我不希望應用程序通過慢速連接進行同步,如2GEDGE,GPRS等...

我該如何在appcelerator鈦移動應用程序中實現此目的?

我可以檢查出來,通過我的應用程序,如果是在網上或不使用這種方法:

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

這隻會告訴我的連接狀態,但連接類型的信息,我以後不可用。有任何想法嗎?

回答

2

我知道你可以使用Ti.Network.networkTypeName或Ti.Network.networkType這裏解釋:https://docs.appcelerator.com/platform/latest/#!/api/Titanium.Network-property-networkTypeName 但我不確定這對你是否足夠。我可以推薦你的第二件事是這個模塊:https://github.com/benbahrenburg/Pinger 這只是一個工具來檢查用戶是否有互聯網¯_(ツ)_ /¯

+0

'網絡類型爲String 。返回NONE,WIFI,LAN,MOBILE或UNKNOWN之一 - 這不會告訴你它的2g,3g,4g等等,我不需要一個模塊來檢查我在線或不在線。我上面提出的代碼就足夠了。 – Latheesan

+1

它返回你,如果它是移動或無線...至少是東西。而Ti.Network.online很糟糕,因爲如果你連接起來但在網絡中有一些問題,它會返回你的真實...只是試圖幫助你的隊友 –

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 

和(文件名:MobileNetworkType.h):

@interface MobileNetworkType : NSObject 
-(NSString *) getMobileDataConnectionType; 
@end 
相關問題