离子推送通知:如何处理onClick?

时间:2016-08-25 11:01:06

标签: javascript android ios ionic-framework push-notification

情况:

我在我的应用中使用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回调吗?

谢谢!

2 个答案:

答案 0 :(得分:6)

解决方案:

好的,我使用AppStatus进行了管理。 通过检查,我将仅在应用状态为asleepclosed时应用重定向。

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});
}