0

Hallo, ich habe selbst gehosteten Parse-Server auf Digital Ocean, es sendet Benachrichtigungen auf iOS, aber nicht auf Android. meine index.js Datei sieht wie folgt aus:Parse-Server (selbst gehostet) nicht senden Android-Benachrichtigung mit FCM

var api = new ParseServer({ 
    databaseURI: databaseUri || 'mongodb://1.1.1.1"1/app_name', 
    cloud: process.env.CLOUD_CODE_MAIN || __dirname + '/cloud/main.js', 
    appId: 'abc', 
    masterKey: 'def', 
    serverURL: 'http://1.1.1.1:1337/parse' || 'http://localhost:1337/parse', 
    verbose: true, 
    push: { 
    android:{ 
     senderId: 'my FCM id', 
     apiKey: 'my FCM key' 
    }, 
    ios: { 
     pfx: '1', 
     bundleId: '2', 
     production: true 
    } 
    } 
}); 

, wenn ich einen Stoß aus dem Parse-Armaturenbrett senden (auch gehostete Selbst-), ​​das ist die Antwort, die ich mit ausführlicher erhalten: true:

"results": [ 
    { 
    "objectId": "bNtZqwY8", 
    "pushTime": "2017-06-13T10:49:06.095Z", 
    "query": "{\"UniqueId\":\"c49de788ce\",\"deviceType\":{\"$in\":[\"android\"]}}", 
    "payload": "{\"alert\":\"Thank you for using my app.\"}", 
    "source": "rest", 
    "status": "succeeded", 
    "numSent": 0, 
    "pushHash": "266b6b637152b36040830", 
    "createdAt": "2017-06-13T10:49:06.095Z", 
    "updatedAt": "2017-06-13T10:49:06.214Z", 
    "numFailed": 15, 
    "failedPerType": { 
     "android": 15 
    }, 
    "ACL": {} 
    }, 
    { 
    "objectId": "rsYinvGG", 
    "pushTime": "2017-06-13T10:48:42.449Z", 
    "query": "{\"UniqueId\":\"7A0A-9AEA-5870FDEC42A3\"}", 
    "payload": "{\"alert\":\"one\",\"link_key\":1,\"sound\":\"default\"}", 
    "source": "rest", 
    "status": "succeeded", 
    "numSent": 2, 
    "pushHash": "246431e019c0357dcb180c7", 
    "createdAt": "2017-06-13T10:48:42.449Z", 
    "updatedAt": "2017-06-13T10:48:43.282Z", 
    "numFailed": 0, 
    "sentPerType": { 
     "ios": 2 
    }, 
    "ACL": {} 
    }, 

Wenn Ich schicke Push android von FCM, es funktioniert. Ich bin wirklich hier mit Androiden Push verloren, kann jemand bitte zeigen Sie mir in die richtige Richtung. Hier

ist der Ausgang aus dem Protokoll:

ESC[36mverboseESC[39m: REQUEST for [PUT] /parse/classes/_Installation /zKIp8LLOWr: { 
                       "GCMSenderId":"diMV6Hm3j07dbqVPEsZRgqNzDo3YvA5zNdUmtO6Q4ka5ijRyyIRHiWCWOBVBDA22OIls-4bO06kxDPuOKFwJUZuMD3Xt41WuKUoOJwBlW7cKdqv9llj7Me0uiWFLWDwS7V", 
    "UniqueId": "a59020fff8ca30d00", 
    "appVersion": "2.3.3", 
    "objectId": "zKIp8LLOWr" 
} method=PUT, url=/parse/classes/_Installation/zKIp8LLOWr, x-parse- app-display-version=2.3.3, x-parse-installation-id=29918e2f-8bbd-4ab7-975f-f854e1f43689, user-agent=Parse Android SDK 1.13.1 (com.mrfizzy/18) API Level 21, connection=Keep-Alive, accept-encoding=gzip, x-parse-os-version=5.0, x-parse-app-build-version=18, content-type=application/json, x-parse-client-key=, x-parse-client-version=a1.13.1, host=46.101.199.219:1337, content-length=245, x-parse-application-id=JHyfl9YhXCQ24r6J8ohdVlHLt1hfWhB4MF2jQAQn, GCMSenderId=diMV6HmLH3I:APA91bFQS4Sq9G5wlej07dbqVPEsZRgqNzDo3YvA5zNdUmtO6Q4ka5ijRyyIRHiWCWOBVBDA22OIls-4bO06kxDPuOKFwJUZuMD3Xt41WuKUoOJwBlW7cKdqv9llj7Me0uiWFLWDwS7V, UniqueId=a59020a48ca30d00, appVersion=2.3.3, objectId=zKIp8LLOWr 
ESC[31merrorESC[39m: Error generating response. ParseError { code: 101, message: 'Object not found for update.' } code=101, message=Object not found for update. 
[object Object] 
+0

Führen Sie lokal, damit Sie sehen können, was die Fehler speziell sind. Push-Vorgänge können aus einer Vielzahl von Gründen fehlschlagen, so dass es schwer ist, ohne den Fehler zu sagen. –

+0

aktualisierte Frage mit Protokollen ausgegeben. –

Antwort

0

Es scheint, Sie sind nicht die Absender-ID richtig zuweisen. Sie übergeben eine Objekt-ID, die nicht korrekt zu sein scheint. Stellen Sie sicher, dass Sie ParseInstallation.getCurrentInstallation() verwenden, wenn Sie Ihre GCM-Sender-ID festlegen, anstatt zu versuchen, die Installation auf andere Weise zu erhalten.

http://parseplatform.org/Parse-SDK-Android/api/com/parse/ParseInstallation.html#getCurrentInstallation()

+0

ich benutze nicht GCM, ich benutze FCM senderId und apiKey in meiner index.js Datei wie oben auf der Frage gezeigt. Ich sehe diese Zeile 'ParseInstallation.getCurrentInstallation()' nirgendwo in dieser Datei. Wird das in der App? Ich denke App ist in Ordnung, wie Benachrichtigungen gehen, wenn sie vom FCM-Dashboard gesendet werden –

+0

Lesen Sie Ihre Protokollausgabe. Der Fehler liegt darin, dass kein Objekt mit der richtigen ObjectId gefunden wird, die Sie übergeben, und Sie legen außerdem die GCMSenderId in der PUT-Anforderung fest. Sie versuchen, ein Objekt zu speichern, das nicht existiert. –

+0

Sie versuchen _Installation Objekt mit der ID zKIp8LLOWr zu speichern (was nicht zu existieren scheint, ist, dass ein Benutzer die objectId vielleicht?), Und du bist vorbei GCMSenderId: diMV6Hm3j07dbqVPEsZRgqNzDo3YvA5zNdUmtO6Q4ka5ijRyyIRHiWCWOBVBDA22OIls-4bO06kxDPuOKFwJUZuMD3Xt41WuKUoOJwBlW7cKdqv9llj7Me0uiWFLWDwS7V. Die Nachricht in dem Fehler sagt "Object not found", was bedeutet, dass kein _Installationsobjekt objectId zKIp8LLOWr –

Verwandte Themen