如果蓝牙关闭 iOS,则禁用警告对话框

Posted

技术标签:

【中文标题】如果蓝牙关闭 iOS,则禁用警告对话框【英文标题】:Disable Warning Dialog if Bluetooth is powered off iOS 【发布时间】:2013-10-10 13:09:05 【问题描述】:

我的 ios 应用程序使用蓝牙连接到配件。如果未启用蓝牙,则会出现一个弹出窗口,要求我激活。

我注意到每次运行应用程序时都会出现弹出窗口。

我的问题是是否可以显示一次弹出窗口,即仅在第一次启动后(fitbit app do that。我也想知道是否可以更改弹出窗口的语言。

我的应用程序适用于 iOS7 和 iOS6

如果我们无法更改语言,有没有办法禁用此弹出窗口,然后我将使用本地化系统开发自己的视图(弹出窗口)?

非常感谢!

【问题讨论】:

那个对话框的语言是系统语言,我不认为你可以改变它。 感谢您的评论。我的 iphone 是法语的,弹出窗口是英语的。 你的应用是英文的,它可能只看你的应用设置的语言。我注意到我的荷兰语应用程序中有英语对话框,因为我的 iPhone 设置为英语。 我认为这与应用程序的语言无关,因为要求我授权该位置的弹出窗口是法语的。奇怪的。也许我们无法以其他语言显示弹出窗口。但是,如果我找到停用此弹出窗口的方法,那么我将使用本地化系统开发自己的弹出窗口 【参考方案1】:

我收到了一位苹果开发者的以下回复: 在 iOS7 中,CBCentralManagerOptionShowPowerAlertKey 选项可让您禁用此警报。

如果你有一个CBCentralManager,那么当你初始化它的时候,你可以使用-[CBCentralManager initWithDelegate:queue:options]的方法

示例:

在我的 .h 文件中,我有一个 CBCentralManager * manager

在我的 .m 文件中:

NSDictionary *options = @CBCentralManagerOptionShowPowerAlertKey: @NO;
    
_manager = [[CBCentralManager alloc] initWithDelegate:self queue:nil options:options];
    
[_manager scanForPeripheralsWithServices:nil options:options];

使用此代码,警告不再出现。希望对您有所帮助!

【讨论】:

嗨,我在 iOS 9 和 8.4 上使用过它,但它仍然显示弹出窗口。 仍然适用于 Swift 5:, options: [CBCentralManagerOptionShowPowerAlertKey: false]【参考方案2】:

如果您要连接到附件设备,您可能还会使用CBPeripheralManager 而不是CBCentralManager。给我一些时间来解决这个问题,因为我使用的是 sdk 并且不知道它实际上做了什么。但在这种情况下,您必须抑制外围管理器上的警报。一旦设置了标志,它将分别对CBCentralManagerCBPeripheralManager 的所有其他实例有效。我的情况是,我实例化 CBPeripheralManager 的唯一原因是设置标志。

@property CBPeripheralManager *pManager;

*peripheralManager = [[CBPeripheralManager alloc]initWithDelegate:nil queue:nil options:@CBPeripheralManagerOptionShowPowerAlertKey:@NO];

请注意,您必须将实例分配给属性,否则它将不起作用。

【讨论】:

以上是关于如果蓝牙关闭 iOS,则禁用警告对话框的主要内容,如果未能解决你的问题,请参考以下文章

在没有系统提示的情况下检查蓝牙关闭

如何完全关闭蓝牙配对请求对话框?

笔记本电脑重启蓝牙服务被禁用(开启服务后,只要电脑重启蓝牙就被禁用)?

如果用户禁用它们,如何发送静默推送通知?

从对话框关闭 Jquery 启用和禁用选项

在 Jquery UI 对话框中禁用关闭按钮 [重复]