How to hide push notification in ios? - ios

How to hide push notification in ios? I need to convert push notification to local notification. what should be the structure of payload for this?

https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/ApplePushService.html
You can refer the above link to Know about the payload of push notification.
For not showing push notification you need to pass the payload without alert. If you want a silent notification set Content-available as 1. It'll help.
Eg:
{"aps" : {
"content-available" : 1
},
"YourData":""
}

structure of payload for hide the push notification is..
This Show notification
{
"aps" : {
"alert" : "Message received from Bob"
"badge" : 5,
},
"acme1" : "bar",
"acme2" : [ "bang", "whiz" ]
}
This one hide your notification
{
"aps" : {
"badge" : 5,
},
"acme1" : "bar",
"acme2" : [ "bang", "whiz" ]
}

Related

Unable to send silent push notifications to iOS using FCM

I'm attempting to send a silent data notification to an iOS device using node.js module firebase-admin 7.0.0 and the following code:
// load lib
var firebase = require('firebase-admin');
// add API keys
firebase.initializeApp({
credential: firebase.credential.cert('./certs/firebase-private-key.json')
});
// device token send back from device
var token = '00397db1aa2f1fa625f71deef0c8e8ef0d4427cf60a13c0fb4bd290dcec41f4b';
// data message to send (contains no notification details so should be silent)
var message = {
data: {
key1: 'hello',
key2: 'world'
}
};
var options = {
priority: 'high',
timeToLive: 60 * 60 * 24,
contentAvailable: true,
mutableContent: true
};
// send the message
firebase.messaging().sendToDevice(token, message, options).then(function (res) {
// it worked!
console.log(res);
})
.catch(function (err) {
// it failed :(
console.log(err);
});
I get a response saying the message was sent, but it never arrives on the device. Whereas if I send the message using NWPusher it works fine (example payload below):
{"aps":{ "content-available": 1,"badge":0, "hello": "there" }}
Any ideas?
FYI: I have also opened a ticket on GitHub
Your code looks correct . You may try multiple combination of true and false in mutable content and content available.
And you may also try not sending mutableContent fields. But as far as I remember both should be true.
Other way to debug is to check what json is going out from nodejs. Youcan try same
payload in NWPusher or PostMan. This will give you some clue.
I have tried out the following payload in postman, for me it's working fine
{"mutable_content":true,"content_available" : true,"priority":"high","registration_ids":["d3-fa7XDQQ4:APA91bEKXbT3HAv6ko9RukcxaB4QBr8zOIT06CBpj9o0Sl6TxsMpTnAMQ86t14foIcuQuDUyzMApbvDORELYyD0WOX3BcfP7ZNtWx9uY0JGm2B7cmdlPoOFs68fe6rz3Q7tq_8Ib7Y4H"]}
For silent notifications you need to make sure couple of things:
1- Your payload doesn't have alert key in your payload
2- Have content-available" : 1 in your payload
3- Background mode for Push Notification is enabled ( select your target > capabilities > Background Modes > Remote Notification)
sample payload:
{
"aps" : {
"content-available" : 1
},
"acme1" : "bar",
"acme2" : 42
}
for more information checkout apple's reference : Pushing Updates to Your App Silently
For anyone still having this issue, as Gokul mentioned the code is just fine
Just make sure you are following the steps in the Apple docs
Specially make sure that you are adding the correct callback to your AppDelegate:
application(_:didReceiveRemoteNotification:fetchCompletionHandler:)
Note that it is not the same as the one used to handle regular notifications application(_:didReceiveRemoteNotification:)
Also make sure that Remote Notifications is turned on under Background modes in the Project Settings as described here:
This is PHP version for sent silent for ios. Please add 'content-available' => 1 for silent notificication
$body = array(
'content-available' => 1,
'sound' => ''
);
{
"aps" : {
"alert" : "Notification with custom payload!",
"badge" : 1,
"content-available" : 1
},
"data" :{
"title" : "Game Request",
"body" : "Bob wants to play poker",
"action-loc-key" : "PLAY"
}
}

Custom push notifications not receiving using firebase

