푸시 알림을 구현하는 Nativescript의 애플리케이션을 연구 중입니다. 서버가 푸시 알림을 보내고 알림의 페이로드에 언급 된 action
에 기반하여 애플리케이션에서 리디렉션해야한다고 가정 해 보겠습니다. 서랍과 응용 프로그램의 알림에 대한 사용자 탭이 백그라운드에있는 경우이 리다이렉션을 수행해야합니다. 애플리케이션이 포 그라운드에있는 경우 리디렉션하지 않아야하는 경우입니다.Nativescript에서 핸들 푸시 알림
이
application.on(application.launchEvent, function (args) {
appSettings.setBoolean('AppForground', true);
});
application.on(application.suspendEvent, function (args) {
appSettings.setBoolean('AppForground', false);
});
application.on(application.resumeEvent, function (args) {
appSettings.setBoolean('AppForground', true);
});
application.on(application.exitEvent, function (args) {
appSettings.setBoolean('AppForground', false);
});
application.on(application.lowMemoryEvent, function (args) {
appSettings.setBoolean('AppForground', false);
});
application.on(application.uncaughtErrorEvent, function (args) {
appSettings.setBoolean('AppForground', false);
});
을 app.js 그리고 푸시 알림 이제 청취자
var settings = {
// Android settings
senderID: '1234567890', // Android: Required setting with the sender/project number
notificationCallbackAndroid: function(data, pushNotificationObject) { // Android: Callback to invoke when a new push is received.
var payload = JSON.parse(JSON.parse(pushNotificationObject).data);
if (appSettings.getBoolean('AppForground') == false){
switch (payload.action) {
case "APPOINTMENT_DETAIL":
frame.topmost().navigate({
moduleName: views.appointmentDetails,
context: {
id: payload.id
}
});
break;
case "MESSAGE":
frame.topmost().navigate({
moduleName: views.appointmentDetails,
context: {
id: payload.id,
from: "messages"
}
});
break;
case "REFERENCES":
frame.topmost().navigate({
moduleName: views.clientDetails,
context: {
id: payload.id,
name: ""
}
});
break;
default:
}
}
},
// iOS settings
badge: true, // Enable setting badge through Push Notification
sound: true, // Enable playing a sound
alert: true, // Enable creating a alert
// Callback to invoke, when a push is received on iOS
notificationCallbackIOS: function(message) {
alert(JSON.stringify(message));
}
};
pushPlugin.register(settings,
// Success callback
function(token) {
// if we're on android device we have the onMessageReceived function to subscribe
// for push notifications
if(pushPlugin.onMessageReceived) {
pushPlugin.onMessageReceived(settings.notificationCallbackAndroid);
}
},
// Error Callback
function(error) {
alert(error);
}
);
문제에 따를 때 나는 그것을 위해 플래그를 관리해야이며, 해당 응용 프로그램이 사망 상태에있는 경우 알림이 도착합니다. 그런 다음 응용 프로그램이 시작될 때 플래그를 true
으로 설정합니다. 따라서 리디렉션이 수행되지 않기 때문에 응용 프로그램이 포 그라운드 상태에 있고 다른 페이지에서 통보를받을 때 페이지를 탐색하는 경우가 있습니다.
플래그 관리가 문제를 일으키는 지 의심 스럽지만 확실하지 않습니다. 내가 한 일이 뭐가 잘못되었을 때 나를 안내 해주시겠습니까? 내가 push-plugin을 사용하고
UPDATE.
감사합니다.
d 장치에 도착한 후 ata는 배경 매개 변수를 갖지 않을 것입니다. 그러면 앱이 배경인지 전경인지 알 수 있습니다. –
페이로드에 배경 매개 변수가 없습니다.이 매개 변수는'app.js'에서 로컬로 관리됩니다. 그것을 기반으로 탐색을 관리해야합니다. –