我正嘗試在我的Ionic 2應用程序中使用cordova fcm plugin。我已經安裝使用。該插件Ionic2:FCMPlugin.onNotification似乎不會觸發
ionic plugin add cordova-plugin-inappbrowser
ionic plugin add cordova-plugin-fcm
ionic plugin add cordova-plugin-velda-devicefeedback
,並添加以下代碼app.component.ts
declare var FCMPlugin;
@Component({
templateUrl: 'app.html'
})
export class MyApp {
rootPage = TabsPage;
constructor(platform: Platform, private toastCtrl: ToastController) {
platform.ready().then(() => {
StatusBar.styleDefault();
Splashscreen.hide();
this.setupNotifications();
});
}
private setupNotifications() {
try {
let fcmPlugin = FCMPlugin;
fcmPlugin.getToken(
function (token) {
this.log(token);
},
function (err) {
this.log("error retrieving token: " + err);
});
fcmPlugin.onNotification(function (notification) {
this.log("got notification");
this.log(JSON.stringify(notification));
}, function (error) {
this.log(error);
});
}
catch (exception) {
this.log(exception);
}
}
private log(m: any): void {
let toast = this.toastCtrl.create({
message: m,
duration: 5000
});
toast.present();
}
我構建Android應用程序並安裝我的Android手機上。
我在運行應用程序時沒有收到任何「未定義」錯誤。然後我使用Firebase message console來拍攝幾條消息。
如果我的離子應用程序被關閉,我做得到我的設備上nofication,如果我點擊它,它確實打開應用程序,所以這部分似乎工作。
但是,當應用程序打開時,我做而不是得到onNotification
調用,永遠。
有沒有人知道這裏會出現什麼問題?我打電話正確設置了嗎?
在此先感謝您的幫助!
[編輯]
由豪爾赫的答案的建議是我所需要的click_action
你無法通過控制檯發送。所以我現在試圖通過POSTMAN發送。這個doco似乎很差,或者至少很難在一個地方找到所有的東西。例如在標題中包含什麼。
總之,通過試驗和錯誤使用郵差我用下面的標題..
Access-Control-Allow-Origin: *
Content-Type: application/json
Authorization: key=myappkey
,我使用以下網址https://fcm.googleapis.com/fcm/send
和身體下面...
{
"notification":{
"title":"Notification title",
"body":"Notification body",
"sound":"default",
"click_action":"FCM_PLUGIN_ACTIVITY",
"icon":"fcm_push_icon"
},
"data":{
"param1":"value1",
"param2":"value2"
},
"to":"",
"priority":"high",
"restricted_package_name":""
}
POSTMAN返回200,但是我的設備上根本沒有得到任何東西,無論應用程序是否正在運行。
[EDIT2]
我注意到郵差是返回一個錯誤
{
"multicast_id": 5810330647165506849,
"success": 0,
"failure": 1,
"canonical_ids": 0,
"results": [
{
"error": "InvalidRegistration"
}
]
}
於是我在提琴手嘗試,並得到一個不同的錯誤(還是200點的狀態,雖然返回)
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Content-Type: application/json
X-Cloud-Trace-Context: 2ae6d1bccf7e610bf4c91bd7ef482b5e;o=1
Date: Sun, 04 Dec 2016 14:43:52 GMT
Server: Google Frontend
Content-Length: 62
Alt-Svc: quic=":443"; ma=2592000; v="36,35,34"
{"result":1, "message":"JSONObject[\"recipient\"] not found."}
我也已經添加了從調用getToken返回到「to」字段返回的令牌id。
任何進一步的想法將不勝感激! 謝謝
你正在試圖android嗎? – Jorge
啊,這是在Android上。 – peterc
你在'「字段中設置了一個fcmToken嗎?我已經多次從郵遞員那裏嘗試過,對我來說它確實很好。 – Jorge