2010-05-18 14 views
10

iPhone işletim sisteminde, uygulamanın iPad 3G veya iPad Wi-Fi üzerinde çalışıp çalışmadığını kontrol etmek için herhangi bir özellik veya başka mekanizma var mı? UIDevice sınıfı bunun gibi bir şey sağlamaz gibi görünüyor.iPhone'lar işletim sistemi: iPad 3G'yi iPad Wi-Fi'den programlı olarak nasıl ayırt edebilirsiniz?

Uygulamam kapsamlı bir şekilde internet erişimini kullanıyor ve 3G gecikmeleri veya ek maliyetler beklenebileceği konusunda VEYA uygulamadan iPad 3'te bazı süslü pop-up'larla çalışmasını yasaklayan kullanıcıyı açıkça uyarmak istiyorum.

cevap

4

3G ağ yeteneklerinden başka, bir fark yaratmaya gerek olmadığını varsayalım. Apple tarafından sağlanan Reachability.h sınıfını kullanarak internet bağlantısının olup olmadığını ve Mobil ağ veya Kablosuz ağ olup olmadığını kontrol edebilirsiniz. Burada

örnek kod: http://developer.apple.com/iphone/library/samplecode/Reachability/Introduction/Intro.html

Ulaşılabilirlik sınıfı aşağıdaki değerleri içerir:

ReachableViaCarrierDataNetwork, ReachableViaWiFiNetwork veya NotReachable.

+1

başvurum yoğun internet erişimi kullanıyor ve ben açıkça kullanıcıyı uyarmak istiyorum 3G gecikmeler veya ek üzerinde maliyetler beklenebilir VEYA hatta bir uygulama ile iPad 3 üzerinde çalışan bazı fantezi pop-up ile ban. Reachability sınıfı bunun uygulanmasına izin verir mi? – matm

+0

ReachableViaWWAN'ın "3G veya Wi-Fi" ve ReachableViaWifi measn "Wi-Fi only" anlamına geldiğini düşünmüştüm. Doğrumuyum? – matm

+0

CarrierDataNetwork ve ReachableVieaWifiNetwork arasında ayrım yapabilirsiniz. – texmex5

2
uygulama ikinci nesil iPad'de çalışıyorsa Sen WiFi ve 3G iPad'lerde ayırt edebilir

:

+ (NSString *) iPadModelName 
{ 
    size_t size; 
    sysctlbyname("hw.machine", NULL, &size, NULL, 0); 
    char *machine = malloc(size); 
    sysctlbyname("hw.machine", machine, &size, NULL, 0); 
    NSString *platform = [NSString stringWithCString:machine encoding:NSASCIIStringEncoding]; 
    free(machine); 
    if ([platform isEqualToString:@"iPad2,1"])  return @"iPad 2 (WiFi)"; 
    if ([platform isEqualToString:@"iPad2,2"])  return @"iPad 2 (GSM)"; 
    if ([platform isEqualToString:@"iPad2,3"])  return @"iPad 2 (CDMA)"; 

    return platform; 
}