Android:正确处理推送通知
我正在将一个应用程序从iOS移植到Android。我们使用Parse作为后端。我目前正在研究推送通知的实现 一切进展顺利,因为我能够在Android应用程序中接收推送通知。现在,我想对应用程序进行编码,使其根据应用程序的当前状态正确运行 通过谷歌搜索/阅读,我认为以下是正确的:Android:正确处理推送通知,android,notifications,push-notification,google-cloud-messaging,Android,Notifications,Push Notification,Google Cloud Messaging,我正在将一个应用程序从iOS移植到Android。我们使用Parse作为后端。我目前正在研究推送通知的实现 一切进展顺利,因为我能够在Android应用程序中接收推送通知。现在,我想对应用程序进行编码,使其根据应用程序的当前状态正确运行 通过谷歌搜索/阅读,我认为以下是正确的: 如果用户已强制关闭你的应用,你的应用将永远不会再次运行代码,除非用户重新启动。如果应用程序崩溃,这也是真的吗 否则,应用程序将收到通知 我想知道的是什么时候该采取什么行动。例如,在我的iOS应用程序中,以下情况会导致相关
- 如果与推送通知相关的内容已经在屏幕上,我只需放弃该通知
- 如果内容在屏幕上是而不是,我会向用户显示一个弹出窗口,询问他们是否希望查看内容。只有当他们单击“是”时,我才会向他们显示内容。这通常涉及UI导航
ParsePushBroadcastReceiver
的框架实现:
public class ParsePushNotificationReceiver extends ParsePushBroadcastReceiver {
private final String TAG = "ParsePushBroadcastReceiver";
@Override
public void onReceive(Context context, Intent intent) {
Log.d(TAG, "onReceive() fired.");
Log.d(TAG, "intent: " + intent.toString());
Log.d(TAG, "extras: " + intent.getExtras().toString());
super.onReceive(context, intent);
}
@Override
protected void onPushReceive(Context context, Intent intent) {
Log.d(TAG, "onPushReceive() fired.");
Log.d(TAG, "intent: " + intent.toString());
Log.d(TAG, "extras: " + intent.getExtras().toString());
super.onPushReceive(context, intent);
}
@Override
protected void onPushDismiss(Context context, Intent intent) {
Log.d(TAG, "onPushDismiss() fired.");
super.onPushDismiss(context, intent);
}
@Override
protected void onPushOpen(Context context, Intent intent) {
Log.d(TAG, "onPushOpen() fired.");
super.onPushOpen(context, intent);
}
@Override
protected Class<? extends Activity> getActivity(Context context, Intent intent) {
Log.d(TAG, "getActivity() fired.");
return super.getActivity(context, intent);
}
@Override
protected int getSmallIconId(Context context, Intent intent) {
Log.d(TAG, "getSmallIconId() fired.");
return super.getSmallIconId(context, intent);
}
@Override
protected Bitmap getLargeIcon(Context context, Intent intent) {
Log.d(TAG, "getLargeIcon() fired.");
return super.getLargeIcon(context, intent);
}
@Override
protected Notification getNotification(Context context, Intent intent) {
return super.getNotification(context, intent);
}
}
公共类ParsePushNotificationReceiver扩展了ParsePushBroadcastReceiver{
私有最终字符串标记=“ParsePushBroadcastReceiver”;
@凌驾
公共void onReceive(上下文、意图){
d(标记“onReceive()fired”);
Log.d(标记“intent:+intent.toString());
Log.d(标记“extras:+intent.getExtras().toString());
super.onReceive(上下文、意图);
}
@凌驾
受保护的void onPushReceive(上下文、意图){
d(标记“onPushReceive()已激发”);
Log.d(标记“intent:+intent.toString());
Log.d(标记“extras:+intent.getExtras().toString());
super.onPushReceive(上下文、意图);
}
@凌驾
受保护的void onpushdisclose(上下文、意图){
Log.d(标记“onpushdismise()fired”);
super.onpushdismise(上下文、意图);
}
@凌驾
受保护的void onPushOpen(上下文、意图){
d(标记“onPushOpen()已激发”);
super.onPushOpen(上下文、意图);
}
@凌驾
保护类嗨,你找到解决办法了吗?我也陷入了你在问题中提到的一些问题