![](/img/trans.png)
[英]Getting Push Notification Data in onMessageReceived but not showing Push Notification
[英]Update data in fragment with getting push notification
这不是重复的问题。 因此,请勿重复提出该问题。
我有情景。 我正在实现我已经完成的所有功能的聊天模块。
MainActivity-MainFragment-聊天列表片段。
MainActivity
拥有MainFragment
,它具有带有tablayout的viewpager。 MainFragment's
视图寻呼机适配器包含ChatList
Fragment,其中,API调用了聊天列表。
现在,如果我已经在聊天列表片段中并且推送通知来发送消息,则不应出现我所做的通知。 但是我想更新聊天列表中的数据意味着要调用聊天列表API。
我没有得到MainActivity
上下文,所以我可以访问MainFragment
并检索该ChatList
片段。
码
case "chat_message":
// if (HirerTabsActivity.isOpenChat()) {
// Log.v("ATATATA", "asd");
//
// } else {
if (GetUserProfileData.getInstance().getUserDetail().getUser_type().equalsIgnoreCase("artist")) {
intent = new Intent(this, ArtistTabsActivity.class);
intent.putExtra("fromNotification", "Y");
} else {
intent = new Intent(this, HirerTabsActivity.class);
intent.putExtra("fromNotification", "Y");
}
break;
更新的代码
case "chat_message":
if (mediaPrefs.getString(Constant.SharedPreferences_IN_CHAT_SCREEN, "").equalsIgnoreCase("Y")) {
sendBroadcast(new Intent().setAction("chat_refresh"));
} else {
if (GetUserProfileData.getInstance().getUserDetail().getUser_type().equalsIgnoreCase("artist")) {
intent = new Intent(this, ArtistTabsActivity.class);
intent.putExtra("fromNotification", "Y");
} else {
intent = new Intent(this, HirerTabsActivity.class);
intent.putExtra("fromNotification", "Y");
}
}
高级帮助将不胜感激!
看看LocalBroadcastManager: https : //developer.android.com/reference/android/support/v4/content/LocalBroadcastManager
这样,您可以从服务发送本地广播,以监听对活动/片段的推送。 您可以在此处找到示例实现: 如何使用LocalBroadcastManager?
好问题让我分享一下它的工作方式。
在Notficationservice中,您需要发送广播
//refresh chat list
sendBroadcast(new Intent().setAction("chat_refresh"));
和你的碎片
private class RefreshBrodcast extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (getUserVisibleHint() && isVisible()) {
// your can refresh via api
}
}
}
如果您不想在聊天片段时显示通知,则可以使用onresume() & onpause()
方法管理静态标志或首选项标志
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.