解析服务器(自托管)未使用FCM发送android通知

解析服务器(自托管)未使用FCM发送android通知,android,parse-platform,push-notification,parse-server,android-push-notification,Android,Parse Platform,Push Notification,Parse Server,Android Push Notification,嗨,我在digital ocean上有一个自托管解析服务器,它在iOS上发送通知,但在android上没有。我的index.js文件如下所示: 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',

嗨,我在digital ocean上有一个自托管解析服务器,它在iOS上发送通知,但在android上没有。我的index.js文件如下所示:

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
    }
  }
});
当我从parse dashboard(也是自托管)发送推送时,我得到的响应是verbose: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时,它就工作了。我真的迷路了,有人能告诉我正确的方向吗

以下是日志的输出:

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]

您似乎没有正确分配发件人Id。您正在传递一个似乎不正确的objectId。确保在设置GCM发送者id时使用
ParseInstallation.getCurrentInstallation()
,而不是尝试通过任何其他方式获取安装


在本地运行,以便查看具体的错误。推送可能由于多种原因而失败,因此很难说没有错误。更新了日志输出的问题。我没有使用GCM,我在index.js文件中使用了FCM senderId和apiKey,如问题顶部所示。我在该文件的任何地方都看不到这一行
ParseInstallation.getCurrentInstallation()
。这会在应用程序中出现吗?我认为应用程序很好,因为当从FCM仪表板发送通知时,会读取日志输出。错误是因为找不到具有您要传递的正确ObjectId的对象,并且您还在PUT请求中设置GCMSenderId。您正在尝试保存一个不存在的对象。您正在尝试保存id为zKIp8LLOWr的安装对象(该对象似乎不存在,可能是用户的对象id吗?),并且您正在传递GCMSenderId:DIMV6HM3J07DBQVPesZRGQNZDO3YVA5ZNDOMTO6Q4KA5IjryyIrhiWCWOBVDA22Oils-4BO06KXDPUKFWJUZUD3XT41WUKOWB7CKDQV9LLJ7ME0UILWDWS7V。错误中的消息是“Object not found”,这意味着没有安装对象有objectId ZKIP8LLOWR仍然没有运气,我再也没有发现该对象丢失错误,这是我现在得到的响应:
results=[objectId=jVctUq1lKv,pushTime=2017-06-14T10:18:19.030Z,query={“UniqueId”:“c34f81f49de788ce”,“deviceType”:{“$in”:[“android”]},有效载荷={“警报”:“Tabib”},source=rest,status=successed,numSent=0,pushHash=25e44ea99f48ca8a9c54ff1ef578bdbc,createdAt=2017-06-14T10:18:19.030Z,updatedAt=2017-06-14T10:18:19.233Z,numFailed=16,android=16,]
上面写的是failed 16,但没有说明失败的原因。你确定你的发件人id和api密钥正确吗?卸载会失败。如果你从本地服务器运行推送,它会显示每次发送尝试的错误,这样你就可以明确地看到出了什么问题。我会清除你的安装,重新安装你的应用程序,然后重新安装然后使用新数据重试。