2016-01-31 2 views
1

Я хочу использовать быстрое приложение IOS для сканирования маяков с помощью Google близлежащего API (не IBeacon апи)быстры поблизости апите не находят маяки

Я видел Google разработчик doc, и я взял образец GIT из тот же сайт.

Вот мой code

Я установил приложение на реальном устройстве IOS впервые

но found и lost обработчики никогда не называются.

я в два раза проверил расслоение идентификатор, общественный ИОС API ключ (тот же Google консольный проект вложения радиомаяка)

, но он по-прежнему не работает вблизи рабочего и зарегистрированного маяка.

У меня также есть приложение для Android, которое успешно сканирует тот же маяк.

Что еще я могу проверить?

Мне не хватает кода "Strategy" в моем быстром коде.

Как это можно добавить? Почему это отсутствует в примере github?

GNSStrategy *beaconStrategy = [GNSStrategy 
    strategyWithParamsBlock:^(GNSStrategyParams *params) { 
     params.includeBLEBeacons = YES; 
    }]; 
    GNSSubscriptionParams *beaconParams = [GNSSubscriptionParams 
     paramsWithMessageNamespace:@"com.mycompany.mybeaconservice" 
           type:@"mybeacontype" 
          strategy:beaconStrategy]; 
    _beaconSubscription = [_messageManager subscriptionWithParams:beaconParams 
               messageFoundHandler:myMessageFoundHandler 
               messageLostHandler:myMessageLostHandler]; 

в моем коде:

func startScanning() { 
    if let messageMgr = self.messageMgr { 

     // Subscribe to messages from nearby devices and display them in the message view. 
     subscription = messageMgr.subscriptionWithMessageFoundHandler({[unowned self] (message: GNSMessage!) -> Void in 

      self.mainViewController.location_text.text = (String(data: message.content, encoding:NSUTF8StringEncoding)) 
      self.mainViewController.startRefreshTimer() 
      }, 

      messageLostHandler: {[unowned self](message: GNSMessage!) -> Void in 

       if (self.mainViewController.userState.enrollState == EnrollState.confirmPosition) 
       { 
        self.mainViewController.stopRefreshTimer() 
        self.mainViewController.enrollButtonManager.setSearchingForBeaconsBtn() 
       } 
      }) 
    } 
} 

ответ

1

Вам нужно добавить GNSStrategy к вашей подписки, которая позволяет включить сканирование радиомаяка. Попробуйте это:

let params: GNSSubscriptionParams = GNSSubscriptionParams.init(strategy: 
    GNSStrategy.init(paramsBlock: { (params: GNSStrategyParams!) -> Void in 
     params.includeBLEBeacons = true; 
    })) 
subscription = messageMgr.subscriptionWithParams(params, 
    messageFoundHandler:{[unowned self] (message: GNSMessage!) -> Void in 
     self.mainViewController.location_text.text = (String(data: message.content, encoding:NSUTF8StringEncoding)) 
     self.mainViewController.startRefreshTimer() 
    }, 
    messageLostHandler: {[unowned self](message: GNSMessage!) -> Void in 
     if (self.mainViewController.userState.enrollState == EnrollState.confirmPosition) { 
     self.mainViewController.stopRefreshTimer() 
     self.mainViewController.enrollButtonManager.setSearchingForBeaconsBtn() 
     } 
    }) 

сканирования Beacon по умолчанию отключено, потому что IOS представляет пользователь диалогового окна разрешения места при сканировании маяка первый включено, и это неприемлемо для приложений, использующих библиотеку Соседней но не сканирует для маяков.

Благодарим вас за отзыв о примере github, не показывающий, как сканировать маяки. Я посмотрю, как это добавить.

Смежные вопросы