uni-app push2.0 uni.createPushMessage API创建了通知栏但文档缺少对应通知栏点击事件

发布于 1周前 作者 gougou168 来自 Uni-App

uni-app push2.0 uni.createPushMessage API创建了通知栏但文档缺少对应通知栏点击事件

开发环境 版本号 项目创建方式
Windows win10 HBuilderX

操作步骤:

  • 没有点击事件的api

预期结果:

  • 创建的通知栏能够添加点击事件

实际结果:

  • 实际在官网文档中没有找到通知栏对应的点击事件

bug描述:

  • push2.0 uni.createPushMessage api创建了通知栏,文档里没有对应通知栏的点击事件

1 回复

在uni-app中使用uni.createPushMessage API创建通知栏消息后,确实需要在用户点击通知栏时执行相应的操作。虽然官方文档中可能未明确提及点击事件的处理方式,但我们可以通过监听系统通知点击事件来实现这一功能。

在uni-app中,处理通知栏点击事件通常涉及原生插件或平台特定的代码。以下是一个基于Android平台使用Java插件和iOS平台使用Objective-C或Swift插件的示例,展示如何在用户点击通知时触发特定操作。

Android平台

  1. 创建Java插件

首先,在app/src/main/java目录下创建一个Java类,用于处理通知点击事件。

import android.app.NotificationManager;
import android.content.Context;
import android.content.Intent;
import android.support.v4.app.NotificationCompat;
import io.dcloud.feature.uniapp.bridge.UniJSCallback;

public class NotificationClickReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        // 处理点击事件,例如打开特定页面或执行某些操作
        String action = intent.getAction();
        if ("com.example.ACTION_NOTIFICATION_CLICKED".equals(action)) {
            // 执行操作
        }
    }
}

AndroidManifest.xml中注册该Receiver。

<receiver android:name=".NotificationClickReceiver">
    <intent-filter>
        <action android:name="com.example.ACTION_NOTIFICATION_CLICKED" />
    </intent-filter>
</receiver>
  1. 在uni-app中调用

通过JSBridge调用原生插件来发送通知,并处理点击事件。

iOS平台

  1. 创建Objective-C/Swift插件

在iOS项目中,使用UNUserNotificationCenterDelegate来处理通知点击事件。

#import <UserNotifications/UserNotifications.h>

@interface AppDelegate () <UNUserNotificationCenterDelegate>

@end

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
    center.delegate = self;
    return YES;
}

- (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)(void))completionHandler {
    // 处理点击事件
    completionHandler();
}

@end
  1. 在uni-app中调用

与Android类似,通过JSBridge与原生代码交互,发送通知并处理点击事件。

总结

由于uni-app本身不直接处理原生通知点击事件,因此需要通过原生插件来实现这一功能。上述示例展示了如何在Android和iOS平台上处理通知点击事件的基本思路。具体实现时,需根据实际需求调整代码,并确保插件与uni-app项目的正确集成。

回到顶部