情况:
我在我的应用中使用Ionic Push notifications。
一切都很好。
当用户发送消息时,通知将通过cURL请求触发,并且仅当接收者关闭应用程序或处于后台时才会到达。
我在处理onClick回调时遇到问题。
在documentation之后我将回调函数放在onNotification参数中。
“onNotification”:您的设备将调用此函数 收到通知,并提供通知对象 接收。
当用户点击通知时,我需要做的是将他重定向到某个页面。
它正在发挥作用。
问题是,当应用程序处于FOREGROUND状态时,每次发出cURL请求时,用户都将被重定向到该页面...无论是否收到通知(app off或background)或不(应用前景)......
代码:
.run(function($ionicPlatform, $rootScope, $location, $state) {
$ionicPlatform.ready(function() {
var push = new Ionic.Push({
"debug": true,
"onNotification": function(notification)
{
$rootScope.get_my_account_data();
$location.path('app/chat');
},
"onRegister": function(data)
{
console.log(data.token);
},
});
问题:
如何设置一个回调函数,该函数仅在用户实际点击通知时被调用,而不是在他进入应用程序时?
我必须在onNotification中做一些技巧,或者有可能设置onClick回调吗?
谢谢!
答案 0 :(得分:6)
解决方案:
好的,我使用AppStatus
进行了管理。
通过检查,我将仅在应用状态为asleep
或closed
时应用重定向。
if (notification.app.asleep || notification.app.closed)
代码:
var push = new Ionic.Push({
"debug": true,
"onNotification": function(notification)
{
$rootScope.get_my_account_data();
if (notification.app.asleep || notification.app.closed)
{
// the app was asleep or was closed, so do the redirect
$location.path('app/your_chat_page');
}
},
"onRegister": function(data)
{
console.log(data.token);
},
});
修改强>
现在不推荐使用ionic-platform-web-client
。您应该迁移到Ionic Cloud。
使用Ionic Cloud时,很少有变化,所以现在代码会略有不同:
$scope.$on('cloud:push:notification', function(event, data)
{
var msg = data.message;
if (msg.app.asleep || msg.app.closed)
{
// the app was asleep or was closed, so do the redirect
$location.path('app/your_chat_page');
}
});
答案 1 :(得分:1)
我正在使用此方法并且正在运行
1.首先初始化推送
var push = PushNotification.init({
android: {
senderID: "XXXXXXXXX"
},
browser: {
pushServiceURL: 'http://push.api.phonegap.com/v1/push'
},
ios: {
alert: "true",
badge: true,
sound: 'true'
},
windows: {}
});
2。push.on('notification', function(data) {
将此用于请求的推送并像
if (data.additionalData.link_url.indexOf('http')>-1){
$state.go('x',{x:x});
}