HMS 订阅主题不订阅错误消息 907122054

时间:2021-03-30 11:12:11

标签: android huawei-mobile-services

我用华为HMS开发了一个应用来接收推送通知。

这是我的代码:

我在 onCreate 的主要活动中调用它

subscribe("myTopic");

这是订阅代码:

public void subscribe(String topic) {
    try {
        HmsMessaging.getInstance(this).subscribe(topic)
                .addOnCompleteListener(task -> {
                    if (task.isSuccessful()) {
                        Toast.makeText(MainActivity.this, "subscribe Complete", Toast.LENGTH_LONG).show();
                    } else {
                          Toast.makeText(MainActivity.this, "subscribe failed1: ret=" + task.getException().getMessage(), Toast.LENGTH_LONG).show();
                    }
                });
    } catch (Exception e) {
        Toast.makeText(MainActivity.this, "subscribe failed2: ret=" + e.getMessage(), Toast.LENGTH_LONG).show();
    }
}

但它总是进入任务不成功的“else”。

如何订阅主题?

2 个答案:

答案 0 :(得分:0)

Seems to be 这个错误意味着,PushKit 尚未初始化,您启用了自动初始化。

根据auto initialization documentation,您可以使用HmsMessageService#onNewToken 方法对已初始化的PushKit 执行某些操作。所以尝试在 onNewToken 方法中订阅主题。

答案 1 :(得分:0)

错误消息 907122054 表示您正在使用启用了自动初始化的 Push Kit。 Link

官方开发者文档指出,应该使用 HmsMessageService 的 onNewToken() 方法来获取推送令牌。

HmsMessageService, onNewToken() Link

Auto Initialization Documentation

这是一个扩展 HmsMessageService 并覆盖 onNewToken() 方法的类的示例。 Link

public class MyPushService extends HmsMessageService {
    private static final String TAG = "PushDemoLog";
    @Override
    public void onNewToken(String token) {
        super.onNewToken(token);
        Log.i(TAG, "receive token:" + token);
    }

    @Override
    public void onMessageReceived(RemoteMessage message) {
        super.onMessageReceived(message);
        Log.i(TAG, "getCollapseKey: " + message.getCollapseKey()
                + "\n getData: " + message.getData()
                + "\n getFrom: " + message.getFrom()
                + "\n getTo: " + message.getTo()
                + "\n getMessageId: " + message.getMessageId()
                + "\n getSendTime: " + message.getSentTime()
                + "\n getMessageType: " + message.getMessageType()
                + "\n getTtl: " + message.getTtl());

        RemoteMessage.Notification notification = message.getNotification();
        if (notification != null) {
            Log.i(TAG, "\n getImageUrl: " + notification.getImageUrl()
                    + "\n getTitle: " + notification.getTitle()
                    + "\n getTitleLocalizationKey: " + notification.getTitleLocalizationKey()
                    + "\n getTitleLocalizationArgs: " + Arrays.toString(notification.getTitleLocalizationArgs())
                    + "\n getBody: " + notification.getBody()
                    + "\n getBodyLocalizationKey: " + notification.getBodyLocalizationKey()
                    + "\n getBodyLocalizationArgs: " + Arrays.toString(notification.getBodyLocalizationArgs())
                    + "\n getIcon: " + notification.getIcon()
                    + "\n getSound: " + notification.getSound()
                    + "\n getTag: " + notification.getTag()
                    + "\n getColor: " + notification.getColor()
                    + "\n getClickAction: " + notification.getClickAction()
                    + "\n getChannelId: " + notification.getChannelId()
                    + "\n getLink: " + notification.getLink()
                    + "\n getNotifyId: " + notification.getNotifyId());
        }
    }
}