🎟 Mapbox移动事件
Mapbox移动事件SDK收集有关地图和设备位置的匿名数据,以不断更新和改进您的地图。
📦 客户端框架
🏎 快速开始
如果您使用的是其他Mapbox SDK,则无需进行任何特殊设置即可使用Mapbox移动事件。
如果您将Mapbox移动事件集成到不使用其他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:
,如果您认为您的应用程序需要发送事件,请联系您的技术客户经理或在此存储库中提交详细的问题。
💣 调试
通常,在模拟器上运行Mobile事件SDK时不会发送事件或发出调试信息,您可以通过设置应用程序的Info.plist
中的键来启用这些功能
MMEDebugLogging: YES
MMECollectionEnabledInSimulator: YES
🗺 前台和后台位置收集
MapboxMobileEvents框架收集位置数据以帮助改进地图。我们力求保持低功耗和网络使用率,并非常注意根据我们的隐私策略匿名所有数据。
在移动设备上使用Mapbox SDKs和API受我们
服务条款的管理,这些条款要求您的应用不得干扰或限制Mapbox SDK发送给我们的数据,无论是通过修改SDK还是通过其他方式。如果您需要不同的条款,请联系Mapbox销售。
iOS 13中的后台位置
如果您的应用程序启用了后台位置功能,MapboxMobileEvents框架会通过一种被动的方式在后台收集遥测数据,以实现极低的能耗。如果您的应用程序没有使用后台位置功能,请确保在Info.plist
中移除相应的权限键:NSLocationAlwaysAndWhenInUseUsageDescription
、NSLocationAlwaysUsageDescription
以及UIBackgroundMode
中的location
。
⚠️ 错误和异常处理与报告
MapboxMobileEvents框架努力将所有内部异常和错误控制在框架内部,以防止错误对使用该框架的应用程序最终用户直接造成影响。框架将尝试将它们以修改过的形式报告给我们后端,由Mapbox进行分析。
嵌入了MapboxMobileEvents.framework
的应用程序和框架,可以在设置MMEEVentsManager.sharedManager.delegate
之后实现MMEEventsManagerDelegate
方法
- (void)eventsManager:(MMEEventsManager *)eventsManager
didEncounterError:(NSError *)error;
以便告知框架遇到的任何NSError
或NSException
。异常会被包含在一个带有错误代码MMEErrorException
的NSError
中进行报告,而异常则包括在用户信息字典中,键为MMEErrorUnderlyingExceptionKey
。
如果框架希望通过移动事件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/
中的框架解压运行这些测试。