在接收推送通知时获取数据 - ionic3

Posted

技术标签:

【中文标题】在接收推送通知时获取数据 - ionic3【英文标题】:Fetch data on Receive of Push Notification - ionic3 【发布时间】:2018-02-06 12:22:20 【问题描述】:

我正在开发一个针对 androidios 的 ionic3 应用程序,我正在使用推送通知。我想在接收推送通知时从服务器获取一些数据。我无法将我的数据作为推送通知的一部分发送,因为 Firebase 限制了最大值推送消息的大小为(4Kb)。因此,我仅在用户点击推送通知时才从服务器获取数据,这导致用户等待直到从服务器获取数据。

有什么方法可以在推送通知到达时获取数据(应用不在前台)?

【问题讨论】:

是的,当你收到推送消息并从那里的服务器获取数据时,你可以启动后台服务,当你从服务器成功获取数据时,在那里创建通知。 谢谢@sasuke。有没有办法使用 ionic 创建后台服务? 阅读有关承诺的概念 请让我知道 promise 在这里有什么帮助? 【参考方案1】:

您将 Promise 用作一种“回调句柄” - 在服务中执行异步操作,返回一个 Promise,当异步工作完成时,Promise 将被触发。

angular.module('atTheMoviesApp', [])
  .controller('GetMoviesCtrl', 
       function($log, $scope, movieService) 
           $scope.getMovieListing = function(movie) 
           var promise = 
               movieService.getMovie('avengers');
           promise.then(
              function(payload)  
              $scope.listingData = payload.data;
        ,
        function(errorPayload) 
            $log.error('failure loading movie', errorPayload);
        );
     ;
)
.factory('movieService', function($http) 
return 
  getMovie: function(id) 
     return $http.get('/api/v1/movies/' + id);
  

);

你可以参考这个Link的代码

【讨论】:

这个问题既不是异步任务也不是promise。如何创建即使关闭应用程序也会运行的后台服务?【参考方案2】:

我正在使用“Phonegap-Plugin-Push”插件通过 Firebase 推送通知。如果推送有效负载仅包含“数据”对象,则此插件在推送通知到达时调用 on('notification') 处理程序。因此,我没有将“通知”对象添加到有效负载,而是仅发送“数据”对象作为来自服务器的有效负载的一部分。现在,只要推送通知到达设备,我就可以在我的 on('notification') 处理程序中从服务器获取数据。

参考:PhonegapPluginPushDocs

【讨论】:

以上是关于在接收推送通知时获取数据 - ionic3的主要内容,如果未能解决你的问题,请参考以下文章

推送通知未在多台设备上接收 - 仅在一台设备上获取推送

当我的应用程序处于后台或关闭时,当远程推送通知到达时从有效负载中获取数据

在选择收到的推送通知时获取 APNS 有效负载内容 [关闭]

如何在收到推送通知后让 android 应用程序在后台启动,以便它可以从服务器获取数据?

从 Apple 推送通知中解析数据

从 Android gcm 服务器接收重复的推送通知 [关闭]