2016-12-05 126 views
1

我嘗試使用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:我只是添加它,請幫助審查 –

回答

1

看起來您正在使用錯誤的端點發送推送通知。

下面是使用輕量級請求庫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