我用华为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”。
如何订阅主题?
答案 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());
}
}
}