- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一台装有 iOS 7.1 的 4s 设备。我正在尝试实现一些代码来帮助我的设备像信标设备一样运行,但我收到错误消息“只能在开机状态下接受此命令”。
我正在执行这段代码:
@implementation ViewController
-(void)viewDidLoad
{
[super viewDidLoad];
beaconPeripheralData=[[NSDictionary alloc]init];
peripheralManager.delegate=self;
_locationManager.delegate=self;
_locationManager = [[CLLocationManager alloc] init];
_locationManager.delegate = self;
[self initWithBeacons];
}
-(void)initWithBeacons
{
NSNumber * power = [NSNumber numberWithInt:-63];
NSUUID *uuid=[[NSUUID alloc]initWithUUIDString:@"F24BDBE3-EB98-4A04-A621-91C088DC32D2"];
CLBeaconRegion *beaconReason=[[CLBeaconRegion alloc]initWithProximityUUID:uuid major:1 identifier:@"blackbean.com"];
beaconPeripheralData=[beaconReason peripheralDataWithMeasuredPower:power];
peripheralManager=[[CBPeripheralManager alloc]initWithDelegate:self queue:nil];
[peripheralManager startAdvertising:beaconPeripheralData];
if ([peripheralManager isAdvertising])
{
NSLog(@"peripeheralMAnager is advertising");
}
else
{
NSLog(@"peripeheralMAnager is not advertising");
}
}
-(void)peripheralManagerDidUpdateState:(CBPeripheralManager *)peripheral {
switch (peripheral.state) {
case CBPeripheralManagerStatePoweredOn:
NSLog(@"Powered on");
[peripheralManager startAdvertising:beaconPeripheralData];
break;
case CBPeripheralManagerStatePoweredOff:
NSLog(@"Powered Off");
[peripheralManager stopAdvertising];
break;
case CBPeripheralManagerStateUnsupported:
NSLog(@"Device not supported");
break;
default:
break;
}
}
@end
最佳答案
来自CBPeripheralManager documentation
Before you call CBPeripheralManager methods, the state of the peripheral manager object must be powered on, as indicated by the
CBPeripheralManagerStatePoweredOn
. This state indicates that the peripheral device (your iPhone or iPad, for instance) supports Bluetooth low energy and that its Bluetooth is on and available to use.
为了确定外设管理器何时准备就绪,您需要实现 didUpdateState
外设管理器委托(delegate)方法并在您获得开机状态后开始广告,您已经完成了,但是在您分配了 CBPeripheralManager
之后,您还可以直接调用 startAdvertising
,这会给你错误信息,因为它还没有处于开机状态
关于ios - iBeacon:CBPeripheralManager: 0x1557b230 只能在开机状态下接受这个命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35377555/
有一条(相对)众所周知的 Perl 公理:“只有 Perl 可以解析 Perl”。我想知道 Perl 6 是否仍然如此? 扩大讨论...考虑到 PyPy 最近的更新,我想到了这个问题。 Perl 独特
这是设置。在上一个问题中,我发现我可以通过子组件中的状态传递对象属性,然后使用 componentDidUpdate 获取该对象属性。在这种情况下,状态和属性都称为到达。 这是基本代码... expo
我运行的是 10.5.2 社区版。我已经标记了 源/主要/资源 作为源目录。我可以右键单击并“编译”某些文件,据我所知,这意味着 IDE 将文件复制到与发送类文件的“com.mydomain.pack
我是一名优秀的程序员,十分优秀!