Проверка доступности iPhone

Я нашел несколько примеров кода для того, чтобы делать то, что хочу (проверка доступности), но ничто из этого не кажется достаточно точным, чтобы быть полезным для меня. Я не могу понять, почему это не хочет играть хорошо.

У меня есть достижимость.h / m в моем проекте, я делаю

#import  

И я добавил фреймворк. У меня тоже есть:

 #import "Reachability.h" 

в верхней части .m, в которой я пытаюсь использовать достижимость.

 Reachability* reachability = [Reachability sharedReachability]; [reachability setHostName:@"http://www.google.com"]; // set your host name here NetworkStatus remoteHostStatus = [reachability remoteHostStatus]; if(remoteHostStatus == NotReachable) {NSLog(@"no");} else if (remoteHostStatus == ReachableViaWiFiNetwork) {NSLog(@"wifi"); } else if (remoteHostStatus == ReachableViaCarrierDataNetwork) {NSLog(@"cell"); } 

Это дает мне всевозможные проблемы. Что я делаю не так? Я хороший кодер, мне просто трудно найти время, чтобы выяснить, что нужно сделать, чтобы включить то, что я хочу делать, независимо от того, хочу ли я знать, что я хочу делать или нет. (Так разочаровывает)

Обновление: Это то, что происходит. Это в моем контролере зрения, который у меня есть

 #import  

а также

 #import "Reachability.h" 

настроен. Это моя наименее любимая часть программирования. проблемы с достижением http://sneakyness.com/reachability.png


FWIW, мы никогда не заканчивали реализацию этого в нашем коде. Две функции, требующие доступа в Интернет (вход в лотерею и покупка DVD-диска), не были основными функциями. Ничто другое не требовало доступа в Интернет.

Вместо того, чтобы добавлять больше кода, мы просто устанавливаем фон обоих интернет-просмотров на уведомление, сообщающее пользователям, что они должны быть подключены к Интернету, чтобы использовать эту функцию. Это было в теме с остальной частью интерфейса приложения, и было сделано хорошо / со вкусом. Они ничего не говорили об этом во время процесса утверждения, однако мы получили личный телефонный звонок, чтобы проверить, что мы раздавали предметы, которые действительно относились к фильму. В соответствии с их обычно неопределенным соглашением, вам не разрешено иметь лотереи иначе.

Я также думаю, что это более строго относится к их идеям «только для использования, если они вам нужны».

Вот ссылка iTunes на приложение EvoScanner.

На вашем снимке экрана кажется, что у вас нет возможности для повышения эффективности в вашем проекте. Вы должны загрузить Reachability от Apple:

https://developer.apple.com/library/content/samplecode/Reachability/Introduction/Intro.html

И добавьте оба файла .h и .m в свой проект.

Обновление: вы отметили, что у вас есть Возможность. Но, глядя на самую последнюю версию, я могу понять, почему у вас есть ошибки, которые вы указали, – они изменили API, и вы, вероятно, используете образец кода, который вы нашли где-то в другом месте. Пытаться:

в .h файле:

 //import Reachability class #import "Reachability.h" // declare Reachability, you no longer have a singleton but manage instances Reachability* reachability; 

в .m файле:

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNetworkChange:) name:kReachabilityChangedNotification object:nil]; reachability = [Reachability reachabilityForInternetConnection]; [reachability startNotifier]; NetworkStatus remoteHostStatus = [reachability currentReachabilityStatus]; if(remoteHostStatus == NotReachable) {NSLog(@"no");} else if (remoteHostStatus == ReachableViaWiFi) {NSLog(@"wifi"); } else if (remoteHostStatus == ReachableViaWWAN) {NSLog(@"cell"); } ..... - (void) handleNetworkChange:(NSNotification *)notice { NetworkStatus remoteHostStatus = [reachability currentReachabilityStatus]; if(remoteHostStatus == NotReachable) {NSLog(@"no");} else if (remoteHostStatus == ReachableViaWiFi) {NSLog(@"wifi"); } else if (remoteHostStatus == ReachableViaWWAN) {NSLog(@"cell"); } } 
 [reachability setHostName:@"http://www.google.com"]; 

Внимание! Я столкнулся с проблемой, что он всегда «NotReachable», если используется префикс http: //.

Рафаэль

Вот правильный код, поскольку он работает для меня сегодня!

 [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(handleNetworkChange:) name: kReachabilityChangedNotification object: nil]; reachability = [Reachability reachabilityForInternetConnection]; [reachability startNotifier]; NetworkStatus remoteHostStatus = [reachability currentReachabilityStatus]; if(remoteHostStatus == NotReachable) {NSLog(@"no");} else if (remoteHostStatus == ReachableViaWiFi) {NSLog(@"wifi"); } else if (remoteHostStatus == ReachableViaWWAN) {NSLog(@"cell"); } 

У вас есть код в любом месте?

 [reachability startNotifier]; 

если ваш код достижимости из примера Apple, то вам нужно сделать это, прежде чем он сможет начать сообщать вам о статусах.

изменить это

 reachability = [Reachability reachabilityForInternetConnection]; 

к этому

 reachability = [[Reachability reachabilityForInternetConnection] retain]; 
  • Использование iPhone - dequeueReusableCellWithIdentifier
  • Можно ли изменить цвет фона UIButtons?
  • Сортировка NSArray строк или объектов даты
  • Как я могу заставить UITextField двигаться вверх, когда клавиатура присутствует?
  • Точка с запятой после имени метода в файле реализации Objective-C
  • Преобразование NSArray в NSDictionary
  • Как создать глобальные функции в Objective-C
  • Ошибка Apple Mach-O Linker при компиляции для устройства
  • Как получить IMEI на iPhone?
  • Есть ли какие-либо frameworks для выделения текста в pdf-файле после рендеринга на iphone
  • Анимированный gif не работает в наложении MKMapView с использованием MKOverlayRenderer
  • Давайте будем гением компьютера.