Để khắc phục sự cố gửi thông báo đang diễn ra, hãy sử dụng trình khắc phục sự cố FCM và xem bài đăng trên blog này để hiểu các lý do khác nhau khiến bạn có thể không thấy thông báo của mình. Bạn cũng có thể truy cập vào trang tổng quan về trạng thái của FCM để xác định xem có sự cố gián đoạn dịch vụ nào đang diễn ra ảnh hưởng đến FCM hay không.
FCM cũng cung cấp 3 bộ công cụ giúp bạn có được thông tin chi tiết về việc đánh giá rộng rãi mức độ thành công và chiến lược của thông báo:
- Firebase báo cáo gửi thông báo trên bảng điều khiển
- Chỉ số phân phối tổng hợp của SDK Android từ Firebase Cloud Messaging Data API
- Xuất dữ liệu toàn diện sang Google BigQuery
Để xuất dữ liệu sang BigQuery và sử dụng thẻ Báo cáo trong bảng điều khiển Firebase, bạn đều cần có Google Analytics. Bạn có thể bật
Google Analytics trong thẻ
Xin lưu ý rằng báo cáo của nhiều số liệu thống kê trên trang này có thể bị trễ đến 24 giờ do việc phân nhóm dữ liệu phân tích.
Báo cáo về hoạt động gửi thư
Trong bảng điều khiển Firebase, hãy chuyển đến thẻ DevOps & Engagement (DevOps và mức độ tương tác) > Messaging (Nhắn tin) > Reports (Báo cáo) để xem dữ liệu sau đây về các thông báo được gửi đến SDK FCM của nền tảng Android hoặc Apple, bao gồm cả những thông báo được gửi bằng Trình soạn thông báo và API FCM:
- Số lượt gửi — Thông báo dữ liệu hoặc thông báo đã được đưa vào hàng đợi để gửi hoặc đã được chuyển thành công đến một dịch vụ bên thứ ba như APN để gửi. Xin lưu ý rằng số liệu thống kê về số lượt gửi có thể bị trễ vài giờ. Hãy xem phần vòng đời của thông báo để biết thêm thông tin.
- Đã nhận (chỉ có trên thiết bị Android) — Ứng dụng đã nhận được thông báo dữ liệu hoặc thông báo. Dữ liệu này có sẵn khi thiết bị Android nhận đã cài đặt FCM SDK 18.0.1 trở lên.
- Số lượt hiển thị (chỉ dành cho thông báo trên thiết bị Android) — Thông báo hiển thị đã xuất hiện trên thiết bị khi ứng dụng đang chạy trong nền.
- Lượt mở – Người dùng đã mở thông báo. Chỉ được báo cáo cho thông báo nhận được khi ứng dụng đang chạy trong nền.
Dữ liệu này có sẵn cho tất cả thông báo có tải trọng thông báo và tất cả tin nhắn dữ liệu được gắn nhãn. Để tìm hiểu thêm về nhãn, hãy xem bài viết Thêm nhãn phân tích vào thư.
Khi xem báo cáo về tiện ích tin nhắn, bạn có thể đặt phạm vi ngày cho dữ liệu hiển thị, với lựa chọn xuất sang tệp CSV. Bạn cũng có thể lọc theo các tiêu chí sau:
- Nền tảng (iOS hoặc Android)
- Ứng dụng
- Nhãn số liệu phân tích tuỳ chỉnh
Thêm nhãn phân tích vào thư
Việc gắn nhãn cho thông báo rất hữu ích cho việc phân tích tuỳ chỉnh, cho phép bạn lọc số liệu thống kê về việc gửi theo nhãn hoặc nhóm nhãn. Bạn có thể thêm nhãn vào bất kỳ thông báo nào được gửi bằng API HTTP phiên bản 1 bằng cách đặt trường fcmOptions.analyticsLabel trong đối tượng message hoặc trong các trường AndroidFcmOptions hoặc ApnsFcmOptions dành riêng cho nền tảng.
Nhãn Analytics là các chuỗi văn bản có định dạng ^[a-zA-Z0-9-_.~%]{1,50}$.
Nhãn có thể bao gồm chữ cái viết thường và viết hoa,
số và các ký hiệu sau:
-~%
Độ dài tối đa là 50 ký tự. Bạn có thể chỉ định tối đa 100 nhãn riêng biệt mỗi ngày; những thư có nhãn được thêm vượt quá giới hạn đó sẽ không được báo cáo.
Trong thẻ Báo cáo của tính năng nhắn tin trong bảng điều khiển Firebase, bạn có thể tìm kiếm danh sách tất cả nhãn hiện có và áp dụng riêng lẻ hoặc kết hợp các nhãn đó để lọc số liệu thống kê hiển thị.
Dữ liệu phân phối tổng hợp bằng FCM Data API
API dữ liệu của Giải pháp gửi thông báo qua đám mây của Firebase cho phép bạn truy xuất thông tin có thể giúp bạn hiểu được kết quả của các yêu cầu gửi thông báo nhắm đến ứng dụng Android. API này cung cấp dữ liệu tổng hợp trên tất cả thiết bị Android đã bật tính năng thu thập dữ liệu trong một dự án. Báo cáo này bao gồm thông tin chi tiết về tỷ lệ phần trăm thông báo được gửi mà không bị trễ, cũng như số lượng thông báo bị trễ hoặc bị bỏ qua trong Lớp truyền tải Android. Việc đánh giá dữ liệu này có thể cho thấy các xu hướng chung trong việc gửi thông báo và giúp bạn tìm ra những cách hiệu quả để cải thiện hiệu suất của các yêu cầu gửi. Hãy xem phần Dòng thời gian của dữ liệu tổng hợp để biết thông tin về phạm vi ngày có sẵn trong báo cáo.
API này cung cấp tất cả dữ liệu có sẵn cho một ứng dụng nhất định. Xem tài liệu tham khảo API.
Dữ liệu được phân tích chi tiết như thế nào?
Dữ liệu phân phối được chia nhỏ theo ứng dụng, ngày và nhãn phân tích.
Một lệnh gọi đến API sẽ trả về dữ liệu cho mọi tổ hợp ngày, ứng dụng và nhãn phân tích. Ví dụ: một đối tượng JSON androidDeliveryData sẽ có dạng như sau:
{
"appId": "1:23456789:android:a93a5mb1234efe56",
"date": {
"year": 2021,
"month": 1,
"day": 1
},
"analyticsLabel": "foo",
"data": {
"countMessagesAccepted": "314159",
"messageOutcomePercents": {
"delivered": 71,
"pending": 15
},
"deliveryPerformancePercents": {
"deliveredNoDelay": 45,
"delayedDeviceOffline": 11
}
}
Cách diễn giải các chỉ số
Dữ liệu gửi thư cho biết tỷ lệ phần trăm thư phù hợp với từng chỉ số sau đây. Có thể một thông báo phù hợp với nhiều chỉ số. Do những hạn chế trong cách chúng tôi thu thập dữ liệu và mức độ chi tiết mà chúng tôi tổng hợp các chỉ số, một số kết quả của tin nhắn hoàn toàn không được thể hiện trong các chỉ số, vì vậy, tổng các tỷ lệ phần trăm dưới đây sẽ không bằng 100%.
Số lượng tin nhắn được chấp nhận
Số lượng duy nhất có trong tập dữ liệu là số lượng thông báo mà FCM chấp nhận để gửi đến thiết bị Android. Tất cả tỷ lệ phần trăm đều sử dụng giá trị này làm mẫu số. Xin lưu ý rằng số lượng này sẽ không bao gồm những thông báo nhắm đến người dùng đã tắt tính năng thu thập thông tin sử dụng và chẩn đoán trên thiết bị của họ.
Tỷ lệ phần trăm kết quả của thông báo
Các trường có trong đối tượng MessageOutcomePercents cung cấp thông tin về kết quả của yêu cầu gửi thông báo. Các danh mục đều loại trừ lẫn nhau. Công cụ này có thể trả lời các câu hỏi như "Tin nhắn của tôi có được gửi không?" và "Nguyên nhân nào khiến tin nhắn bị rớt?"
Ví dụ: giá trị cao cho trường droppedTooManyPendingMessages có thể báo hiệu rằng các phiên bản ứng dụng đang nhận được số lượng thông báo không thể thu gọn vượt quá giới hạn 100 thông báo đang chờ xử lý của FCM.
Để giảm thiểu vấn đề này, hãy đảm bảo ứng dụng của bạn xử lý các lệnh gọi đến onDeletedMessages và cân nhắc việc gửi thông báo có thể thu gọn. Tương tự, tỷ lệ phần trăm cao cho droppedDeviceInactive có thể là tín hiệu để cập nhật mã thông báo đăng ký trên máy chủ, xoá mã thông báo cũ và huỷ đăng ký các mã thông báo đó khỏi chủ đề. Hãy xem bài viết Quản lý mã đăng ký FCM để biết các phương pháp hay nhất trong lĩnh vực này.
Tỷ lệ phần trăm hiệu suất phân phối
Các trường trong đối tượng DeliveryPerformancePercents cung cấp thông tin về những thư đã được gửi thành công. Công cụ này có thể trả lời các câu hỏi như "Thư của tôi có bị chậm trễ không?" và "Tại sao thư bị chậm trễ?" Ví dụ: giá trị cao cho delayedMessageThrottled sẽ cho thấy rõ ràng rằng bạn đang vượt quá giới hạn tối đa cho mỗi thiết bị và nên điều chỉnh tốc độ gửi thông báo.
Tỷ lệ phần trăm thông tin chi tiết về tin nhắn
Đối tượng này cung cấp thêm thông tin về tất cả các lượt gửi tin nhắn. Trường priorityLowered thể hiện tỷ lệ phần trăm thông báo được chấp nhận có mức độ ưu tiên giảm từ HIGH xuống NORMAL. Nếu giá trị này cao, hãy thử gửi ít thông báo có mức độ ưu tiên cao hơn hoặc đảm bảo rằng bạn luôn hiển thị thông báo khi gửi thông báo có mức độ ưu tiên cao. Hãy xem tài liệu của chúng tôi về mức độ ưu tiên của thông báo để biết thêm thông tin
Dữ liệu này khác với dữ liệu được xuất sang BigQuery như thế nào?
Tính năng xuất BigQuery cung cấp nhật ký thông báo riêng lẻ về việc chấp nhận thông báo của phần phụ trợ FCM và việc gửi thông báo trong SDK trên thiết bị (Bước 2 và 4 của Kiến trúc FCM). Dữ liệu này rất hữu ích để đảm bảo từng thư đã được chấp nhận và gửi đi. Đọc thêm về tính năng xuất dữ liệu sang BigQuery trong phần tiếp theo.
Ngược lại, Data API của Giải pháp gửi thông báo qua đám mây của Firebase cung cấp thông tin tổng hợp về những gì xảy ra cụ thể trong tầng truyền tải Android (hoặc Bước 3 của Kiến trúc FCM). Dữ liệu này cung cấp thông tin chi tiết cụ thể về việc phân phối thông báo từ phần phụ trợ FCM đến SDK Android. Báo cáo này đặc biệt hữu ích trong việc cho thấy xu hướng về lý do thư bị trì hoãn hoặc bị loại bỏ trong quá trình vận chuyển này.
Trong một số trường hợp, hai tập dữ liệu có thể không khớp chính xác do những nguyên nhân sau:
- Các chỉ số tổng hợp chỉ lấy mẫu một phần trong tất cả tin nhắn
- Các chỉ số tổng hợp được làm tròn
- Chúng tôi không trình bày các chỉ số dưới ngưỡng quyền riêng tư
- Một phần kết quả của tin nhắn bị thiếu do chúng tôi tối ưu hoá cách quản lý lưu lượng truy cập lớn.
Các giới hạn của API
Tiến trình dữ liệu tổng hợp
API này sẽ trả về dữ liệu trong quá khứ của 7 ngày; tuy nhiên, dữ liệu do API này trả về sẽ bị trễ tối đa 5 ngày. Ví dụ: vào ngày 20 tháng 1, dữ liệu từ ngày 9 tháng 1 đến ngày 15 tháng 1 sẽ có sẵn, nhưng dữ liệu từ ngày 16 tháng 1 trở đi thì chưa có. Ngoài ra, dữ liệu được cung cấp trong khả năng tốt nhất có thể. Trong trường hợp bị mất dữ liệu, FCM sẽ nỗ lực khắc phục và sẽ không bổ sung dữ liệu sau khi vấn đề được khắc phục. Trong những sự cố ngừng hoạt động lớn hơn, dữ liệu có thể không có sẵn trong một tuần hoặc lâu hơn.
Mức độ phù hợp của dữ liệu
Các chỉ số do API dữ liệu của Giải pháp gửi thông báo qua đám mây của Firebase cung cấp nhằm mục đích cung cấp thông tin chi tiết về xu hướng chung của việc gửi thông báo. Tuy nhiên, các phương thức này không bao quát được 100% tất cả các trường hợp thông báo. Sau đây là những trường hợp đã biết nhưng không được phản ánh trong các chỉ số.
Tin nhắn đã hết hạn
Nếu Thời gian tồn tại (TTL) hết hạn sau khi kết thúc ngày ghi nhật ký đã cho, thì tin nhắn sẽ không được tính là droppedTtlExpired vào ngày này.
Tin nhắn đến thiết bị không hoạt động
Tin nhắn được gửi đến thiết bị không hoạt động có thể xuất hiện hoặc không xuất hiện trong tập dữ liệu, tuỳ thuộc vào đường dẫn dữ liệu mà tin nhắn đó đi qua. Điều này có thể dẫn đến một số sai sót trong việc tính toán các trường droppedDeviceInactive và pending.
Thông báo đến các thiết bị có một số lựa chọn ưu tiên của người dùng
Để tôn trọng lựa chọn ưu tiên của người dùng, chúng tôi sẽ không tính tin nhắn của những người dùng đã tắt tính năng thu thập thông tin sử dụng và chẩn đoán trên thiết bị của họ.
Làm tròn và giá trị tối thiểu
FCM cố ý làm tròn và loại trừ số lượng khi số lượng không đủ lớn.
Xuất dữ liệu sang BigQuery
Bạn có thể xuất dữ liệu tin nhắn sang BigQuery để phân tích thêm. BigQuery cho phép bạn phân tích dữ liệu bằng BigQuery SQL, xuất dữ liệu sang một nhà cung cấp dịch vụ đám mây khác hoặc sử dụng dữ liệu cho các mô hình học máy tuỳ chỉnh. Dữ liệu xuất sang BigQuery bao gồm tất cả dữ liệu hiện có cho thông báo, bất kể loại thông báo hoặc thông báo được gửi bằng API hay Trình soạn thông báo.
Đối với thông báo được gửi đến thiết bị có các phiên bản SDK tối thiểu sau đây của FCM, bạn có thêm lựa chọn bật tính năng xuất dữ liệu gửi thông báo cho ứng dụng của mình:
- Android 20.1.0 trở lên.
- iOS 8.6.0 trở lên
- Firebase Web SDK phiên bản 12.14.0 trở lên
Để bắt đầu, hãy liên kết dự án của bạn với BigQuery bằng bảng điều khiển Firebase:
Chọn một trong các tùy chọn sau:
Chuyển đến phần DevOps & Engagement (DevOps và Mức độ tương tác) > Messaging (Nhắn tin) > Notifications composer (Trình soạn thông báo), sau đó nhấp vào Access BigQuery (Truy cập vào BigQuery) ở cuối trang.
Chuyển đến thẻ
Cài đặt > Tích hợp. Sau đó, trong BigQuery, hãy nhấp vào Liên kết.Trang này hiển thị các lựa chọn xuất FCM cho tất cả ứng dụng đã bật FCM trong dự án.
Làm theo hướng dẫn trên màn hình để bật BigQuery.
Hãy tham khảo bài viết Liên kết Firebase với BigQuery để biết thêm thông tin.
Khi bạn bật tính năng xuất BigQuery cho Cloud Messaging:
Firebase xuất dữ liệu của bạn sang BigQuery. Xin lưu ý rằng quá trình truyền dữ liệu ban đầu để xuất có thể mất đến 48 giờ mới hoàn tất.
- Bạn có thể lên lịch bổ sung dữ liệu theo cách thủ công trong tối đa 30 ngày qua.
Sau khi tạo tập dữ liệu, bạn sẽ không thể thay đổi vị trí này. Tuy nhiên, bạn có thể sao chép tập dữ liệu sang một vị trí khác hoặc di chuyển (tạo lại) tập dữ liệu ở một vị trí khác theo cách thủ công. Để tìm hiểu thêm, hãy xem bài viết Thay đổi vị trí tập dữ liệu.
Firebase thiết lập tính năng đồng bộ hoá dữ liệu thường xuyên từ dự án Firebase của bạn sang BigQuery. Các hoạt động xuất dữ liệu hằng ngày này bắt đầu lúc 4:00 sáng theo giờ Thái Bình Dương và thường hoàn tất trong vòng 24 giờ.
Theo mặc định, tất cả ứng dụng trong dự án của bạn đều được liên kết với BigQuery và mọi ứng dụng mà bạn thêm vào dự án sau này sẽ tự động được liên kết với BigQuery. Bạn có thể quản lý những ứng dụng gửi dữ liệu.
Để tắt tính năng xuất dữ liệu sang BigQuery, hãy huỷ liên kết dự án của bạn trong bảng điều khiển Firebase.
Bật tính năng xuất dữ liệu gửi tin nhắn
iOS+
Các thiết bị iOS có SDK FCM phiên bản 8.6.0 trở lên có thể bật tính năng xuất dữ liệu gửi tin nhắn của ứng dụng. FCM hỗ trợ xuất dữ liệu cho cả thông báo cảnh báo và thông báo trong nền. Tính năng xuất dữ liệu bị tắt theo mặc định ở cấp ứng dụng. Việc bật tính năng này theo phương thức lập trình ở cấp phiên bản ứng dụng cho phép bạn yêu cầu người dùng cuối cấp quyền phân tích dữ liệu gửi tin nhắn của họ (nên dùng). Khi cả hai đều được đặt, giá trị cấp phiên bản ứng dụng sẽ ghi đè giá trị cấp ứng dụng.
Trước khi bật các tuỳ chọn này, trước tiên, bạn phải tạo mối liên kết FCM-BiqQuery cho dự án của mình như mô tả trong phần Xuất dữ liệu BigQuery.
Bật tính năng xuất dữ liệu gửi cho thông báo cảnh báo
Vì chỉ thông báo cảnh báo mới có thể kích hoạt tiện ích ứng dụng dịch vụ thông báo, nên bạn phải thêm một tiện ích dịch vụ thông báo vào ứng dụng và gọi API này bên trong tiện ích dịch vụ để bật tính năng theo dõi thông báo hiển thị. Xem tài liệu của Apple về Sửa đổi nội dung trong thông báo mới gửi
Bạn phải thực hiện lệnh gọi sau đây cho mỗi thông báo nhận được:Swift
// For alert notifications, call the API inside the service extension: class NotificationService: UNNotificationServiceExtension { override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) { Messaging.serviceExtension().exportDeliveryMetrics(withMessageInfo:request.content.userInfo) } }
Objective-C
// For alert notifications, call the API inside the service extension: @implementation NotificationService - (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent *_Nonnull))contentHandler { [[FIRMessaging extensionHelper] exportDeliveryMetricsToBigQueryWithMessageInfo:request.content.userInfo]; } @end
Nếu bạn đang tạo yêu cầu gửi bằng API HTTP phiên bản 1, hãy nhớ chỉ định `mutable-content = 1` trong đối tượng tải trọng.
Bật tính năng xuất dữ liệu gửi cho thông báo ở chế độ nền
Đối với các thông báo ở chế độ nền nhận được khi ứng dụng đang chạy ở nền trước hoặc nền sau, bạn có thể gọi API xuất dữ liệu bên trong trình xử lý thông báo dữ liệu của ứng dụng chính. Bạn phải thực hiện lệnh gọi này cho mỗi thông báo nhận được:
Swift
// For background notifications, call the API inside the // UIApplicationDelegate or NSApplicationDelegate method: func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any]) { Messaging.serviceExtension().exportDeliveryMetricsToBigQuery(withMessageInfo:userInfo) }
Objective-C
// For background notifications, call the API inside the // UIApplicationDelegate or NSApplicationDelegate method: @implementation AppDelegate - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler { [[FIRMessaging extensionHelper] exportDeliveryMetricsToBigQueryWithMessageInfo:userInfo]; } @end
Android
Thiết bị Android có FCM SDK 20.1.0 trở lên có thể bật tính năng xuất dữ liệu gửi tin nhắn của ứng dụng. Tính năng xuất dữ liệu bị tắt theo mặc định ở cấp ứng dụng. Việc bật tính năng này theo phương thức lập trình ở cấp thực thể ứng dụng cho phép bạn yêu cầu người dùng cuối cấp quyền phân tích dữ liệu gửi tin nhắn của họ (nên dùng). Khi cả hai đều được đặt, giá trị cấp thực thể ứng dụng sẽ ghi đè giá trị cấp ứng dụng.
Trước khi bật các tuỳ chọn này, trước tiên, bạn phải tạo đường liên kết FCM-BiqQuery cho dự án của mình như mô tả trong phần Xuất dữ liệu BigQuery.
Bật tính năng xuất dữ liệu phân phối cho các phiên bản ứng dụng
Trong hầu hết các trường hợp, bạn chỉ nên bật tính năng xuất dữ liệu gửi tin nhắn ở cấp thực thể ứng dụng và tắt tính năng này ở cấp ứng dụng.
FirebaseMessaging.getInstance().setDeliveryMetricsExportToBigQuery(true);
Bật tính năng xuất dữ liệu phân phối cho một ứng dụng
Nếu bạn muốn bật tính năng xuất ở cấp ứng dụng, hãy nhớ không gọi phương thức setDeliveryMetricsExportToBigQuery và thêm thuộc tính sau vào đối tượng ứng dụng trong tệp kê khai ứng dụng:
<application> <meta-data android:name="delivery_metrics_exported_to_big_query_enabled" android:value="true" /> </application>
Web
SDK FCM cho Web phiên bản 12.14.0 trở lên cho phép xuất dữ liệu phân phối. Tính năng xuất dữ liệu bị tắt theo mặc định ở cấp ứng dụng. Việc bật tính năng này theo phương thức lập trình ở cấp phiên bản ứng dụng cho phép bạn yêu cầu người dùng cuối cấp quyền phân tích dữ liệu gửi tin nhắn của họ (nên dùng). Khi cả hai đều được đặt, giá trị cấp phiên bản ứng dụng sẽ ghi đè giá trị cấp ứng dụng. Khi người dùng cuối đồng ý hoặc từ chối việc thu thập dữ liệu, ứng dụng sẽ đặt cờ bật hoặc tắt thử nghiệm cho từng phiên bản ứng dụng như sau:
// userConsent holds the decision of the user to give big query export consent. const userConsent = ...; const messaging = getMessagingInSw(app); experimentalSetDeliveryMetricsExportedToBigQueryEnabled(messaging, userConsent);
Dữ liệu nào được xuất sang BigQuery?
Xin lưu ý rằng việc nhắm đến mã thông báo cũ hoặc lượt đăng ký không hoạt động có thể làm tăng một số số liệu thống kê này.
Giản đồ của bảng được xuất là:
| _PARTITIONTIME | DẤU THỜI GIAN | Cột giả này chứa dấu thời gian cho thời điểm bắt đầu ngày (theo giờ UTC) mà dữ liệu được tải. Đối với phân vùng YYYYMMDD, cột giả này chứa giá trị TIMESTAMP('YYYY-MM-DD'). |
| event_timestamp | DẤU THỜI GIAN | Dấu thời gian của sự kiện do máy chủ ghi lại |
| project_number | INTEGER | Số dự án xác định dự án đã gửi thông báo |
| message_id | STRING | Mã nhận dạng thư giúp xác định một thư. Được tạo từ Mã ứng dụng và dấu thời gian, mã nhận dạng thư có thể không phải là mã nhận dạng duy nhất trên toàn cầu trong một số trường hợp. |
| instance_id | STRING | Mã nhận dạng duy nhất của ứng dụng nhận được tin nhắn (nếu có). Đây có thể là mã thực thể hoặc mã cài đặt Firebase. |
| message_type | STRING | Loại thông báo. Có thể là Thông báo hoặc Thông báo dữ liệu. Chủ đề được dùng để xác định thông báo ban đầu cho một chủ đề hoặc chiến dịch gửi; các thông báo tiếp theo là thông báo hoặc thông báo dữ liệu. |
| sdk_platform | STRING | Nền tảng của ứng dụng nhận |
| tên ứng dụng | STRING | Tên gói cho ứng dụng Android hoặc mã nhận dạng gói cho ứng dụng iOS |
| collapse_key | STRING | Khoá thu gọn xác định một nhóm thông báo có thể thu gọn. Khi thiết bị không kết nối, chỉ tin nhắn gần đây nhất có khoá thu gọn nhất định mới được đưa vào hàng đợi để gửi sau |
| tuyển sinh ưu tiên | INTEGER | Mức độ ưu tiên của thông báo. 5 là mức độ ưu tiên "bình thường" và 10 là mức độ ưu tiên "cao". |
| ttl | INTEGER | Tham số này chỉ định thời gian (tính bằng giây) mà thông báo sẽ được lưu giữ trong bộ nhớ FCM nếu thiết bị không có kết nối mạng |
| chủ đề | STRING | Tên của chủ đề mà tin nhắn được gửi đến (nếu có) |
| bulk_id | INTEGER | Mã hàng loạt xác định một nhóm thư có liên quan, chẳng hạn như một thư cụ thể được gửi đến một chủ đề |
| sự kiện | STRING | Loại sự kiện.
Các giá trị có thể sử dụng là:
|
| analytics_label | STRING | Với API HTTP phiên bản 1, bạn có thể đặt nhãn phân tích khi gửi thông báo để đánh dấu thông báo cho mục đích phân tích |
Bạn có thể làm gì với dữ liệu đã xuất?
Các phần sau đây đưa ra ví dụ về những truy vấn mà bạn có thể chạy trong BigQuery đối với dữ liệu FCM đã xuất.
Đếm số tin nhắn đã gửi theo ứng dụng
SELECT app_name, COUNT(1)
FROM `project ID.firebase_messaging.data`
WHERE
_PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD')
AND event = 'MESSAGE_ACCEPTED'
AND message_id != ''
GROUP BY 1;Đếm số thực thể ứng dụng riêng biệt được thông báo nhắm đến
SELECT COUNT(DISTINCT instance_id)
FROM `project ID.firebase_messaging.data`
WHERE
_PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD')
AND event = 'MESSAGE_ACCEPTED';Số lượng tin nhắn thông báo đã gửi
SELECT COUNT(1)
FROM `project ID.firebase_messaging.data`
WHERE
_PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD')
AND event = 'MESSAGE_ACCEPTED'
AND message_type = 'DISPLAY_NOTIFICATION';Số lượng tin nhắn dữ liệu đã gửi
SELECT COUNT(1)
FROM `project ID.firebase_messaging.data`
WHERE
_PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD')
AND event = 'MESSAGE_ACCEPTED'
AND message_type = 'DATA_MESSAGE';Đếm số tin nhắn được gửi đến một chủ đề hoặc chiến dịch
SELECT COUNT(1)
FROM `project ID.firebase_messaging.data`
WHERE
_PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD')
AND event = 'MESSAGE_ACCEPTED'
AND bulk_id = your bulk id AND message_id != '';Để theo dõi các sự kiện cho một thông báo được gửi đến một chủ đề cụ thể, hãy sửa đổi truy vấn này để thay thế AND message_id != '' bằng AND message_id = <your message id>;.
Tính toán thời lượng phân phối cho một chủ đề hoặc chiến dịch nhất định
Thời gian bắt đầu phân phối là thời điểm nhận được yêu cầu ban đầu và thời gian kết thúc là thời điểm tạo thông báo riêng lẻ cuối cùng nhắm đến một thực thể duy nhất.
SELECT TIMESTAMP_DIFF( end_timestamp, start_timestamp, MILLISECOND ) AS fanout_duration_ms, end_timestamp, start_timestamp FROM ( SELECT MAX(event_timestamp) AS end_timestamp FROM `project ID.firebase_messaging.data` WHERE _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD') AND event = 'MESSAGE_ACCEPTED' AND bulk_id = your bulk id ) sent CROSS JOIN ( SELECT event_timestamp AS start_timestamp FROM `project ID.firebase_messaging.data` WHERE _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD') AND event = 'MESSAGE_ACCEPTED' AND bulk_id = your bulk id AND message_type = 'TOPIC' ) initial_message;
Tỷ lệ phần trăm số lượng tin nhắn đã gửi
SELECT messages_sent, messages_delivered, messages_delivered / messages_sent * 100 AS percent_delivered FROM ( SELECT COUNT(DISTINCT CONCAT(message_id, instance_id)) AS messages_sent FROM `project ID.firebase_messaging.data` WHERE _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD') AND event = 'MESSAGE_ACCEPTED' ) sent CROSS JOIN ( SELECT COUNT(DISTINCT CONCAT(message_id, instance_id)) AS messages_delivered FROM `project ID.firebase_messaging.data` WHERE _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD') AND (event = 'MESSAGE_DELIVERED' AND message_id IN ( SELECT message_id FROM `project ID.firebase_messaging.data` WHERE _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD') AND event = 'MESSAGE_ACCEPTED' GROUP BY 1 ) ) delivered;
Theo dõi tất cả sự kiện cho một mã nhận dạng thông báo và mã nhận dạng thực thể nhất định
SELECT *
FROM `project ID.firebase_messaging.data`
WHERE
_PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD')
AND message_id = 'your message id'
AND instance_id = 'your instance id'
ORDER BY event_timestamp;Tính toán độ trễ cho một mã nhận dạng thông báo và mã nhận dạng thực thể nhất định
SELECT TIMESTAMP_DIFF( MAX(delivered_time), MIN(accepted_time), MILLISECOND ) AS latency_ms FROM ( SELECT event_timestamp AS accepted_time FROM `project ID.firebase_messaging.data` WHERE _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD') AND message_id = 'your message id' AND instance_id = 'your instance id' AND event = 'MESSAGE_ACCEPTED' ) sent CROSS JOIN ( SELECT event_timestamp AS delivered_time FROM `project ID.firebase_messaging.data` WHERE _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD') AND message_id = 'your message id' AND instance_id = 'your instance id' AND (event = 'MESSAGE_DELIVERED' ) delivered;