Определить, находится ли iPhone в режиме полета? - PullRequest
2 голосов
/ 25 ноября 2011

Мне нужен способ определить, находится ли iPhone в режиме полета или нет, я провел некоторое исследование и обнаружил:

iphone, как проверить режим полета?

Что не работает, также я знаю, что я могу настроить SBUsersNetwork для отображения оповещения, когда в режиме полета, но он попросит пользователя включить WIFI, но мое приложение требует, чтобы пользователь использовал 3G, и WIFI просто не работает, поэтому есть ли прямой путь в CoreTelephony, чтобы я мог выполнять свою работу?

Спасибо!

Ответы [ 2 ]

5 голосов
/ 25 ноября 2011

В основном: нет.Ты не сможешь это сделать.Что вы можете сделать, это использовать образцы Reachability от Apple, чтобы определить, доступно ли сетевое подключение.

3 голосов
/ 14 мая 2012

Это нельзя сделать с помощью общедоступных API.

В IOS 5.1 вы можете сделать следующее, используя недокументированные частные API.Это не рекомендуется Apple и не может быть отправлено в магазин приложений.

Скопируйте и вставьте приведенное ниже содержимое в RadioPreferences.h


@protocol RadiosPreferencesDelegate
-(void)airplaneModeChanged;
@end


@interface RadiosPreferences : NSObject
{
    struct __SCPreferences *_prefs;
    int _applySkipCount;
    id <RadiosPreferencesDelegate> _delegate;
    BOOL _isCachedAirplaneModeValid;
    BOOL _cachedAirplaneMode;
    BOOL notifyForExternalChangeOnly;
}

- (id)init;
- (void)dealloc;
@property(nonatomic) BOOL airplaneMode;
- (void)refresh;
- (void)initializeSCPrefs:(id)arg1;
- (void)notifyTarget:(unsigned int)arg1;
- (void)synchronize;
- (void *)getValueForKey:(id)arg1;
- (void)setValue:(void *)arg1 forKey:(id)arg2;
@property(nonatomic) BOOL notifyForExternalChangeOnly; // @synthesize notifyForExternalChangeOnly;
@property(nonatomic) id <RadiosPreferencesDelegate> delegate; // @synthesize delegate=_delegate;

@end

Затем попробуйте, как показано ниже.

id rp = [[RadiosPreferences alloc] init];

BOOL status = [rp airplaneMode];

return status;
...