![](/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.