Estimote iBeacon错误:服务不可用

时间:2015-03-09 09:29:22

标签: ios objective-c ibeacon

我正在开发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
         {

         }
     }];
}

1 个答案:

答案 0 :(得分:1)

为了能够修改任何信标的设置,您需要先连接到信标:

ESTBeacon connect

请注意,这是一个异步方法,您需要等到ESTBeaconDelegate的{​​{3}}方法被调用才能开始写入信标。

此步骤的一个先决条件:使用Estimote Beacons,只有信标所有者授权的应用才能连接到它。您使用beaconConnectionDidSucceeded:对应用进行身份验证。 ID和令牌是在ESTConfig setupAppID:andAppToken:的Estimote Cloud Web仪表板中创建和检索的。