我正在运行我的iOS设备作为BLE中心,我已经遵循各种建议,以确保蓝牙仍然在后台运行。我知道这是因为我的应用程序在后台时能够接收蓝牙消息。但是,当我尝试在后台编写时没有任何反应。使用相同的代码在前台写入工作正常。我是否错过了在背景中写过BLE的小字??
当我收到蓝牙消息时,我会向我的Apple Watch创建一个通知,该通知在后台运行正常。当我按下通知上的“立即锁定”按钮时,我想发送蓝牙消息但由于某种原因它不发送。如果我在应用程序位于前台时从按钮或其他东西调用它,userRequestLock工作得很好。
响应“立即锁定”按下的代码(在AppDelegate.m中):
- (void)application:(UIApplication *)application handleActionWithIdentifier:(NSString *)identifier forLocalNotification:(UILocalNotification *)notification completionHandler:(void (^)())completionHandler {
if ([identifier isEqualToString:@"LOCK"]) {
NSLog(@"You pressed lock.");
ViewController * vc = [[ViewController alloc]init];
[vc userRequestLock];
}
}
userRequestLock(在我的视图控制器中):
-(void)userRequestLock{
NSLog(@"Lock Requested");
UInt8 buf[1] = {0x6C};
NSData *d = [[NSData alloc]initWithBytes:buf length:1];
[ble write:d];
}
我正在打印“你按下锁定”和“请求锁定”,所以我知道正在调用userRequestLock。
有谁知道我错过了什么?