I have implemented an app with custom notification using firebase. I am able to receive custom notifications using device token from the pusher, pushtry, But if I send the same payload using FCM ID from postman then not receiving the notification.
I have tried other payloads also but just receiving the default notification and sometimes only sound for some payloads, but not getting custom one.
I am using the payloads like this for pusher and pushtry:
(received proper notifications)
{
"aps":{
"alert":"dasdas",
"badge":1,
"sound":"default",
"category":"CustomSamplePush",
"mutable-content":"1"
},
"urlImageString":"https://res.cloudinary.com/demo/image/upload/sample.jpg"
}
the same payload not working for firebase
Is there any proper payload for that and is there any need to do changes from my ios code?
thanks in advance.
For custom notification using firebase the payload should be like this.
{
"to": "FCM ID",
"content_available":true,
"mutable_content": true,
"data": {
"message": "Offer!",
"urlImageString":"https://res.cloudinary.com/demo/image/upload/sample.jpg",
},
"notification": {
"body": "Update Your App New Version is available",
"sound": "default",
"click_action": "Your app category from notification plist"
}
}
Your payload should be like:
{
"to": "APA91bHun4MxP5egoKMwt2KZFBaFUH-1RYqx...",
"notification": {
"body": "dasdas",
"title": "Portugal vs. Denmark",
"icon": "myicon"
},
"data": {
"Nick": "Mario",
"Room": "PortugalVSDenmark"
}
}
Having all data under aps does not trigger any notification in iOS even though Firebase returns a successful request because the forwarded APNS payload is not correct. Besides the proper way should be to follow the GCM or FCM payload recommendations, which is to use both notification for the notification message and data for custom key/value pairs.
When FCM Send data to APNS it convert it into APNs payload. It set values of notification in aps tag i.e.
{
"aps" : {
"alert" : {
"title" : "Portugal vs. Denmark",
"body" : "Portugal vs. Denmark",
}
},
"Nick" : "Mario",
"Room" : "PortugalVSDenmark"
}

How to handle loc-key in remote Push Notification payload

I've implemented handling of remote push notifications in didReceiveRemoteNotification method in AppDelegate.swift and it works except for payloads of following format.
{
"aps" : {
"alert" : {
"loc-key" : "GAME_PLAY_REQUEST_FORMAT",
"loc-args" : [ "Jenna", "This is Message"]
},
"sound" : "chime.aiff"
},
"acme" : "foo"
}
I want to format and show the content of loc-args on the notification alert. I want to extract "Jenna" and "This is Message" from loc-args and display on alert as below in body and title of alert:
New Message from Jenna
This is message
I've been reading tuts but I can't figure out what exactly I've to do to get it done. I want to keep it simple. Any help?
Tx
Solution was Localizable.strings

iOS Grouping Firebase Remote Push Notification

We are using Firebase for sending remote push notifications, we are in need to grouping received notification like WhatsApp (Ex: 25 new messages received). I have tried it by adding APNs in JSON, but it's not working. Here is my tried code:
{
"to" : "**FCM TOKEN**",
"priority" : "high",
"notification" :
{
"title" : "You have a new message",
"body" : "Test",
"badge" : 1
},
"apns":
{
"headers":
{
"apns-collapse-id":"***APNs ID***"
}
}
}
I'm receiving notification but not able to grouping it.apns-collapse-id which was taken from developer.apple.com.

FCM Push notification

I am working on FCM, but only below method is getting called.
- (void)applicationReceivedRemoteMessage:(FIRMessagingRemoteMessage *)remoteMessage {
// Print full message
NSLog(#"This is the message whole structure%#", remoteMessage.appData);
NSLocalizedString(#"This is remote message%#", remoteMessage);
NSString * msg = [remoteMessage.appData objectForKey:#"message"];
NSLog(#"msg %#",msg);
[self alertStatus:msg:#"Alert"];
}
And I got full message from server from this above method only. But none of the push notification methods are getting called.I am not receiving any push notification, so I am unable to receive notification in background.
Ask your backend server developer to add notification key in your payload like this
{
"to" : " ...",
"notification" : {
"body" : "great match!",
"title" : "Portugal vs. Denmark",
"icon" : "myicon"
},
"data" : {
"Nick" : "Mario",
"Room" : "PortugalVSDenmark"
}
}
If you want to show notifications for user you should use notification key in your payload.
Reference 1
Reference 2

Resources