Ich arbeite an Hintergrund-Benachrichtigungen zu arbeiten auf IOS mit GCM - Nicht-Hintergrund-Benachrichtigungen funktionieren bereits. Hier sind meine Schritte Hintergrund-Benachrichtigungen zu integrieren:IOS GCM Push-Benachrichtigungen nicht im Hintergrund mit PHP-Absender und Swift empfangen
- Aktivieren Sie die Remote-Benachrichtigungen Tag in UIBackgroundmodes
- Fügen Sie den Inhalt verfügbare Schlüssel zu meiner Benachrichtigung Nutzlast.
- Schreiben Sie die Anwendung: didRecieveRemoteNotification: fetchCompletionHandler: in meinem Delegaten. Hier
ist der Code für die Delegatfunktion:
func application(application: UIApplication,
didReceiveRemoteNotification userInfo: [NSObject : AnyObject],
fetchCompletionHandler handler: (UIBackgroundFetchResult) -> Void) {
println("Notification received2: \(userInfo)")
GCMService.sharedInstance().appDidReceiveMessage(userInfo);
NSNotificationCenter.defaultCenter().postNotificationName(messageKey, object: nil,
userInfo: userInfo)
handler(UIBackgroundFetchResult.NoData);
}
Dies ist der Code für den On-Server PHP-Skript:
<?php
$regId = $_GET["regId"];
$message = $_GET["message"];
$data = array('price' => $message, 'sound' => 'default', 'body' => 'helloworld', 'title' => 'default', 'badge' => 12, 'content-available' => 1);
$ids = array($regId);
sendGoogleCloudMessage( $data, $ids);
function sendGoogleCloudMessage($data, $ids)
{
$apiKey = THE-API-KEY-THAT-I-AM-USING;
$url = 'https://android.googleapis.com/gcm/send';
$post = array(
'registration_ids' => $ids,
'data' => $data,
'content-available' => 1,
);
$headers = array(
'Authorization: key=' . $apiKey,
'Content-Type: application/json'
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($post));
$result = curl_exec($ch);
if (curl_errno($ch))
{
echo 'GCM error: ' . curl_error($ch);
}
curl_close($ch);
echo $result;
}
?>
habe ich versucht, den Inhalt verfügbare Flagge Senden sowohl durch das innere "Daten" -Array als auch durch das äußere "Post" -Array, das ich durch Hinzufügen zu beiden angegeben habe.
Die Nachricht wird nicht von der fetchCompletionHandler-Funktion empfangen, sondern wartet, bis die App wieder aktiv ist und von der normalen Anwendung empfangen wird: didRecieveRemoteNotification-Funktion. Was könnte der Grund sein, dass meine Benachrichtigung nicht über die Hintergrundfunktionalität empfangen wurde?
Vielen Dank! Dies war definitiv ein Problem - jedoch, wenn ich das richtige Tag hinzufüge, ruft jetzt keine der Empfängerfunktionen auf. Irgendeine Idee warum? –
@JohnSzymanski sollten Sie auch ein 'fetch'-Tag zu UIBackgroundModes hinzufügen. –
scheint nichts zu ändern. . . –