快速入门

更新时间:2024-07-01 08:14:17下载pdf

本教程旨在讲解 App 基础功能,让您快速上手出行应用开发流程,包含以下功能:

  • 通过 App 解锁一辆车辆。
  • 实现感应解锁,无需启动 App 即可解锁车辆。

您可以单击下方按钮下载 Sample,查看本教程中的示例代码。本次教程按功能模块进行分类,您可以快速找到对应的代码参考学习。

前往 App 开发平台 查看 GitHub Sample

效果展示

展示内容界面均是基于涂鸦出行 SDK 提供的接口进行开发而来。

准备工作

在您开始本教程前,确保您已经:

  1. 在涂鸦开发者平台,注册账号并创建 App 应用,获取 SDK 的 AppKeyAppSecret。更多信息,参考 准备工作

    由于出行 SDK 依赖于 智能生活 App SDK,您需要首先实现诸如创建账号、添加默认家庭的操作后,才能借助出行 SDK 实现出行相关功能。更多信息,参考 智能生活 App SDK 快速入门教程

  2. 准备一个涂鸦赋能的出行智能产品,本教程以二轮车为例。关于如何获取涂鸦赋能的产品,可访问 涂鸦智选

  3. 使用 CocoaPods,将智能生活 App SDK 和出行 SDK 集成到您的项目中。更多信息,参考 SDK 集成

DP 快捷操作

对于涂鸦赋能的设备,其指令功能主要依赖 DP(Data Point,设备功能标识)进行下发与上报。出行 SDK 基于 ThingSmartDevice 主类 DP 发送方法进行二次包装,让下发操作更为便捷,建议出行相关功能均使用以下接口进行 DP 操作。若对 DP 概念较为陌生,建议了解 设备控制产品功能

@interface ThingSmartDevice (ThingSmartOutdoor)

/// send DP with code
/// @param code DP code
/// @param DPValue the DP original value (NSString, NSNumber, NSDictionary)
/// @param success Called when the task finishes successfully.
/// @param failure Called when the task is interrupted by an error.
- (void)tsod_publishDPWithCode:(NSString *)code
                       DPValue:(id)DPValue
                       success:(nullable ThingSuccessHandler)success
                       failure:(nullable ThingFailureError)failure;

@end

关键示例-无感解锁

出行 SDK 提供感应解锁基础 API 能力,此示例主要讲解蓝牙无感解锁基础功能如何使用。关于无感解锁更多详细功能,参考 无感解锁

交互演示

开发建议

开启无感解锁功能依赖蓝牙能力,项目中建议增加对手机蓝牙权限及设备蓝牙在线状态进行前置校验,并提示用户务必保证手机蓝牙功能开启。

示例代码

无感解锁配对状态判断:

ThingSmartDevice *device = [ThingSmartDevice deviceWithDeviceId:@"xxx"];
BOOL paired = [[ThingODBTInductiveUnlock sharedInstance] checkPairedStatus:device.devId];
if (paired) {
    //TODO:已配对逻辑,例如展示关闭无感解锁界面
} else {
      //TODO:未配对逻辑,例如展示开启无感解锁界面
}

开启无感解锁:

[[ThingODBTInductiveUnlock sharedInstance] addDelegate:self];
self.device = [ThingSmartDevice deviceWithDeviceId:@"xxx"];
[[ThingODBTInductiveUnlock sharedInstance] turnOnBTInductiveUnlock:self.devID finished:^{
    //...
} error:^(NSError * _Nonnull error) {

}];

代理监听:

#pragma mark - delegate ThingODBTInductiveUnlockDelegate
- (void)btInductiveUnlock:(ThingODBTInductiveUnlock *)btInductiveUnlock deviceID:(NSString *)deviceID status:(BTUnlockPairStatus)status {
    if (status == BTUnlockPairBindStatusSuccess) {
        //TODO:开启成功
    }
}

关闭无感解锁:

[[ThingODBTInductiveUnlock sharedInstance] turnOffBTInductiveUnlock:self.device.devId finished:^{
    //TODO:关闭成功逻辑
} error:^(NSError * _Nonnull error) {

}];