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

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

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

【问题讨论】:

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

标签: android cordova firebase push-notification ionic3


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-08
    • 2020-01-04
    • 2018-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多