作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用我的 swift ios 应用程序使用 google nearby api(不是 iBeacon api)扫描信标
我看到谷歌开发者doc ,我从同一站点获取了 git 样本。
这是我的 code
我是第一次在真实的 ios 设备上安装该应用
但是永远不会调用 found
和 lost
处理程序。
我仔细检查了 bundle id,公共(public) ios API key (信标附件的同一谷歌控制台项目)
但它仍然无法在工作和注册的信标附近工作。
我还有一个 android 应用程序成功扫描了相同的信标。
我还能检查什么?
我的 swift 代码中缺少 "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()
}
})
}
}
最佳答案
您需要将 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 会在首次打开信标扫描时向用户显示位置权限对话框,这对于使用附近库但不扫描信标的应用来说是 Not Acceptable 。
感谢您反馈有关 github 示例未显示如何扫描信标的问题。我会考虑添加它。
关于ios - swift nearby api找不到信标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35118582/
我是一名优秀的程序员,十分优秀!