Проверка доступности 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]; 
  • Круговые контрольные бары в IOS
  • Есть ли iPhone SDK API для твиттера?
  • UISwitch в ячейке UITableView
  • Изменить цвет курсора в UITextField
  • Полноэкранный UIView со строкой состояния и наложением панели навигации наверху
  • Вам нужно создать NSAutoreleasePool в блоке в GCD?
  • View-based NSTableView с строками с динамическими высотами
  • Округлые углы на UIImage
  • Программно включить Bluetooth в iphone sdk?
  • Выполнение команды терминала из приложения Cocoa
  • Преобразование миллисекунд в NSDate
  • Interesting Posts

    Какие инструменты и методы Android лучше всего подходят для поиска утечек памяти / ресурсов?

    Установка таймаута базы данных в Entity Framework

    Скрытие «инструментов», «комментариев» и «значков» в Adobe Reader XI

    Какой смысл выражения лямбды?

    Откройте хром и запустите страницу настроек

    Как проверить диалог подтверждения с Cucumber?

    Обновление пользовательского интерфейса Android с помощью streamов

    Тип выборки по умолчанию для одного-к-одному, много-к-одному и один-ко-многим в спящем режиме

    угловая ng-init альтернатива в угловом 2

    Как я могу запустить внешнюю программу с C и проанализировать ее вывод?

    Как сделать две формулы ссылками на те же ячейки в Excel?

    Как настроить отношение многих ко многим, используя API-интерфейс сущностей

    Тайм-аут при запуске тестов xcodebuild под Xcode 6 через SSH

    Где хранятся элементы в системном трее?

    Слишком много использования памяти

    Давайте будем гением компьютера.