检测iPhone是否处于飞行模式?

时间:2011-11-25 01:34:26

标签: iphone core-telephony airplane

我需要一种方法来检测iPhone是否处于飞行模式,我做了一些研究并发现:

iphone how to check the Airplane mode?

哪个不起作用,我知道我可以设置SBUsersNetwork在飞行模式下显示警报,但它会要求用户打开WIFI,但我的应用需要用户使用3G而WIFI根本不起作用,所以是有没有直接的方法,在CoreTelephony我可以完成我的工作?

谢谢!

2 个答案:

答案 0 :(得分:5)

基本上:不。你不能做这个。你可以做的是使用Apple的Reachability样本来检测网络连接是否可用。

答案 1 :(得分:3)

使用公共API无法完成。

在IOS 5.1中,您可以使用未记录的私有API执行以下操作。这不是Apple推荐的,不能运到app store。

将以下内容复制粘贴到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;