Mapbox Mobile Events SDK 收集关于地图和设备位置的匿名数据,以持续更新和改进您的地图。
如果您正在使用其他 Mapbox SDK,则无需进行任何特殊设置即可使用 Mapbox Mobile Events。
如果您要将 Mapbox Mobile Events 集成到不使用其他 Mapbox SDK 的应用程序中,则需要在您的应用程序中包含 MapboxMobileEvents.framework
,并在应用程序委托的 …didFinishLaunching…
方法中添加
MMEEventsManager *manager = [MMEventsManager.sharedManager
initializeWithAccessToken:@"your-mapbox-token"
userAgentBase:@"user-agent-string"
hostSDKVersion:@"1.0.0"];
[manager sendTurnstileEvent];
或者,在 Swift 中
let eventsManager = MMEEventsManager.sharedManager().initialize(
withAccessToken: "your-mapbox-token",
userAgentBase: "user-agent-string",
hostSDKVersion: "1.0.0")
eventsManager.sendTurnstileEvent()
创建和发送事件的首选 API 使用私有方法 -MMEEventManager pushEvent:
。如果您认为您的应用程序需要发送事件,请联系您的技术客户经理或在此存储库中打开一个包含详细信息的 issue。
通常,在模拟器中运行 Mobile Events SDK 时,它不会发送事件或发出调试消息。您可以通过在应用程序的 Info.plist
中设置键来启用这些功能
MMEDebugLogging: YES
MMECollectionEnabledInSimulator: YES
MapboxMobileEvents 框架收集位置数据,以帮助我们改进地图。我们努力保持低功耗和网络使用量,并非常小心地根据我们的隐私政策对所有数据进行匿名化处理。
在移动设备上使用 Mapbox SDK 和 API 受我们的
服务条款管辖,该条款要求您的应用程序不得干扰或限制 Mapbox SDK 发送给我们的数据,无论是通过修改 SDK 还是通过其他方式。如果您的应用程序需要不同的条款,请联系 Mapbox 销售。
如果您的应用程序启用了后台位置,则 MapboxMobileEvents 框架会在后台使用被动方法收集遥测数据,这种方法功耗非常低。 如果您的应用程序不使用后台位置,请确保在 Info.plist
中删除其权限键:NSLocationAlwaysAndWhenInUseUsageDescription
、NSLocationAlwaysUsageDescription
,以及 UIBackgroundMode
location
。
MapboxMobileEvents 框架努力包含所有内部异常和错误,以防止错误直接影响使用该框架的应用程序的最终用户。 该框架将尝试以经过编辑的形式将其报告给我们的后端,以供 Mapbox 分析。
嵌入 MapboxMobileEvents.framework
的应用程序和框架可以在设置 MMEEVentsManager.sharedManager.delegate
后实现 MMEEventsManagerDelegate
方法
- (void)eventsManager:(MMEEventsManager *)eventsManager
didEncounterError:(NSError *)error;
以获知框架遇到的任何 NSError
或 NSException
。 NSException
被封装在 NSError
中报告,错误代码为 MMEErrorException
,异常包含在用户信息字典中,键为 MMEErrorUnderlyingExceptionKey
。
如果框架希望通过 mobile events API 报告错误,则在 MMEEventsManager
上提供了两种便捷方法
NSError *reportableError = nil;
// make a call with an **error paramater
[MMEEventsManager.sharedManager reportError:reportableError];
@try {
// do something dangerous
}
@catch (NSException *exceptional) {
[MMEEventsManager.sharedManager reportException:exceptional];
}
一些遗留的测试用例是使用 Cedar 编写的,要在 Xcode
中使用 Command-U
运行测试,您需要解压缩位于 Carthage/Build/iOS/
中的框架才能运行这些测试。