Получите уведомление о доступности Wi-Fi для устройства с поддержкой Wi-Fi
У меня есть адаптер устройства OBD2, который поддерживает Wi-Fi. Теперь я хочу получить уведомление о Wi-Fi с устройством OBD2, поэтому я могу начать разговаривать с этим устройством и читать данные, а Wi-Fi с устройством OBD2 недоступен.
Когда устройство подключено к порту OBD2, Wi-Fi широковещательно. Я использовал образец кода класса Reachability. Но я не могу получить правильное уведомление.
Я пробовал с кодом SimplePingHelper. Он отлично работает с Main thread, но не работает с фоновым потоком. Исходный код SimplePingHelper
В коде SimplePingHelper фактически используется пример кода SimplePing от Apple.
Код SimplePing от Apple
Можете ли вы помочь мне в этом коде, что он работает с фоновым потоком Или Какие другие способы я могу проверить, чтобы получить это уведомление?
Ответы
Ответ 1
`Использовать класс достижимости Apple по умолчанию:
Загрузить проект доступности из Эта ссылка
Скопируйте файл Reachability.h и Reachability.m в ваш проект.
И установите этот метод в файле делегирования приложения.
- (недействительными) initializeRechabilityObeserver
{ // Изменим имя хоста здесь, чтобы изменить сервер вашего мониторинга hostReach = [Достижимость достижимостиWithHostName: @ "www.apple.com http://www.apple.com" ]; [hostReach startNotifier]; // [self updateInterfaceWithReachability: hostReach];
internetReach = [Reachability reachabilityForInternetConnection];
[internetReach startNotifier];
//[self updateInterfaceWithReachability: internetReach];
wifiReach = [Reachability reachabilityForLocalWiFi] ;
[wifiReach startNotifier];
//[self updateInterfaceWithReachability: wifiReach];
}
Ответ 2
Использовать класс достижимости Apple по умолчанию:
Загрузить проект доступности из Эта ссылка
Скопируйте файл Reachability.h и Reachability.m в ваш проект.
И установите этот метод в файле делегирования приложения.
-(void)initializeRechabilityObeserver
{
//Change the host name here to change the server your monitoring
hostReach = [Reachability reachabilityWithHostName: @"www.apple.com <http://www.apple.com>"];
[hostReach startNotifier];
//[self updateInterfaceWithReachability: hostReach];
internetReach = [Reachability reachabilityForInternetConnection];
[internetReach startNotifier];
//[self updateInterfaceWithReachability: internetReach];
wifiReach = [Reachability reachabilityForLocalWiFi] ;
[wifiReach startNotifier];
//[self updateInterfaceWithReachability: wifiReach];
}
Для получения уведомления об изменении возможности использования используйте код ниже:
Добавьте этот метод уведомления в приложение doneFinishLaunching
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(reachabilityChanged:) name: kReachabilityChangedNotification object: nil];
internetReachable = [Reachability reachabilityForInternetConnection] ;
[internetReachable startNotifier];
}
а также добавьте этот метод:
- (void)reachabilityChanged: (NSNotification* )note
{
NSLog(@"Reachability changed");
Reachability* curReach = [note object];
NSParameterAssert([curReach isKindOfClass: [Reachability class]]);
[self updateInterfaceWithReachability: curReach];
}
Ответ 3
Достижимость обнаруживает только доступность сети для вашего устройства iOS.
Кроме того, Apple не разрешает приложениям делать какие-либо проверки Wi-Fi, поэтому для этого нет открытого API.
Является ли ваш адаптер устройства OBD2 подключен к устройству iOS физически по кабелю или локальному Wi-Fi?
Я думаю, вы должны сосредоточиться на том, как общаться с внешним устройством OBD2 в iOS.