2016-08-25 82 views
12

局勢:離子推送通知:如何處理onClick?

,我在我的應用程序使用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回調?

謝謝!

回答

6

THE SOLUTION:

好的我管理它使用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

具有離子云幾件事情的變化,所以現在代碼會稍有不同:

$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'); 
    } 
}); 
+0

你可以給我看一個在ionframework v1中使用離子云的推送通知的例子嗎? – talentedandrew

+0

在我的答案中有兩個例子。如果你需要更多的信息,這兩個是非常好的教程:https://devdactic.com/ionic-push-notifications-guide/(如何設置所有的東西)http://docs.ionic.io/services/push/ (所有你需要雲上的通知) – johnnyfittizio

+0

你的第一個鏈接,我認爲是舊版本...現在在他們的文檔中,他們使用離子云... – talentedandrew

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

所以基本上你正在管理的onNotification內。但在這種情況下,這將始終適用,前景和背景的權利?我只需要在後臺。 – johnnyfittizio