8

实例化我的 CBCentralManager 时遇到问题。从 iOS 控制台监视它时,我收到“重复问题”消息(它没有显示在 XCode 控制台中)。

我尝试更新队列名称恢复密钥 ID,但没有成功。这就是我实例化中央管理器的方式:

CBCentralManager *central = [[CBCentralManager alloc] initWithDelegate: self 
    queue: dispatch_queue_create("com.mydomain.myapp.scanner", NULL)
    options: @{
        CBCentralManagerOptionRestoreIdentifierKey: @"hexa-string-comes-here"
    }];

这些是我得到的错误:

CKLs-iPhone-5S securityd [78] : securityd_xpc_dictionary_handler MyApp[2571] add 操作无法完成。(OSStatus 错误 -25299 - 重复项 O,genp,E99372E2,L,ck,X2W6M5UYJ9.com.mydomain.myapp,0,acct,svce,v_Data,20151218165347.298588Z,2CAE5650)

CKLs-iPhone-5S MyApp [2571]:SecOSStatusWith 错误:[-25299] 操作无法完成。(OSStatus 错误 -25299 - 远程错误:操作无法完成。(OSStatus 错误 -25299 - 重复项 O,genp,E99372E2,L,ck,X2W6M5UYJ9.com.mydomain.myapp,0,acct,svce,v_Data ,20151218165347.298588Z,2CAE5650))

有任何想法吗?

4

2 回答 2

1

如果你想使用CBCentralManagerOptionRestoreIdentifierKey,你必须

  1. 实现方法

    // in Objective-C
    - (void)centralManager:(CBCentralManager *)central willRestoreState:(NSDictionary<NSString *, id> *)dict
    
    // or in Swift
    func centralManager(_ central: CBCentralManager, willRestoreState dict: [String : AnyObject])
    

    CBCentralManagerDelegate, 和

  2. 使用后台模式使用在 Xcode 中设置的蓝牙 LE 配件:

    在此处输入图像描述

于 2015-12-18T21:48:19.770 回答
0

这可能与已知的钥匙串问题有关。(但是,这只是来自您应用程序中的安全日志的钥匙串的猜测)。OSStatus 重复项目出现时,已经有一个已注册的项目,该项目提供了所有属性。所以这里可能发生的是:

  1. 钥匙串未能删除最后一个恢复 ID - 项目留在钥匙串中。
  2. 使用相同的 id 注册恢复
  3. 钥匙串尝试保存项目。
  4. 它返回重复项错误
于 2017-03-03T12:26:28.543 回答