Laravel FCM 通知项目使用教程

Laravel FCM 通知项目使用教程

laravel-fcm-notificationLaravel FCM (Firebase Cloud Messaging) Notification Channel项目地址:https://gitcode.com/gh_mirrors/la/laravel-fcm-notification

1. 项目的目录结构及介绍

laravel-fcm-notification/
├── src/
│   ├── FcmNotificationServiceProvider.php
│   └── FcmMessage.php
├── tests/
├── .editorconfig
├── .gitattributes
├── .gitignore
├── .styleci.yml
├── CHANGELOG.md
├── CONTRIBUTING.md
├── LICENSE.md
├── README.md
├── composer.json
├── phpunit.xml.dist

目录结构介绍

  • src/: 包含项目的主要源代码文件。
    • FcmNotificationServiceProvider.php: Laravel 服务提供者,用于注册和引导 FCM 通知服务。
    • FcmMessage.php: 用于构建和发送 FCM 消息的类。
  • tests/: 包含项目的测试文件。
  • .editorconfig: 编辑器配置文件,用于统一代码风格。
  • .gitattributes: Git 属性配置文件。
  • .gitignore: Git 忽略文件配置。
  • .styleci.yml: StyleCI 配置文件,用于代码风格检查。
  • CHANGELOG.md: 项目更新日志。
  • CONTRIBUTING.md: 贡献指南。
  • LICENSE.md: 项目许可证。
  • README.md: 项目说明文档。
  • composer.json: Composer 依赖管理文件。
  • phpunit.xml.dist: PHPUnit 测试配置文件。

2. 项目的启动文件介绍

项目的启动文件主要是 FcmNotificationServiceProvider.php,它负责在 Laravel 应用中注册和引导 FCM 通知服务。

namespace Benwilkins\FCM;

use Illuminate\Support\ServiceProvider;

class FcmNotificationServiceProvider extends ServiceProvider
{
    public function boot()
    {
        $this->app->make('Illuminate\Notifications\ChannelManager')->extend('fcm', function ($app) {
            return new FcmChannel($app->make('HttpClient'));
        });
    }

    public function register()
    {
        // 注册服务
    }
}

启动文件介绍

  • boot(): 引导方法,用于扩展 Laravel 的通知通道管理器,注册 FCM 通知通道。
  • register(): 注册方法,用于注册服务。

3. 项目的配置文件介绍

项目的配置文件主要是 config/services.php,需要在其中添加 Firebase API Key。

return [
    /*
     * Add the Firebase API key
     */
    'fcm' => [
        'key' => env('FCM_SECRET_KEY')
    ]
];

配置文件介绍

  • fcm: 配置项,用于存储 Firebase API Key。
    • key: 从环境变量 FCM_SECRET_KEY 中读取 Firebase API Key。

以上是 Laravel FCM 通知项目的目录结构、启动文件和配置文件的介绍。希望这份教程能帮助你更好地理解和使用该项目。

laravel-fcm-notificationLaravel FCM (Firebase Cloud Messaging) Notification Channel项目地址:https://gitcode.com/gh_mirrors/la/laravel-fcm-notification

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要实现 FCM 自定义通知横幅,你需要在客户端和服务器端分别进行以下配置: 客户端配置: 1. 在你的项目级 build.gradle 文件中添加以下依赖: ``` implementation 'com.google.firebase:firebase-messaging:22.0.0' ``` 2. 在你的应用级 build.gradle 文件中添加以下配置: ``` android { // ... defaultConfig { // ... // 设置通道 ID,用于兼容 Android 8.0 及以上版本的通知 notificationChannelId "my_channel_id" } } // 在 AndroidManifest.xml 文件中添加以下权限和服务声明 <uses-permission android:name="android.permission.INTERNET" /> <service android:name=".MyFirebaseMessagingService" android:exported="false"> <intent-filter> <action android:name="com.google.firebase.MESSAGING_EVENT" /> </intent-filter> </service> <service android:name=".MyFirebaseInstanceIDService" android:exported="false"> <intent-filter> <action android:name="com.google.firebase.INSTANCE_ID_EVENT" /> </intent-filter> </service> ``` 3. 创建一个继承自 FirebaseMessagingService 的服务类,并重写 onMessageReceived 方法,用于处理接收到的消息,如下所示: ``` public class MyFirebaseMessagingService extends FirebaseMessagingService { private static final String TAG = "MyFirebaseMessagingService"; @Override public void onMessageReceived(RemoteMessage remoteMessage) { Log.d(TAG, "From: " + remoteMessage.getFrom()); // Check if message contains a notification payload. if (remoteMessage.getNotification() != null) { Log.d(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody()); // 发送自定义横幅通知 sendCustomNotification(remoteMessage); } } private void sendCustomNotification(RemoteMessage remoteMessage) { // 创建一个 NotificationCompat.Builder 对象 NotificationCompat.Builder builder = new NotificationCompat.Builder(this, "my_channel_id") .setSmallIcon(R.drawable.notification_icon) .setContentTitle(remoteMessage.getNotification().getTitle()) .setContentText(remoteMessage.getNotification().getBody()) .setPriority(NotificationCompat.PRIORITY_HIGH) .setAutoCancel(true); // 添加自定义横幅样式 NotificationCompat.BigTextStyle bigTextStyle = new NotificationCompat.BigTextStyle() .setBigContentTitle(remoteMessage.getNotification().getTitle()) .bigText(remoteMessage.getNotification().getBody()); builder.setStyle(bigTextStyle); // 显示通知 NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this); notificationManager.notify(1, builder.build()); } } ``` 服务器端配置: 1. 使用 Firebase 控制台创建一个新的 Firebase 项目,并在项目设置中获取到项目的 Server key。 2. 使用项目的 Server key 发送消息到 FCM 接口,消息格式如下: ``` { "to": "设备的 FCM token", "notification": { "title": "通知标题", "body": "通知内容" }, "data": { // 自定义数据 } } ``` 这样,当你的应用接收到消息时,就会发送一个自定义横幅通知。需要注意的是,自定义横幅样式只会在 Android 5.0 及以上版本的设备上生效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龚翔林Shannon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值