【问题标题】:Ionic Push notification: How to handle onClick?离子推送通知:如何处理 onClick?
【发布时间】:2017-01-01 18:44:23
【问题描述】:

情况:

我在我的应用程序中使用Ionic Push notifications

一切正常。

当用户发送消息时,通知将通过 cURL 请求触发,并且只有在接收者关闭应用程序或在后台时才会到达。

我在处理 onClick 回调时遇到了问题。

documentation 之后,我将回调函数放在了 onNotification 参数中。

"onNotification": 当你的设备调用这个函数 接收通知,并提供通知对象 收到了。

当用户点击通知时,我需要做的是将他重定向到某个页面。

它正在工作。

问题在于,当应用程序处于 FOREGROUND 时,每次发出 cURL 请求时,用户都会被重定向到该页面......无论是否收到通知(应用程序关闭或后台)与否(应用程序前台)...

代码:

.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 回调?

谢谢!

【问题讨论】:

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


    【解决方案1】:

    解决方案:

    好的,我使用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');
        }
    });
    

    【讨论】:

    • 你能给我看一个在ionicframework v1中使用离子云的推送通知示例吗?
    • 在我的回答中有两个例子。如果您需要更多信息,这两个是非常好的教程:devdactic.com/ionic-push-notifications-guide(如何设置所有东西)docs.ionic.io/services/push(所有你需要的云端通知)
    • 你的第一个链接,我认为是旧版本的......现在在他们的文档中他们正在使用离子云......
    • 你如何捕捉通知?....我必须在我的控制器或运行中编写此代码吗?
    • 是的,适用于 v1。但是,您在 Android 和 Ios 上注册和使您的应用程序能够接收通知的方式将是相同的。并且有很好的一步一步的解释。然后使用离子云,设置和管理通知的代码略有不同。主要区别在于代码将在控制器内部而不是 .run() 使一切更易于管理。
    【解决方案2】:

    我正在使用这种方法,它正在工作

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

    【讨论】:

    • 所以基本上你是在 onNotification 里面管理的。但在这种情况下,前景和背景都将始终适用,对吗?我只需要在后台。
    猜你喜欢
    • 2016-07-05
    • 2015-11-13
    • 1970-01-01
    • 2012-04-25
    • 1970-01-01
    • 2017-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多