目录

HmsInstanceId

多发送者功能支持的OS为EMUI 9.1.0+。

Class Info

public class HmsInstanceId extends Object

本类提供了获取AAID以及接入推送服务所需Token的方法。

Public Method Summary

Qualifier and Type

Method Name and Description

static HmsInstanceId

getInstance(Context context)

获取HmsInstanceId类实例。

String

getId()

同步获取AAID。

Task<AAIDResult>

getAAID()

异步任务获取AAID。

long

getCreationTime()

获取AAID的生成时间戳。

void

deleteAAID()

删除本地生成的AAID与时间戳并同步删除已生成的与本AAID相关的所有Token。

String

getToken()

注意:

该接口已废弃,请使用getToken(String appId, String scope)方法获取Token。

String

getToken(String appId, String scope)

获取接入推送服务所需的Token。

String

getToken(String subjectId)

多发送者场景下,目标应用为发送者申请接入推送服务所需的Token。

void

deleteToken(String appId, String scope)

删除Token。

void

deleteToken(String subjectId)

多发送者场景下,目标应用为发送者注销Token的方法。

Public Methods

[h2]getInstance(Context context)

Method

public static HmsInstanceId getInstance(Context context)

获取HmsInstanceId类对象实例,如果该实例不存在,则会创建实例。只有获取到实例后才能调用本类中的其他方法,例如getId、getToken等。

Parameters

Name

Description

context

应用上下文。

应用集成HMS Core SDK最新版本需要满足HMS Core(APK)的版本不低于3.0.0。如果低于3.0.0版本,当应用有前台界面时HMS Core SDK会提示用户升级HMS Core(APK)为最新版本,此时getInstance的入参必须传入Activity类实例;当应用是后台应用时,如果您不想弹出引导升级的页面时,可以传入非Activity类型的Context类实例。

Returns

Type

Description

static HmsInstanceId

实例对象。

Throws

Name

Description

NullPointerException

入参为空引用导致的异常。

[h2]getId

Method

public String getId()

同步获取AAID。应用申请Token之前调用本接口获取AAID。Push服务端根据AAID生成应用的Token。如果应用的AAID发生变化,下次申请Token时也会生成新的Token。

应用如果要上报统计事件,也需要获取AAID作为应用唯一标识。

Returns

Type

Description

String

AAID。

[h2]getAAID

Method

public Task<AAIDResult> getAAID()

异步任务获取AAID。此接口为异步操作接口,需要添加对应的侦听器来侦听任务执行结果。

Returns

Type

Description

Task<AAIDResult>

接口调用结果为Task<AAIDResult>类型,您需要添加对应的侦听器来侦听任务执行结果。任务执行成功后可以使用AAIDResult中的getId()方法获取AAID字符串。

“Java”
public void getAAID() {
    Task<AAIDResult> idResult = HmsInstanceId.getInstance(context).getAAID();
    idResult.addOnSuccessListener(new OnSuccessListener<AAIDResult>() {
        @Override
        public void onSuccess(AAIDResult aaidResult) {
            // 获取AAID方法成功
            String aaid = aaidResult.getId();
            Log.d(TAG, "getAAID success:" + aaid );
        }
    }).addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(Exception e) {
            // 获取AAID失败
            Log.d(TAG, "getAAID failure:" + e);
        }
    });
}
“Kotlin”
fun getAAID() {
    val idResult = HmsInstanceId.getInstance(context).aaid
    idResult.addOnSuccessListener{ aaidResult ->        
        // 获取AAID成功
        Log.d(TAG, "getAAID success, the aaid is " + aaidResult.getId())        
    }.addOnFailureListener{ exception ->        
        // 获取AAID失败
        Log.d(TAG, "getAAID failed, catch exception: $exception")
    }
}

[h2]getCreationTime

Method

public long getCreationTime()

获取AAID的生成时间戳。

Returns

Type

Description

long

时间戳,自1970年1月1日0时0分0秒起至AAID生成时间点的时间差,单位:毫秒。

[h2]deleteAAID

Method

public void deleteAAID() throws ApiException

删除本地生成的AAID与时间戳并同步删除已生成的与本AAID相关的所有Token。

