Not able to send an iOS CriticalAlert to Firebase Cloud Messaging - ios

I have an in house application where I have the criticalAlert option setup within my application. I have confirmed that when I send the following with the pushy application, I am able to get the Critical Alert to work on the iOS application.
The issue is our internal server currently only sends the notifications to the Firebase Cloud Messaging, and I'm not able to configure the raw push payload to play the critical alert on the device.
Here is the example that Apple gave on how the push should look to APNS:
Here is what I send using the pushy app that works on the application:
{
"aps" : {
"content_available": true,
"priority": "high",
"alert" : "Your message Here",
"badge" : 1,
"sound": {
"critical": 1,
"name": "alert.wav",
"volume": 1.0
},
"data": {
"volume": 7,
"time_to_live": 900,
"id": 3618,
"type": "engagement",
"overrideMessage": "Testing oncall for iOS",
"case": "Test Case",
"repeatNumber": 3,
"customer": "Google"
}
}
}
Here is the current payload that we send to FCM and it works with the custom sound, but we really want the critical alert to be working since the push is for an on-call engagement:
{
"to": "firebaseToken",
"content_available": true,
"priority": "high",
"isCritical": "true",
"notification": {
"title": "Title in notification",
"body": "Body in notification",
"sound": "alert.wav",
"badge": "1",
"subtitle": "subtitle in notification"
},
"data": {
"volume": 7,
"time_to_live": 900,
"id": 3618,
"type": "engagement",
"overrideMessage": "Testing oncall for iOS",
"case": "Test Case",
"repeatNumber": 3,
"customer": "Google"
}
}
I have tried a large number of combinations on what to send to FCM but with no luck:
{
"to": "firebaseToken",
"apns": {
"headers": {
"apns-priority": "10"
},
"payload": {
"aps" : {
"sound": {
"critical": 1,
"name": "alert.wav",
"volume": 0.5
},
and
{
"aps" : {
"to": "firebaseToken",
"content_available": true,
"priority": "high",
"alert" : "Your message Here",
"badge" : 1,
"sound": {
"critical": 1,
"name": "alert.wav",
"volume": 0.5
},
and
{
"to": "firebaseToken",
"aps" : {
"sound" : {
"critical": 1,
"name": "alert.wav",
"volume": 1.0
}
},
"notification": {
"badge": "1",
and
{
"to": "firebaseToken",
"isCritical": "true",
"content_available": true,
"notification": {
"badge": "1",
"sound" : {
"critical": 1,
"name": "alert.wav",
"volume": 1.0
},
None of them have allowed the sound dictionary to be passed on to FCM.
I have also the the answer here but it doesn't solve my problem. as I require iOS to know that this push notification is critical and have the OS handle it and not my application.

Before I give the answer to your specific question, I'd like to recommend that you consider using the Admin SDK instead of the REST API if possible. The SDK is available in Node.js, Java, python, go, and C#. If your server code is written in any of those languages, this is a much simpler way to handle sending messages with FCM. The SDK handles retries and other scenarios you would otherwise have to implement into your code.
As for your question, it's noted in the guides that platform-specific fields only work with the FCM v1 endpoint. To use FCM, your endpoint will look like this:
https://fcm.googleapis.com/v1/projects/[your-project-id]/messages:send
You can see an example of this in the guides. Select REST from the snippet tab to see the example.
Note that the way you authorize sends is different with V1. You can find out more in the guide. If you have trouble with the auth part, I also wrote a blog post about it since it comes up pretty regularly.

Related

collapse_key, apns-collapse-id not working on iOS in Push messages via Firebase

I trying to update sended push, using collapse mechanism.
I read many docs and info about it, but failed to achieve significant results.
It is work only for Android. I need in iOS too.
What i send to firebase:
{
"registration_ids": [
"CE2BSR7TwxPY . . . gbWKvBu3SFWh9dHECOIQT6v"
],
"data": {
"pushId": null,
"target": "screen",
"value": "main",
},
"notification": {
"title": "Some title..6",
"body": "2 push apns-collapse-id. 30 attempt",
"sound": "default",
"mutable-content": 1,
"badge": 0,
"tag": "test"
},
"apns": {
"headers": {
"apns-collapse-id": "test"
}
},
"collapse_key": "test"
}
I send 2 pushes with the same collapse_key
And result:
enter image description here
This is iOS 12+. On another iPhones is the same result.
where did i go wrong?
Collapse this even possible on iOS?

Silent push notification has a sound in iOS with FCM, How to fix?

I've implemented Silent push notification, but it has a sound like the normal ones. Help me to correctly implement this.
Here's the payload that we're sending from Backend to FCM:
{
"notification": {
"messageId": "24d0f68a24d"
},
"content_available": true,
"data": {
"requestId": "231DDD",
"messageId": "f68a24d",
"event": "REMOVE_NOTIFICATION",
"message": ""
},
"apns": {
"headers": {
"apns-push-type": "background",
"apns-priority": 5
}
},
"to": "FCM_Token",
"priority": "high"
}
To make this silent, you have to remove following part.
"notification": {
"messageId": "24d0f68a24d"
},

Firebase notification not sent IOS devices

I am trying to send Firebase notifications to multiple devices from an API written in PHP. It is sending notifications to android devices without any issue but this is not the case for ios devices.
Here is the payload for android:
{
"registration_ids": [
"d-Ao4YZ1V_E:APA91bFzT1Es9VhDX4OC_2zOV4RWmDXQ-PP24Za-D-uXAwyWdrd2W3bQkHAc3M1uwYKXTDiWix5teBwfTHbRmHcMbz5q39OCNsGgtgH_n0wxyo0ceL2ZfA8y7o3D0cXDLv2iVMjhmHAA5sVJUOBhfXf-mbzw7E2hog",
"eRetdkDVHvY:APA91bEzUKrnK5cHskxOGTlHZtxYjXsxPyRlj8XRNVOcoX-8aCfY7z0cU0yFVGplBiONqSEV8wtslmW6sDXGodiirS0oKDPUzAaAT91Su5Yrnzs1XHHlfJA6rQurp941rC0hKJ8vd_e9JcfjihlGP36Cu3Tpb3hELw"
],
"data": {
"title": "Producer",
"text": "Setting Check",
"notification": {
"NotificationID": "5864",
"NotificationType": "",
"Title": "Producer",
"Text": "Setting Check"
},
"sound": "true"
},
"content_available": true,
"priority": "high"
}
Here is my payload for ios devices:
{
"registration_ids": [
"dsMZdthHp6E:APA91bH8UcvSiEjlk9b6QRwrWiCWz65k5i-CxKLB3LGqHdz7FG7gPWHRwnNBtsvdWZLg_9Fx8lRFOKyf17XKEm_mdbRAGzni6wbsogDdiG_ARQxCAm8qVD0iaQKvB_tosWcukLLVu3qrbZxc3BjmSvGjeNJaBAcHkQ",
"eXhFfdy9oO4:APA91bGp3bMu-ps6euvBTDW5HshAIgdswFUgZ6p7EIFeW7abHMz2uIwmzzZuqz0bEwEAGi2fGLb0JJ4bhKhoGAs0EH4yqd0WDVkVH9Je6b7q9WFzBDDF__jIGoF1ShdM8qoqnVbeJmOSf3bS7s89xKmUh_m2x0ecQg" ],
"notification": {
"title": "Custom Notification",
"text": "This custom notification is sent through Vendors area. Let's see if it works?",
"sound": "default"
},
"data": {
"notification": {
"Title": "Producer",
"Text": "Setting Check"
},
"title": "Producer",
"text": "Setting Check"
},
"content_available": true,
"priority": "high"
}
The issue is with payload but I can't seem to locate the issue.I am new to fire base. Please help me sorting this out.

Push Notifications not delivered quickblox

I am trying to send push notifications for offline users, but it is not sent to the device
Environment details:
ios chat app, I am using latest version from cocoapods
Expected behavior: It should show push notifications on the device
Actual behavior
I have uploaded the certificate,
it is showing valid
I have checked my device udid in subscription, it is showing my device udid
The sent notification also shows in queue on quickblox here is the log of sent push, it shows NULL in delivered and there is no error
{
"notification": {
"id": 15460780,
"badge": 45,
"device_token": "0780db28ac60e37390e067f5b1d88688d804f594152827b1b28f86e670669530",
"sound": "default",
"alert": "Test User: Hello",
"data": {
"dialog_id": "5b3b4b9ba0eb474bbc0244eb",
"user_id": 53886466,
"message_id": "5b3b6a6b2d3084b447b7ad3d",
"badge": 45,
"headers": {
"apns-topic": "com.company.app"
},
"__rpush_content_available__": true,
"__rpush_mutable_content__": true
},
"expiry": 86400,
"delivered": false,
"delivered_at": null,
"failed": false,
"failed_at": null,
"fail_after": "2018-07-03T13:22:05+00:00",
"retries": 118,
"error_code": null,
"error_description": null,
"deliver_after": "2018-07-03T12:31:57+00:00",
"alert_is_json": null,
"app_id": 23880,
"collapse_key": null,
"delay_while_idle": null,
"registration_ids": null,
"uri": null,
"priority": null,
"url_args": null,
"category": null,
"content_available": false,
"mutable_content": false,
"notification": null,
"type": "Rpush::Client::Redis::Apns::Notification",
"event_id": 24743581,
"event_date": "2018-07-03T12:22:05+00:00"
},
"log": [
{
"device_token": "0780db28ac60e37390e067f5b1d88688d804f594152827b1b28f86e670669530",
"delivered_at": null,
"failed_at": null,
"error_code": null,
"error_description": null
}
]
}
Also i have tried sending push through third party (pushtry.com) with same certificates and it is sending push but with quickblox, it is not showing any push notification
Looks like it is Quickblox server-side issue. Probably they haven't adjusted the server in appliance with recent changes in APNS. I asked their support, but they do not answer.
json push notifciation for apple payload should be in below format
{
"aps": {
"alert": "Hello World",
"sound": "default"
},
"Person": {
"Address": "this is a test address",
"Name": "First Name",
"Number": "023232323233"
}
}

FCM rich push notification payload for iOS

I am using FCM for my project. It's have rich push notification for a type. I tried to modified most of possible ways to get push from FCM. I got obly ordinary push from FCM, not with image.
I am also check with APNS same coding using push try. I got what expected design for push notification.
Here my APNS payload
{
"aps": {
"alert": "Enter your message",
"badge": 1,
"sound": "default",
"content-available": 1,
"mutable-content": 1
},
"mediaUrl": "https://upload.wikimedia.org/wikipedia/commons/thumb/2/2a/FloorGoban.JPG/1024px-FloorGoban.JPG"
}
Here FCM payload
{
"to": "dWB537Nz1GA:APA91bHIjJ5....",
"data":
{
"message": "Offer!",
"mediaUrl": "https://upload.wikimedia.org/wikipedia/commons/thumb/2/2a/FloorGoban.JPG/1024px-FloorGoban.JPG"
},
"notification":
{
"body": "Enter your message",
"sound": "default",
"content-available": 1,
"mutable-content": 1
}
}
Also I am need category more details about payload in FCM
Am I missing any setting in fire-base console or is that from payload.
The mutable-content and content-available in your FCM payload is incorrect. It should be formatted as mutable_content and content_available. Both are boolean and must also be outside the notification parameter. Like so:
{
"to": "dWB537Nz1GA:APA91bHIjJ5....",
"content_available": true,
"mutable_content": true,
"data":
{
"message": "Offer!",
"mediaUrl": "https://upload.wikimedia.org/wikipedia/commons/thumb/2/2a/FloorGoban.JPG/1024px-FloorGoban.JPG"
},
"notification":
{
"body": "Enter your message",
"sound": "default"
}
}
For the counterpart of category in FCM, you should use click_action:
The action associated with a user click on the notification.
Corresponds to category in the APNs payload.
This worked for me. The accepted answer seems to have some unnecessary information.
{
"to" : "devicekey OR /topics/sometopic",
"mutable_content": true,
"data": {
"mymediavideo": "https://myserver.com/myvideo.mp4"
},
"notification": {
"title": "my title",
"subtitle": "my subtitle",
"body": "some body"
}
}

Resources