我需要一种方法来检测iPhone是否处于飞行模式,我做了一些研究并发现:
iphone how to check the Airplane mode?
哪个不起作用,我知道我可以设置SBUsersNetwork在飞行模式下显示警报,但它会要求用户打开WIFI,但我的应用需要用户使用3G而WIFI根本不起作用,所以是有没有直接的方法,在CoreTelephony我可以完成我的工作?
谢谢!
答案 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;