I am trying to receive push notifications while in background, but it doesn't seem to be working. Here is my AppDelegate code:
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) {
GCMService.sharedInstance().appDidReceiveMessage(userInfo);
var notification = UILocalNotification()
notification.alertBody = "Nova poruka od korisnika "+(userInfo["gcm.notification.username"] as! String) // text that will be displayed in the notification
notification.fireDate=NSDate(timeIntervalSinceNow: 0)
notification.applicationIconBadgeNumber=0
notification.soundName = UILocalNotificationDefaultSoundName // play default sound
notification.userInfo=userInfo // assign a unique identifier to the notification so that we can retrieve it later
notification.timeZone=NSTimeZone.localTimeZone()
UIApplication.sharedApplication().scheduleLocalNotification(notification)
completionHandler(UIBackgroundFetchResult.NoData)
}
I receive a callback to this function when I am in the foreground, but as soon as I tap the home button, the notifications are not received (I am guessing the VPN portion fails).
This is the PHP code that sends the notifications:
(I know it's horrible code but I am debugging atm :P)
foreach ($iosIDs as $id) {
$fields = array("to" => $id, "notification" => $msg, "priority" => "high", "content_available" => true);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://gcm-http.googleapis.com/gcm/send');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));
$result = curl_exec($ch);
echo $result;
curl_close($ch);
}
I have read at least 10 of these questions, but can't seem to figure it out. Many thanks.