此接口为同步接口,在主线程中请勿调用此接口,以免阻塞主线程。

Throws

Name

Description

ApiException

调用此方法失败产生的一切异常都通过本异常类抛出。您可以通过ApiException类提供的方法获取错误信息。

“Java”
public void deleteAAID() {
    // 创建新线程
    new Thread() {
        @Override
        public void run() {
            try {
                // 删除AAID
                HmsInstanceId.getInstance(context).deleteAAID();
                Log.i(TAG, "deleteAAID ok.");
            } catch (Exception e) {
                Log.i(TAG, "deleteAAID failed! Catch exception : " + e);
            }
        }
    }.start();
}
“Kotlin”
fun deleteAAID() {
    // 创建新线程
    object : Thread() {
        override fun run() {
            try {
                // 删除AAID
                HmsInstanceId.getInstance(context).deleteAAID()
                Log.i(TAG, "deleteAAID successfully.")
            } catch (e: Exception) {
                Log.i(TAG, "deleteAAID failed! Catch exception : $e")
            }
        }
    }.start()
}

[h2]getToken(Deprecated)

该接口已废弃,请使用getToken(String appId, String scope)方法。

Method

public String getToken()

获取接入推送服务所需的Token。

[h2]getToken(String appId, String scope)

Method

public String getToken(String appId, String scope) throws ApiException

获取接入推送服务所需的Token。如果本地没有生成AAID,调用本方法会自动生成AAID,Push服务端生成Token时依赖AAID。此接口为同步接口,在主线程中请勿调用此接口,以免阻塞主线程。

Parameters

Name

Description

appId

在AppGallery Connect平台创建应用时分配的APP ID。

scope

授权范围,您目前可传入常量DEFAULT_TOKEN_SCOPE,即字符串“HCM”。

Returns

Type

Description

String

接入推送服务所需的Token。

Throws

Name

Description

ApiException

调用此方法失败产生的一切异常通过本异常类抛出,比如在主线程中调用该方法则抛出907122050错误码。您可以通过ApiException类提供的方法获取错误信息。

[h2]getToken(String subjectId)

Method

public String getToken(String subjectId) throws ApiException

在多发送者场景下,目标应用给发送者申请Token的方法,subjectId需要传入AppGallery Connect中发送者的项目ID。

此接口为同步接口,在主线程中请勿调用此接口,以免阻塞主线程。

Parameters

Name

Description

subjectId

发送者的项目ID,登录AppGallery Connect网站,选择“我的项目”,在项目列表中选择对应的项目,左侧导航栏选择“项目设置”,在该页面获取发送者的项目ID。

Returns

Type

Description

String

您的应用接入推送服务所需的Token。

Throws

Name

Description

ApiException

调用此方法失败产生的一切异常通过本异常类抛出。

[h2]deleteToken(String appId, String scope)

Method

public void deleteToken(String appId, String scope) throws ApiException

删除Token方法,调用本方法仅删除Token,不会删除AAID。此接口为同步接口,在主线程中请勿调用此接口,以免阻塞主线程。

Parameters

Name

Description

appId

在AppGallery Connect平台创建应用时分配的APP ID。

scope

授权范围,您目前可传入常量DEFAULT_TOKEN_SCOPE,即字符串“HCM”。

Throws

Name

Description

ApiException

调用此方法失败产生的一切异常通过本异常类抛出,比如在主线程中调用该方法则抛出907122050错误码。您可以通过ApiException类提供的方法获取错误信息。

[h2]deleteToken(String subjectId)

Method

public void deleteToken(String subjectId) throws ApiException

在多发送者场景下,目标应用给发送者注销Token方法,subjectId需要传入AppGallery Connect中发送者的项目ID。

此接口为同步接口,在主线程中请勿调用此接口,以免阻塞主线程。

Parameters

Name

Description

subjectId

发送者的项目ID,登录AppGallery Connect网站,选择“我的项目”,在项目列表中选择对应的项目,左侧导航栏选择“项目设置”,在该页面获取发送者的项目ID。

Throws

Name

Description

ApiException

调用此方法失败产生的一切异常通过本异常类抛出。