我正在使用以下代码段,但是仍然无法获取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();
}
拥有日志将是完美的,但是如果日志中的所有内容都正常,则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