Thông báo đẩy kéo người dùng quay lại
Báo có hàng trở lại, lời nhắc và phản hồi tới iOS, Android và web qua một API tương thích Beams, với chủ đề do người dùng chọn và liên kết sâu.
Phần lớn người dùng của bạn lúc này không ở trong ứng dụng. Một thông báo đẩy đúng lúc (“Sản phẩm bạn quan tâm đã có hàng trở lại”, “Lớp của bạn bắt đầu sau 15 phút”, “Ann đã trả lời bạn”) đưa họ quay lại vì một lý do họ thực sự quan tâm. Hibira Push gửi tới iOS, Android và trình duyệt qua một API tương thích Beams, nên bạn chỉ viết logic một lần.
Người dùng nhận được gì
- Thông báo về những thứ họ chọn theo dõi: giảm giá, trận đấu của đội yêu thích, tập mới.
- Lời nhắc và phản hồi cá nhân trên thiết bị họ đang dùng.
- Một chạm là mở đúng trang, không phải màn hình chính.
Dùng những gì
- Interest: chủ đề mà thiết bị đăng ký, như
price-drop-sku-123hoặcteam-tigers, để một lần phát tới mọi người đang theo dõi. - Người dùng đã xác thực: phát tới một ID người dùng và tới mọi thiết bị mà người đó đã đăng nhập.
- APNs, FCM và Web Push trong một yêu cầu, với SDK web, Android và iOS.
- Giữ nguyên mã Beams hiện có: SDK máy chủ chính thức của Beams hoạt động với endpoint của bạn.
Bước 1: để người dùng chọn thứ muốn theo dõi
Đăng ký thiết bị vào một interest khi người dùng chạm “Báo cho tôi”:
import { Client } from '@hibira-io/push-web';
const push = new Client({ instanceId: 'YOUR_INSTANCE_ID', endpoint: 'https://ws.hibira.io' });
// Browsers only show the permission prompt after a click or tap.
notifyButton.addEventListener('click', async () => {
await push.start();
await push.addDeviceInterest(`price-drop-sku-${sku}`);
notifyButton.textContent = 'We will tell you';
});Android và iOS cũng có addDeviceInterest y như vậy; cách thiết lập từng nền tảng có trong hướng dẫn thông báo đẩy.
Bước 2: phát khi sự việc xảy ra
const PushNotifications = require('@pusher/push-notifications-server');
const beams = new PushNotifications({ instanceId: 'YOUR_INSTANCE_ID', secretKey: process.env.HIBIRA_PUSH_SECRET_KEY, endpoint: 'ws.hibira.io' });
beams.protocol = 'https';
await beams.publishToInterests([`price-drop-sku-${sku}`], {
web: { notification: { title: 'Back in stock', body: `${name} is back, now ${price}.`, deep_link: `https://your-shop.example/p/${sku}` } },
fcm: { notification: { title: 'Back in stock', body: `${name} is back, now ${price}.` }, data: { url: `/p/${sku}` } },
apns: { aps: { alert: { title: 'Back in stock', body: `${name} is back, now ${price}.` } }, data: { url: `/p/${sku}` } },
});Một lần phát tới mọi thiết bị đang theo dõi interest đó.
Bước 3: tin nhắn cá nhân cho người dùng đã đăng nhập
Liên kết thiết bị với ID người dùng của bạn sau khi đăng nhập (SDK gọi route token của bạn), rồi phát tới người dùng đó:
await beams.publishToUsers([String(userId)], {
fcm: { notification: { title: 'Your class starts in 15 minutes', body: 'Yoga with Mei, studio 2.' } },
apns: { aps: { alert: { title: 'Your class starts in 15 minutes', body: 'Yoga with Mei, studio 2.' } } },
web: { notification: { title: 'Your class starts in 15 minutes', deep_link: 'https://your-site.example/bookings' } },
});Khi người dùng đăng xuất, gọi push.stop() trong trình duyệt (clearAllState() trên Android và iOS), và gọi beams.deleteUser(userId) trên máy chủ khi họ xóa tài khoản.
Mẹo
- Xin quyền vào đúng lúc nó có ích (“Báo cho tôi khi có hàng”), không phải ở lần xem trang đầu tiên; người dùng đồng ý nhiều hơn hẳn.
- Mỗi thứ có thể theo dõi là một interest. Interest không tốn kém gì; thông báo mà người dùng không yêu cầu sẽ khiến ứng dụng của bạn bị tắt tiếng.
- Tôn trọng giờ yên lặng theo múi giờ của người dùng trên máy chủ trước khi phát.
- Kết hợp thông báo đẩy với thời gian thực: khi người dùng đang ở trong ứng dụng, hiển thị cùng sự kiện ngay tại chỗ bằng thông báo trong ứng dụng và bỏ qua thông báo đẩy.