在接收推送通知时获取数据 - ionic3
Posted
技术标签:
【中文标题】在接收推送通知时获取数据 - ionic3【英文标题】:Fetch data on Receive of Push Notification - ionic3 【发布时间】:2018-02-06 12:22:20 【问题描述】:我正在开发一个针对 android 和 ios 的 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 有效负载内容 [关闭]