为什么不能通过使用华为Push Kit来获取pushToken?

问题描述 投票:0回答:1

我正在使用以下代码段,但是仍然无法获取pushToken。

private void obtainToken() {
    // get token
    new Thread() {
        @Override
        public void run() {
            try {
                String appId = AGConnectServicesConfig.fromContext(MainActivity.this).getString("client/app_id");
                pushtoken = HmsInstanceId.getInstance(MainActivity.this).getToken(appId, "HCM");
                if(!TextUtils.isEmpty(pushtoken)) {
                    Log.i(TAG, "get token:" + pushtoken);
                }
            } catch (Exception e) {
                Log.i(TAG,"getToken failed, " + e);

            }
       }
   }.start();

}

push hms
1个回答
0
投票

拥有日志将是完美的,但是如果日志中的所有内容都正常,则HCM的异常和结果代码均未成功,则请验证设备的EMUI版本。

如果设备的EMUI版本低于10.0,则您使用的代码将返回空的推送令牌。在这种情况下,有必要实现扩展HmsMessageService的自定义服务。

在您的AndroidManifest.xml中添加;

<service
   android:name=".CustomPushService"
   android:exported="false">
      <intent-filter>
         <action android:name="com.huawei.push.action.MESSAGING_EVENT" />
     </intent-filter>
</service>

然后创建以下课程;

public class CustomPushService extends HmsMessageService {
     private static final String TAG = "PushTokenLog";

     @Override
     public void onNewToken(String token) {

       super.onNewToken(token);
       Log.i(TAG, "receive token:" + token);
      }
}

最后但并非最不重要的一点,请确保您的设备是华为:) HMS Core的大多数功能都依赖于EMUI。没有EMUI,目前无法保证功能的功能。

下面是查看HMS Core-EMUI关系的不错参考。https://developer.huawei.com/consumer/en/doc/development/HMS-Guides/emui_version_dependent_features

© www.soinside.com 2019 - 2024. All rights reserved.