Detect if iPhone is in Airplane mode?

左心房为你撑大大i 提交于 2019-11-27 07:10:36

问题


I need a way to detect if the iPhone is in Airplane Mode or not, I did some research and found:

iphone how to check the Airplane mode?

Which does not work, also I know I can set SBUsersNetwork to show an alert when in airplane mode, but it will ask user to switch on WIFI but my app need user to use 3G and WIFI simply does not work, so is there any straight forward way, in CoreTelephony that I can do my job?

Thanks!


回答1:


Basically: no. You cannot do this. What you can do is use the Reachability samples from Apple to detect if a network connection is available.




回答2:


It cannot be done using public API's.

In IOS 5.1, you can do as follows using undocumented private API's. This is not recommended by apple and cannot be shipped to app store.

Copy paste the below contents into 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

Then try as below.

id rp = [[RadiosPreferences alloc] init];

BOOL status = [rp airplaneMode];

return status;


来源:https://stackoverflow.com/questions/8264053/detect-if-iphone-is-in-airplane-mode

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!