我已经成功实现了针对Android的推送通知教程。收到通知后,它将立即根据通过BroadcastReceiver传递的json对象执行操作。
但是,我们希望只有在用户单击通知托盘中的推送通知警报后才会执行该操作。这可能吗?从教程中我们可以选择通过subscribe方法打开哪个活动。
我正在尝试确定点击特定推送通知何时启动应用。我正在通过自定义动作发送推送并接收它们。单击通知以首次打开应用程序时,我会收到操作并推送附加内容中的通知数据。但是,一旦应用程序已经打开/后台运行,额外内容永远不会改变。如果我从其他推送通知中打开应用程序或仅从应用程序图标打开应用程序,则额外内容与打开应用程序的原始通知保持一致(如果应用程序最初仅通过图标打开,则不会有额外内容)。 / p>
这是我活动的onResume()方法中的代码
Intent intentNotification = getIntent();
Bundle extras = intentNotification.getExtras();
if (extras!=null) {
String jsonData = extras.getString( "com.parse.Data" );
System.out.println("Message Data : "+jsonData);
}
任何人请帮我解决这个问题..
答案 0 :(得分:0)
在使用Xtify进行推送通知时,我也遇到了同样的情况
我根据需要应用了一个创建静态变量的简单逻辑。当具体操作id完成时。在我的情况下,用户注册,然后我会使静态变量为空(public static String MY_GLOBAL_VARIABLE="")
。除非用户未注册变量,否则包含value
尝试实现这个逻辑...... 希望这有助于至少开始。
答案 1 :(得分:0)
试试这个......
public static String MY_JSON_DATA;
Intent intentNotification = getIntent();
Bundle extras = intentNotification.getExtras();
if (extras!=null) {
MY_JSON_DATA=extras.getString( "com.parse.Data" );
System.out.println("Message Data : "+MY_JSON_DATA);
}
//打开应用时,使用MY_JSON_DATA
中的值,然后将其清除为MY_JSON_DATA=""
答案 2 :(得分:0)
将此方法添加到您的Activity中,这是推送通知打开
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
Bundle extras = intent.getExtras();
setIntent(intent);
if (extras!=null) {
String jsonData = extras.getString( "com.parse.Data" );
System.out.println("New Notification Data : "+jsonData);
String msg;
try {
JSONObject jMsg=new JSONObject(jsonData);
if (jMsg.has("alert")) {
msg=jMsg.getString("alert");
Util.SaveToSharedPref(LoginActivity.this, Constant.ShaPreNotification, Constant.ShaPreNotfMessage, msg);
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
和onRecevie()方法调用一个自定义函数,其主体与onNewIntent()相同
这很重要,因为当应用程序完全关闭时,它会从当时的应用程序/应用程序历史记录中删除,因为它会调用接收方法,因此会收到通知消息。
和其他时间调用onNewIntent()方法