swift 附近 api 没有找到信标
swift nearby api doesn't find beacons
我想使用我的 swift ios 应用程序使用附近的 google api(不是 iBeacon api)扫描信标
我看到了 Google 开发人员 doc,并且我从同一站点获取了 git 示例。
这是我的 code
我是第一次在真实的 ios 设备上安装该应用程序
但从未调用 found
和 lost
处理程序。
我仔细检查了包 ID,public ios API 键(信标附件的相同 google 控制台项目)
但它在工作和注册的信标附近仍然不起作用。
我还有一个 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 首次打开信标扫描时会向用户显示位置权限对话框,这对于使用附近库但不扫描的应用来说是不可接受的信标。
感谢您提供有关 github 示例未显示如何扫描信标的反馈。我会考虑添加它。
我想使用我的 swift ios 应用程序使用附近的 google api(不是 iBeacon api)扫描信标
我看到了 Google 开发人员 doc,并且我从同一站点获取了 git 示例。
这是我的 code
我是第一次在真实的 ios 设备上安装该应用程序
但从未调用 found
和 lost
处理程序。
我仔细检查了包 ID,public ios API 键(信标附件的相同 google 控制台项目)
但它在工作和注册的信标附近仍然不起作用。
我还有一个 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 首次打开信标扫描时会向用户显示位置权限对话框,这对于使用附近库但不扫描的应用来说是不可接受的信标。
感谢您提供有关 github 示例未显示如何扫描信标的反馈。我会考虑添加它。