Alexa

功能概述

仅限支持Alexa的设备使用,使用前需确保在Alexa官方后台配置了相应的ClientID 和 ProductID

属性

isLogin

是否已登录

方法

onLoginStateChanged(handle:)

监听登录状态变更

setupAlexa(delegate:clientId:)

配置alexa

  • Parameters:
    • delegate : 代理
    • clientId: Alexa后台生成的ID

authorizeRequest(productId:handle:completion:)

Alexa CBL授权

  • Parameters:
    • productId: 在alexa后台注册的产品ID
    • handle: 回调Alexa认证需要打开的verificationUri和pairCode
    • completion: 授权结果
  • Returns: 可取消实例

logout()

退出登录

示例

配置Alexa模块

Swift:

// 配置alexa
sdk.alexa.setupAlexa(delegate: <IDOAlexaDelegate>, clientId: clientId)

// 实现代理
extension SomeClass: IDOAlexaDelegate {

      /// 获取健康数据
    func getHealthValue(valueType: IDOGetValueType) -> Int {
        return 0
    }

      /// 获取心率
    func getHrValue(dataType: Int, timeType: Int) -> Int {
        return 0
    }

      /// 功能控制
    ///
    /// funType 0 关闭找手机功能
    func functionControl(funType: Int) {}
}

Kotlin:

// 配置alexa
alexa.setupAlexa(this, "clientId from alexa developer account"/*only for test*/)
// implement proxy
private val delegate = object:IDOAlexaDelegate{
    /// 获取健康数据
    override fun getHealthValue(valueType: IDOGetValueType): Int {
        return 0
    }

    /// 获取心率
    override fun getHrValue(dataType: Int, timeType: Int): Int {
        return 0
    }

     // 功能控制
     //
     // funType 0 关闭找手机功能
    override fun functionControl(funType: Int) {
        TODO("Not yet implemented")
    }

}

监听登录状态

Swift:

// 监听登录
sdk.alexa.onLoginStateChanged { [weak self] state in
    switch state {
  case .logging:
      // 登录中...
  case .logined:
      // 已登录
  case .logout:
      // 未登录
  }
}

Kotlin:

// Listen for login
alexa.onLoginStateChanged {
    when(it){
        IDOAlexaLoginState.LOGGING -> {// 登录中...}
        IDOAlexaLoginState.LOGINED -> {// 已登录}
        IDOAlexaLoginState.LOGOUT -> {// 未登录}
    }
}

登录 (基于CBL)

Swift:

// 登录
let canceler = sdk.alexa.authorizeRequest(productId: "ProductId") { [weak self] verificationUri, pairCode in
    // pairCode 你的验证码, 在用户登录过程中需要展示给用户,并供验证使用
  // verificationUri 需要跳转的登录页(html)
} completion: { [weak self] rs in
    if case .successful = rs {
        // 登录成功
    } else {
        // 登录失败
    }
}

// 中途取消登录
canceler.cancel()

Kotlin:

// 登录
val canceler = alexa.authorizeRequest("ProductId", { verificationUri, pairCode ->
    // pairCode 你的验证码, 在用户登录过程中需要展示给用户,并供验证使用
   // verificationUri 需要跳转的登录页(html)
   //for example
    val dialog = AlertDialog.Builder(this@AlexaActivity).setTitle(getString(R.string.alexa_dialog_title))
        .setMessage(getString(R.string.alexa_dialog_msg).format(pairCode))
        .setPositiveButton(R.string.alexa_dialog_copy) { dialog, which ->
            val cm = getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
            val mClipData = ClipData.newPlainText("Label", pairCode)
            cm.setPrimaryClip(mClipData)
            val intent = Intent(Intent.ACTION_VIEW)
            intent.data = Uri.parse(verificationUri)
            startActivity(intent)
            dialog.dismiss()
        }.setNegativeButton(R.string.alexa_dialog_cancel, { dialog, which -> dialog.dismiss() }).show()
}, { rs -> 
     if (rs == IDOAlexaAuthorizeResult.SUCCESSFUL) {
        // 登录成功
    } else {
        // 登录失败
    }
 })
//Cancel login midway
canceler.cancel()

退出

Swift:

// 退出登录
sdk.alexa.logout()

Kotlin:

// 退出登录
sdk.alexa.logout()
Copyright © 2023-2024 IDO. All rights reserved. all right reserved,powered by Gitbook修改日期: 2024-03-25 17:44:10

results matching ""

    No results matching ""