【问题标题】:Unknown type name 'ESTBeaconRegion'; did you mean 'CLBeaconRegion'?未知类型名称“ESTBeaconRegion”;您的意思是“CLBeaconRegion”吗?
【发布时间】:2015-04-15 02:47:35
【问题描述】:

问题 1:

我正在关注this estimote tutorial 创建我自己的 Estimote 应用程序。但是出现了这个错误:

未知类型名称“ESTBeaconRegion”;你的意思是“CLBeaconRegion”吗?

如何解决?

我已经包含了标题和委托

#import <EstimoteSDK/EstimoteSDK.h>

@interface AppDelegate () <UIApplicationDelegate,CLLocationManagerDelegate,ESTBeaconManagerDelegate>

这是我的 podFile

# Uncomment this line to define a global platform for your project
platform :ios, '7.0'

target 'Tabster' do
pod 'EstimoteSDK', '3.1.0'
end

问题 2: 为什么框架以红色突出显示?

更新:(尝试 Juan Gonzalez 建议的示例应用)

【问题讨论】:

  • 您好 Mustafa Ibrahim,我已经在 AppDelegate.m 文件中包含了“#import ”和“#import”AppDelegate.h”。
  • 本题主要关注的是EstimoteSDK,和appdelegate没有任何关系

标签: objective-c xcode ibeacon estimote


【解决方案1】:

如果您想在新的 estimote SDK 3.0 中使用“旧应用程序”,我建议您阅读此地址的迁移指南:

https://github.com/Estimote/iOS-SDK/blob/master/SDK_3_0_MIGRATION_GUIDE.md

ESTBeaconManager

ESTBeaconManager 类仍然存在,但功能有限。在目前的形式中,它负责测距和监控 iBeacon 设备以及作为 iBeacon 进行广告宣传。它主要涵盖 CoreLocation 功能,但包含有用的帮助程序,包括 preventUnknownUpdateCount、avoidUnknownStateBeacons 和 returnAllRangedBeaconsAtOnce(已在 Estimote SDK 的早期版本中提供)。

委托方法适用于 CLBeacon 对象(而不是 ESTBeacon)和 CLBeaconRegion(而不是 ESTBeaconRegion)。让我们以测距委托为例:

SDK 2.4 语法:

- (void)beaconManager:(ESTBeaconManager *)manager
      didRangeBeacons:(NSArray *)beacons
             inRegion:(ESTBeaconRegion *)region
{
    if (beacons.count > 0)
    {
        ESTBeacon *firstBeacon = [beacons objectAtIndex:0];
    }
}

SDK 3.0 语法:

- (void)beaconManager:(id)manager
      didRangeBeacons:(NSArray *)beacons
             inRegion:(CLBeaconRegion *)region
{
    if (beacons.count > 0)
    {
        CLBeacon *firstBeacon = [beacons objectAtIndex:0];
    }
}

希望对你有帮助。

【讨论】:

  • 我正在关注 estimote 网站上的过时教程。感谢提供 sdk3.0 和 2.4 之间的比较
【解决方案2】:

我在使用 Estimote SDK 库时遇到了同样的问题。由于未知原因,如果您尝试在新的 Xcode 项目中包含 SDK 库,它似乎不会加载它。即使您使用 CoreLocation 和 CoreBluetooth 标头。

我建议您使用示例代码,以便拥有一个包含库的项目,然后开始修改它。

【讨论】:

  • 您建议使用哪个示例代码?我试图将此代码包含在“@property(nonatomic, strong) ESTBeaconRegion *beaconRegion;”中“信标”github.com/Estimote/iOS-SDK 的“示例”应用程序。但它也不起作用......我在上面的问题中添加了错误截图。
  • “示例”应用正在使用 CLLocation 而不是 ESTBeaconRegion。
  • 没错,使用Examples/beacon 目标C 项目并修改。在这种情况下,我使用了 Proximity 示例代码,请记住在应用委托中设置您的凭据,以便您可以开始使用在 Estimote Cloud 中注册的信标。
  • 是的,稍后再做,我的估价还在快递员那里。 [ESTCloudManager setupAppID:nil andAppToken:nil];使用他们的 SDK 而不是使用 CoreLocation 有什么优势?因为我基本上可以用 CLLocationManager 替换 ESTBeaconManager,用 CLLocation 替换 ESTBeaconRegion
  • 好吧,我建议使用他们的示例代码来让 Estimote SDK 正常工作。从头开始或使用示例代码都需要 CoreLocation 和 CoreBluetooth。如果你想制作一个通用的信标应用程序(不是 Estimote),那么你应该使用 CLLocationManager 和 CLLocation。
【解决方案3】:

here 下载代码,不要尝试从 pod 文件中导出,而是可以直接使用从下载的 iOS-SDK zip 文件导出的示例 xcode 项目。如果您遇到同样的问题,请尝试一次。

【讨论】:

    【解决方案4】:

    来自 heypiotr,“在 SDK 3.0 中,我们从 ESTBeaconRegion 切换到 CLBeaconRegion,您正在执行的本教程尚未更新以反映这一点。不过这很容易:只需将所有 ESTBeaconRegion 事件更改为 CLBeaconRegion。当您在在那里,我们还将 ESTBeacon 更改为 CLBeacon,因此您可能也想替换这些。”这就解释了一切。谢谢各位!

    【讨论】:

      猜你喜欢
      • 2021-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-14
      • 1970-01-01
      • 2020-03-20
      • 1970-01-01
      • 2022-10-23
      相关资源
      最近更新 更多