带有 2 个按钮的渐进式 Web 应用程序的 Android 推送通知?

Posted

技术标签:

【中文标题】带有 2 个按钮的渐进式 Web 应用程序的 Android 推送通知?【英文标题】:Android push notifications with 2 buttons for Progressive Web Apps? 【发布时间】:2018-03-27 12:51:36 【问题描述】:

我正在使用 Firebase 云消息传递 (FCM) 后端构建一个离线/可安装的渐进式 Web 应用程序 (PWA)。 是否可以为已安装的 PWA 生成带有 2 个按钮的 android 推送通知?这是一个例子:

【问题讨论】:

@RajeshKushvaha 问题是针对使用 html/CSS/JS 构建的渐进式 Web 应用程序,而不是原生 Android。 PWA 基本上是一个可安装的网站。 【参考方案1】:

是的,这可以通过新的 FCM REST API 实现:

https://firebase.googleblog.com/2018/05/web-notifications-api-support-now.html

有效负载示例:

    
        "message": 
            "webpush": 
                "notification": 
                    "title": "Fish Photos ?",
                    "body":
                        "Thanks for signing up for Fish Photos! You now will receive fun daily photos of fish!",
                    "icon": "firebase-logo.png",
                    "image": "guppies.jpg",
                    "data": 
                        "notificationType": "fishPhoto",
                        "photoId": "123456"
                    ,
                    "click_action": "https://example.com/fish_photos",
                    "actions": [
                        
                            "title": "Like",
                            "action": "like",
                            "icon": "icons/heart.png"
                        ,
                        
                            "title": "Unsubscribe",
                            "action": "unsubscribe",
                            "icon": "icons/cross.png"
                        
                    ]
                
            ,
            "token": "<APP_INSTANCE_REGISTRATION_TOKEN>"
        
    

请注意,您需要在 Service Worker 代码中为这些自定义操作注册回调,以处理用户单击自定义按钮时应该发生的任何事情:

服务工作者:

    // Retrieve an instance of Firebase Messaging so that it can handle background messages.
    const messaging = firebase.messaging();

    // Add an event listener to handle notification clicks
    self.addEventListener('notificationclick', function(event) 
         if (event.action === 'like') 
                 // Like button was clicked

                 const photoId = event.notification.data.photoId;
                 like(photoId);
         
         else if (event.action === 'unsubscribe') 
                 // Unsubscribe button was clicked

                 const notificationType = event.notification.data.notificationType;
                 unsubscribe(notificationType);
         

         event.notification.close();
    );

【讨论】:

以上是关于带有 2 个按钮的渐进式 Web 应用程序的 Android 推送通知?的主要内容,如果未能解决你的问题,请参考以下文章

在另一个渐进式Web应用程序范围内的渐进式Web应用程序

渐进式 Web 应用程序“无法脱机工作”错误

轻松理解什么是渐进式web应用

在 Iphone 上禁用 Progressive Web App 上的后退按钮

渐进式 Web 应用程序介绍

渐进式 Web 应用程序介绍