0

您好我有自己的数字海洋解析服务器,它发送通知在iOS上,但不是在Android上。我index.js文件看起来像这样:解析服务器(自己托管)不发送android通知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 
    } 
    } 
}); 

当我发送从剖析仪表板(也自托管)一推,这是我与冗长得到的回应:真:

"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": {} 
    }, 

当我从FCM发送Android的推送,它的工作原理。我真的失去了这里与android推,有人可以请指点我在正确的方向。

下面是从日志输出:

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

本地运行以便您可以看到具体的错误。由于多种原因,推送可能会失败,所以很难说没有错误。 –

+0

更新了日志输出的问题。 –

回答

0

看来你没有正确地分配发件人ID。你正在传递一个看起来不正确的objectId。确保在设置GCM发件人ID时使用ParseInstallation.getCurrentInstallation(),而不是尝试通过任何其他方式获取安装。

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

+0

即时通讯不使用GCM,即时通讯在我的index.js文件中使用FCM senderId和apiKey,如问题顶部所示。我没有看到这行'ParseInstallation.getCurrentInstallation()'在该文件中的任何地方。这会在应用程序?我认为应用程序没问题,因为从FCM仪表板发送时通知确实如此 –

+0

阅读您的日志输出。该错误是因为没有找到具有正在传递的ObjectId的对象,并且您还在PUT请求中设置GCMSenderId。您正试图保存一个不存在的对象。 –

+0

你试图保存ID zKIp8LLOWr _Installation对象(这似乎并不存在,是用户的ObjectID吧?),和你传递GCMSenderId:diMV6Hm3j07dbqVPEsZRgqNzDo3YvA5zNdUmtO6Q4ka5ijRyyIRHiWCWOBVBDA22OIls-4bO06kxDPuOKFwJUZuMD3Xt41WuKUoOJwBlW7cKdqv9llj7Me0uiWFLWDwS7V。错误中的消息显示“找不到对象”,这意味着没有_Installation对象具有objectId zKIp8LLOWr –

相关问题