我正在开发Estimote iBeacon项目,该项目将显示iBeacons的属性。现在,我的应用程序显示了iBeacon的许多属性,但我想更改iBeacons主要和次要值。当我更改iBeacon的主要或次要值时,会出现错误消息,即“服务不可用。”。这是我的代码,有人可以帮助我吗?
谢谢。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[tableView deselectRowAtIndexPath:indexPath animated:YES];
switch (indexPath.row)
{
case 1:
{
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Enter Major Value", @"") message:nil delegate:self cancelButtonTitle:NSLocalizedString(@"Cancel", @"") otherButtonTitles:NSLocalizedString(@"Write", @""), nil];
alertView.alertViewStyle = UIAlertViewStylePlainTextInput;
UITextField *textField = [alertView textFieldAtIndex:0];
textField.text = [NSString stringWithFormat:@"%u", [beacon.major unsignedShortValue]];
textField.clearButtonMode = UITextFieldViewModeWhileEditing;
textField.keyboardType = UIKeyboardTypeNumberPad;
alertView.tag = 50;
[alertView show];
}
break;
}
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
switch (alertView.tag)
{
case 50:
switch (buttonIndex)
{
case 1:
[self writeMajor:[[alertView textFieldAtIndex:0].text integerValue] completion:^(unsigned short value, NSError *error)
{
}
];
}
- (void)writeMajor:(unsigned short)major completion:(ESTUnsignedShortCompletionBlock)completion
{
[beacon writeMajor:major completion:^(unsigned short value, NSError *error)
{
if (error)
{
NSLog(@"%s: %@", __PRETTY_FUNCTION__, error);
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Could Not Write Major Value", @"") message:[error localizedDescription] delegate:nil cancelButtonTitle:NSLocalizedString(@"OK", @"") otherButtonTitles:nil];
[alertView show];
}
else
{
}
}];
}
答案 0 :(得分:1)
为了能够修改任何信标的设置,您需要先连接到信标:
请注意,这是一个异步方法,您需要等到ESTBeaconDelegate
的{{3}}方法被调用才能开始写入信标。
此步骤的一个先决条件:使用Estimote Beacons,只有信标所有者授权的应用才能连接到它。您使用beaconConnectionDidSucceeded:
对应用进行身份验证。 ID和令牌是在ESTConfig setupAppID:andAppToken:
的Estimote Cloud Web仪表板中创建和检索的。