IBM推送通知:无效的Json

问题描述:

我尝试使用https://mobile.ng.bluemix.net/imfpush/v1/apps/ {APPID} /设备/ {设备ID}推动本网站通知:https://mobile.ng.bluemix.net/imfpush/#/,但我有一个错误消息IBM推送通知:无效的Json

体:

{ "alert" : "You have a request for payment."} 

错误消息:

400 { 
    "code": "FPWSE0004E", 
    "message": "Bad Request - Invalid JSON." 
} 

,并尝试通过调用HTTPS使用上要求的NodeJS

在我的代码:由邮递员

var message = { 
      alert : "You have a request for payment.", 
      url : "payment_id" 
     }; 

var headers = { 
      'Content-Type' : 'application/json', 
      'appSecret': 'xxxxxx', 
      "clientSecret": "xxxxxxxx" 
      'Content-Length' : Buffer.byteLength(message, 'utf8') 
     }; 

var options = { 
          host : 'mobile.ng.bluemix.net', 
          port : 443, 
          path : '/imfpush/v1/apps/'+appId +'/devices/'+deviceId, 
          method : 'PUT', 
          headers : headers, 
          data: JSON.stringify(message) 
         }; 

var reqPost = https.request(options, function(res) { 
      res.on('data', function(d) { 
       console.info('PUT result:\n');     
       process.stdout.write(d); 
       console.info('\n\PUTcompleted'); 
        }); 
       }); 

reqPost.end(); 

和呼叫API,我得到一个错误信息:不能得到任何回应。 请给我你的想法。

+0

什么是“标题”? – yuxhuang

+0

@yuxhuang:我只是添加它,请帮助审查 –

看起来您正在使用错误的端点发送推送通知。

下面是使用轻量级请求库superagent在Node中向设备发送推送通知的一个非常简单的示例。

var request = require('superagent'); 

var baseUrl = 'https://mobile.ng.bluemix.net'; 

var message = { 
    "message": { 
    "alert": "Notification alert message" 
    } 
}; 

request 
    .post(baseUrl + '/imfpush/v1/apps/' + appId + '/messages') 
    .send(message) 
    .set('Content-Type', 'application/json') 
    .set('Accept', 'application/json') 
    .set('appSecret', appSecret) 
    .end(function(err, res){ 
    console.log(res.body) || console.log(err); 
    }); 

你只需要设置appIDappSecret(可能是外部)。

或者,如果你要发送到的设备ID,只是改变了邮件的正文:

var message = { 
    "message": { 
    "alert": "Notification alert message" 
    }, 
    "target": { 
    "deviceIds": [ 
     deviceID 
    ] 
    } 
}; 

,并设置deviceID