智能客服
你问我答,随时在线为你解决问题
| CLASS info |
| public class HmsInstanceId extends Object |
| 本类提供了获取AAID的方法以及接入华为推送服务所需令牌(Token)的获取方法。 |
| Return type | Method name |
| static HmsInstanceId | getInstance(Context context) 获取HmsInstanceId类实例。 |
| String | getId() 同步获取AAID。 |
| Task< AAIDResult > | getAAID() 异步任务获取AAID。 |
| long | 获取AAID的生成时间戳。 |
| void | 删除本地已经生成的AAID和生成时间戳。 |
| String | getToken() 不推荐使用本方法,推荐使用getToken(String appId, String scope)方法获取令牌。 |
| String | getToken(String appId, String scope) 获取接入华为推送服务所需的令牌。 |
| void | deleteToken(String appId, String scope) 删除令牌。 |
| Method |
| public static HmsInstanceId getInstance(Context context) |
| 获取HmsInstanceId类对象实例,如果该实例不存在,则会创建实例。只有获取到实例后才能调用本类中的其他方法,例如getId、getToken等。 |
Parameters
| Parameter name | Parameter desc |
| context | 应用上下文。应用集成HMS SDK最新版本需要满足HMS Core(APK)的版本不低于3.0.0。如果低于3.0.0版本,当应用有前台界面时HMS SDK会提示用户升级HMS Core(APK)为最新版本,此时getInstance的入参必须传入Activity类实例;当应用是后台应用时,如果开发者不想弹出引导升级的页面时,可以传入非Activity类型的Context类实例。 |
Throws
| Throw name | Throw desc |
| NullPointerException | 入参为空引用导致的异常。 |
Return
| type | desc |
| static HmsInstanceId | 实例对象。 |
| Method |
| public String getId() |
| 同步获取AAID。APP申请Token之前调用本接口获取应用的唯一匿名标识。Push服务端根据AAID生成应用的Token。如果应用的AAID发生变化,下次申请Token时也会生成新的Token。如果APP要上报统计事件,也需要获取AAID作为应用唯一标识。 |
Return
| type | desc |
| String | 应用的匿名设备标识。 |
| Method |
| public Task< AAIDResult > getAAID() |
| 异步任务获取AAID。此接口为异步操作接口,需要添加对应的侦听器来侦听任务执行结果。 |
Return
| type | desc |
| Task< AAIDResult > | 接口调用结果为Task类型,开发者需要添加对应的侦听器来侦听任务执行结果。任务执行成功后可以使用AAIDResult.getId()方法获取AAID字符串。 |
Sample Code
- public void t01_getAAID() {
- Task<AAIDResult> idResult = HmsInstanceId.getInstance(context).getAAID();
- idResult.addOnSuccessListener(new OnSuccessListener<AAIDResult>() {
- @Override
- public void onSuccess(AAIDResult aaidResult) {
- String aaid = aaidResult.getId();
- Log.d(TAG, "getAAID success:" + aaid );
- }
- }).addOnFailureListener(new OnFailureListener() {
- @Override
- public void onFailure(Exception e) {
- Log.d(TAG, "getAAID failure:" + e);
- }
- });
- }
| Method |
| public long getCreationTime() |
| 获取AAID的生成时间戳。 |
Return
| type | desc |
| long | 时间戳,自1970年1月1日0时0分0秒起至AAID生成时间点的时间差,单位毫秒。 |
| Method |
| public void deleteAAID() throws ApiException |
| 删除本地已经生成的AAID和生成时间戳。 |
Throws
| Throw name | Throw desc |
| ApiException | 调用此方法失败产生的一切异常都通过本异常类抛出。开发者可以通过ApiException类提供的方法获取错误信息。 |
Sample Code
- public void t05_deleteAAID() {
- new Thread() {
- @Override
- public void run() {
- try {
- HmsInstanceId.getInstance(context).deleteAAID();
- Log.i(TAG, "deleteAAID ok.");
- } catch (Exception e) {
- Log.i(TAG, "deleteAAID failed!");
- }
- }
- }.start();
- }
| Method |
| public String getToken() |
注意: 不推荐使用本方法获取令牌,推荐使用getToken(String appId, String scope)方法。 |
Return
| type | desc |
| String | 接入华为推送服务所需的令牌。 |
| Method |
| public String getToken(String appId, String scope) throws ApiException |
| 获取接入华为推送服务所需的令牌。如果本地没有生成AAID,调用本方法会自动生成AAID,Push服务端生成令牌时依赖AAID。此接口为同步接口,请不要在主线程中调用,以免阻塞主线程。 |
Parameters
| Parameter name | Parameter desc |
| appId | 在AppGallery Connect平台创建应用时分配的APP ID |
| scope | 授权范围,开发者目前可传入常量com.huawei.hms.push.HmsMessaging.INSTANCE_ID_SCOPE,即字符串"HCM" |
Throws
| Throw name | Throw desc |
| ApiException | 调用此方法失败产生的一切异常通过本异常类抛出,比如在主线程中调用该方法则抛出ErrorEnum.ERROR_MAIN_THREAD。开发者可以通过ApiException类提供的方法获取错误信息。 |
Return
| type | desc |
| String | 接入华为推送服务所需的令牌。 |
Sample Code
- public void sync_getToken() {
- new Thread() {
- @Override
- public void run() {
- try {
- String getToken = HmsInstanceId.getInstance(context).getToken(appid, "HCM");
- Log.d(TAG, "getToken:" + getToken);
- } catch (Exception e) {
- Log.i(TAG, "getToken failed.");
- }
- }
- }.start();
- }
| Method |
| public void deleteToken(String appId, String scope) throws ApiException |
| 删除令牌方法,令牌删除不会删除AAID。此接口为同步接口,请不要在主线程中调用,以免阻塞主线程。 |
Parameters
| Parameter name | Parameter desc |
| appId | 在AppGallery Connect平台创建应用时分配的APP ID |
| scope | 授权范围,开发者目前可传入常量com.huawei.hms.push.HmsMessaging.DEFAULT_TOKEN_SCOPE,即字符串"HCM" |
Throws
| Throw name | Throw desc |
| ApiException | 调用此方法失败产生的一切异常通过本异常类抛出,比如在主线程中调用该方法则抛出ErrorEnum.ERROR_MAIN_THREAD。开发者可以通过ApiException类提供的方法获取错误信息。 |
Sample Code
- public void t06_deleteToken() {
- new Thread() {
- @Override
- public void run() {
- try {
- HmsInstanceId.getInstance(context).deleteToken(appid, "HCM");
- Log.i(TAG, "deleteToken ok.");
- } catch (Exception e) {
- Log.i(TAG, "deleteToken failed.");
- }
- }
- }.start();
- }