GetuiLaboratory / cordova-plugin-getuisdk

个推官方提供的推送SDK PhoneGap(Cordova) 插件(支持 Android & iOS)

Home Page:http://docs.getui.com/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

安卓如何实现后台运行或者已关闭app的推送处理?

mchenx opened this issue · comments

在iOS上,通过使用PushNotification,注册on('notification')事件,可以实现后台推送的处理,这个对于一个关闭的app来说,是通过APNS实现的唤醒app然后调用no('notification')处理逻辑的,不知道我的了解对不对。

在安卓上,同样的需要GCM(现在改成FCM了),但是国内很多手机是没有谷歌服务的,不知道要怎么做呢?需要自己编写安卓后台 service 实现?

是通过callback中的 if(type == 'payload') ? 这个是要求app处于(前台、后台)运行状态的吧

function callback(type, data) {
if(type == 'cid') {
//TODO data = clientid
} else if(type == 'pid') {
//TODO data = 进程pid
} else if(type == 'payload') {
//TODO data=透传数据
}
else if(type == 'online') {
if(data == 'true') {
//TODO 已上线
} else {
//TODO 已离线
}
}
};

您好,国内现在的安卓大环境里,普遍是不允许未启动的APP来收到通知的,应用在退到后台后,部分机型在锁屏后是会强杀进程的;如果应用在后台存活着,则可以收到个推推送的通知。

了解。那么假设能收到推送通知(app在后台存活着),怎么实现用户点击推送通知后的处理逻辑呢? 在哪里注册处理方法?

可以在个推开发者平台的通知推送里,高级设置里面给通知添加透传,点击通知后,APP会收到该通知附加的透传数据,从而实现用户点击通知的后续处理逻辑。新版本我们会完善这一部分的文档,之前的文档较简略

也就是说,在下面这段callback里面
function callback(type, data) {
if(type == 'cid') {
//TODO data = clientid
} else if(type == 'pid') {
//TODO data = 进程pid
} else if(type == 'payload') {
//TODO data=透传数据
} else if(type == 'online') {
if(data == 'true') {
//TODO 已上线
} else {
//TODO 已离线
}
}
};

如果是发送的是推送通知,用户不点消息通知的话,app是不会调这个callback的,只有用户点了消息通知后,这个callback才会被调用,并且type=payload

如果是发送的是透传消息,手机上不会有任何通知,但是这个callback会被调用,并且type是payload

这么理解对吗?

我已经全部实现了,没毛病