安装二进制依赖
使用接入包的 android/maven 目录作为本地 Maven 仓库,或上传到公司私有 Maven。需要 Google Maven 和 Maven Central 解析依赖。APP SDK 1.0.0 要求 minSdk 24、compileSdk 36、Java 17 和 core library desugaring。
仓库配置示例放入项目的依赖仓库配置;将路径替换为接入包实际位置:
repositories {
maven { url = uri('/path/to/package/android/maven') }
google()
mavenCentral()
}
应用模块配置:
android {
compileSdk 36
defaultConfig { minSdk 24 }
compileOptions {
coreLibraryDesugaringEnabled true
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
}
}
dependencies {
implementation 'net.oou:infinite-ride-mobile:1.0.0'
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.1.5'
}
配置应用身份与隐私
在 Application 主线程初始化一次。下例中的图标、隐私查询、通知文字与应用标识由宿主提供:
MobileSdk.configure(MobileSdk.Configuration(
consentGranted = { privacyStore.hasConsent() },
notificationIcon = R.drawable.ic_notification,
notificationTitle = "Your App",
notificationText = "Vehicle connection active",
openApplication = openAppPendingIntent,
clientId = registeredClientId,
))
导入 net.oou.mobile.MobileSdk。consentGranted 必须动态返回当前状态,同意前返回 false;不要硬编码 true。developmentProvisioning 保持默认 false。配置通知入口与有效小图标,按启用能力声明权限、服务及系统能力,参考接入包的原生示例 Manifest。
Activity 与设备生命周期
Activity 宿主实现 ActivityHost,提供当前 activity 和 foreground 状态,通过 MobileSdk.devices(context, host) 创建唯一设备客户端。转发 onHostResume、onHostPause、onActivityResult,销毁时调用 close()。系统伴生设备选择器期间用 choosingSystemDevice 区分短暂暂停,避免误取消配对。
按系统版本申请蓝牙扫描、连接、附近 Wi-Fi、定位及所需通知权限。用户拒绝时展示解释或设置入口,不自动循环申请。SDK 不负责宿主的隐私同意界面。
DeviceClient 提供 scanDevices、getDiscoveredDevices、pairDevice、submitPin、状态读取及车辆 Wi-Fi 接口。具体参数使用包内公开接口与原生示例,业务顺序见车辆绑定与恢复。
安装会话并查询车辆
platformSessionJson 是平台登录返回的原始会话;apiBase 是分配的 HTTPS 基址,包含 /api/v1。以下调用在主线程执行:
MobileSdk.setSession(context, platformSessionJson)
val vehicles = MobileSdk.vehicles(context, apiBase, "zh-CN")
val operation = vehicles.list(object : ResultCallback {
override fun resolve(value: Any?) {
// Decode the vehicle-list JSON string and update the UI.
}
override fun reject(code: String, message: String?, cause: Throwable?) {
// Handle cancellation, authentication and business errors separately.
}
})
导入 net.oou.mobile.ResultCallback。先完成 recover 再执行示例查询。离开业务流程时可调用 operation.cancel(),等待回调后再开始后续操作;不要把取消当作服务端回滚。SDK 0.2.1 合并同范围的列表与恢复请求;取消只影响自己的回调,不会取消其他订阅者。已开始的共享工作可继续到完成或超时,以保留确认结果。
导航、媒体与退出
通过 MobileSdk.Extensions 对接地图导航、媒体及辅助通知。navigationActive 必须反映真实导航状态,SDK 据此阻止导航中的车辆切换。缺少扩展时,相应功能不可用。
退出时取消云任务,调用 MobileSdk.clearSession(context);重新登录后创建新云客户端。支付接入与恢复见商城、门店与支付。
撤回隐私同意时,立即停止接受新任务、取消所有持有的云操作,并调用 MobileSdk.clearSession(context) 停止设备会话和清理账号。继续接收旧操作的最终回调,但不再更新已退出的页面;撤回同意不会撤销已发生的付款。
