How to send silent push notification to iOS application over GCM?
Silent push is notification that will not appear in notification center, but awake application to do some action in background. Google introduce new features in new GCM with possibility to send push messages to Android, Chrome and iOS.
Any idea, how to do this?
Use the content_available
(not content-available
) attribute like this:
curl -X POST --header "Content-Type:application/json" --header "Authorization:key=AIzaXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" "https://android.googleapis.com/gcm/send" --data-ascii '{"data":{"xxx":"yyy"},"content_available":true,"to":"XXXXXXXXXX:YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY-ZZZZZZZZZZZZZZZZZZZZ"}'
From your server, you'll need to add the content-available
property with a value of 1 to your aps
dictionary.
You'll need to provide support for these silent notifications by adding remote-notification
to UIBackgroundModes
in your Info.plist file. More details here.
I'm using the node-gcm npm library and the following payload works for me for iOS (for Android I'm sending a slightly different payload):
{ dryRun: false,
data:
{ customKey1: 'CustomValue1',
customKey2: 'CustomValue2',
content_available: '1',
priority: 'high' },
notification:
{ title: 'My Title',
icon: 'ic_launcher',
body: 'My Body',
sound: 'default',
badge: '2' } }
Of course you'll need to ensure that your app can handle the inbound notification.
来源:https://stackoverflow.com/questions/30616302/how-to-send-silent-push-to-ios-via-google-cloud-messaging