HarmonyOS 鸿蒙Next推送功能调用华为推送接口返回“没有权限打开Activity”

发布于 1周前 作者 h691938207 来自 鸿蒙OS

HarmonyOS 鸿蒙Next推送功能调用华为推送接口返回“没有权限打开Activity”

调用推送接口,返回成功,结果查询的时候返回“没有权限打开Activity”,鸿蒙OS有Activity?

curl ‘https://push-api.cloud.huawei.com/v3/*********/messages:send’

请求参数如下:

{
“payload”: {
“notification”: {
“category”: “IM”,
“title”: “普通通知标题”,
“body”: “普通通知内容”,
“clickAction”: {
“actionType”: 0
}
}
},
“target”: {
“token”: [
“MAM6LgLI8gkD8wwAstO3hwAAAGQAAAAAAAKK2UkNAPI5pWl5U0XOGuE9R8NF95Gv5PAVqQhOA9q0qlclAJIXLRChXJp_rl7lABdrZZD8CDhv7IaJ”
]
},
“pushOptions”: {
“testMessage”: true
}
}<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>



关于HarmonyOS 鸿蒙Next推送功能调用华为推送接口返回“没有权限打开Activity”的问题,您也可以访问:https://www.itying.com/category-93-b0.html 联系官网客服。

8 回复
已解决,module.json5里面配置了URL导致的

HarmonyOS的分布式技术让我实现了跨设备的无缝协作,工作效率翻倍。

您好,请问是怎么解决的呢?module.json5的什么字段导致的这个问题呢?

希望HarmonyOS能继续推出更多实用的功能,满足用户的不同需求。

照着demo配置就好了,我的问题是规则没有匹配到, 根据你们的需求配置,正常情况是要配置uri的

谢了,uri和actions配置的问题:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/push-send-alert-V5h±/$%-+看文档是 使用actions时 配置文件中uris需要为空 使用uris时actions需要为空 奇怪的规则

收到你的推送消息后,设备并没有自动打开应用,而是显示了一个系统级别的通知。这通常是由系统处理推送消息并显示通知的过程。在Android系统中,如果应用不在前台运行或者被用户手动清除通知,系统会显示一个系统级别的通知。
要解决这个问题,你可以检查以下几点:
1.确保应用已经在后台运行:如果应用没有在后台运行,系统将不会自动显示通知。用户需要手动打开应用。
2.检查应用的通知设置:确保应用的通知设置允许显示通知。在应用的设置或首选项中,查找通知相关的选项,确保它们没有被禁用。
3.测试不同的消息类型:尝试发送不同类型的推送消息(例如,数据消息或通知消息),以确定问题是否与特定类型的消息有关。
4.检查通知的点击动作:确保你的通知点击动作已经正确设置。如果点击通知时需要打开特定的Activity,请确保Intent中指定了正确的组件信息。
5.使用系统的通知记录工具:检查系统的通知记录工具,看看是否有关于你的应用的通知记录。这有助于了解通知是如何被系统处理的。
如果你希望在应用在后台时也能显示自定义的通知,你可能需要实现一个前台服务(Foreground Service)。前台服务可以在Android 8.0(API级别26)及以上版本中运行,并且会显示一个持续的通知,直到服务被销毁或者用户关闭它。
要创建一个前台服务,你需要执行以下步骤:
1.创建一个继承自Service的类。
2.在服务类中,调用startForeground()方法来启动服务并显示通知。
3.在服务结束时,调用stopForeground()方法来移除通知。
下面是一个简单的示例,展示了如何创建和启动一个前台服务:
public class ForegroundService extends Service {

    private static final String CHANNEL_ID = “ForegroundServiceChannel”;

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        // 创建一个NotificationChannel(Android 8.0及以上版本需要)
        createNotificationChannel();

        // 创建一个Notification,这将显示在系统的通知栏中
        Notification notification = new NotificationCompat.Builder(this, CHANNEL_ID)
                .setContentTitle(“Foreground Service”)
                .setContentText(“Service is running in the background”)
                .setSmallIcon(R.drawable.ic_notification)
                .build();

        // 启动前台服务
        startForeground(1, notification);

        // 如果服务需要一直运行,可以返回START_STICKY
        return START_NOT_STICKY;
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        // 服务被销毁时,移除通知
        stopForeground(true);
    }

    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    private void createNotificationChannel() {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            NotificationChannel serviceChannel = new NotificationChannel(
                    CHANNEL_ID,
                    “Foreground Service Channel”,
                    NotificationManager.IMPORTANCE_DEFAULT
            );
            NotificationManager manager = getSystemService(NotificationManager.class);
            manager.createNotificationChannel(serviceChannel);
        }
    }
}

鸿蒙next系统,不是android

回到顶部