我想使用我的swift ios应用程序使用谷歌附近的api扫描信标(不是iBeacon api)
我看到了Google开发人员doc,我从同一个网站上获取了git示例。
这是我的code
我第一次在真正的ios设备上安装了该应用程序
但永远不会调用found
和lost
处理程序。
我加倍检查了捆绑ID,公共ios 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()
}
})
}
}
答案 0 :(得分: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()
}
})
默认情况下,信标扫描处于关闭状态,因为iOS首次打开信标扫描时会向用户显示位置权限对话框,这对于使用“附近”库但不扫描信标的应用程序来说是不可接受的。
感谢有关github示例的反馈,但未显示如何扫描信标。我会看到添加它。