[mbaS] 다른 줄로 알림 메시지 보내기 [안드로이드]
그러나 받은 푸시 알림 메시지 중 줄 바꿈 부분은 "\n"으로 저장되므로 이 정보를 바탕으로 Notification의 Inbox Style을 사용하여 여러 줄 표시로 변환됩니다.
이루어지다
기존 SDK NCMBGcmListener Service를 상속하는 새 카테고리를 만듭니다.
인박스 스타일에서 정보를 변경한 부분을 제외하고는 다른 부분은 원래 학급과 거의 같다.
CustomGcmListenerService.java
public class CustomGcmListenerService extends NCMBGcmListenerService {
@Override
public void onMessageReceived(String from, Bundle data) {
if ((!data.containsKey("message")) && (!data.containsKey("title"))) {
return;
}
// 親Serveiceからプッシュ通知情報を取得
NotificationCompat.Builder notificationBuilder = notificationSettings(data);
// ---------ここからInboxStyleで表示を改変---------
// InboxStyle:複数行のテキストを表示
NotificationCompat.InboxStyle inboxStyle = new NotificationCompat.InboxStyle(notificationBuilder);
// タイトル(そのまま)
if(null != data.getString("title")) {
String title = data.getString("title");
inboxStyle.setBigContentTitle(title);
}
// メッセージ(InboxStyleを利用して改行)
if(null != data.getString("message")) {
String message = data.getString("message");
// 改行文字列をsplitで分割
String[] messageArray = message.split("\n");
// 分割された文字列を行として追加
for (int i=0; i < messageArray.length; i++) {
inboxStyle.addLine(messageArray[i]);
}
}
// ---------ここまでInboxStyleで表示を改変---------
/*
* 通知重複設定
* 0:常に最新の通知のみ表示
* 1:最新以外の通知も複数表示
*/
ApplicationInfo appInfo = null;
try {
appInfo = getPackageManager().getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA);
} catch (PackageManager.NameNotFoundException e) {
throw new IllegalArgumentException(e);
}
boolean containsKey = appInfo.metaData.containsKey("notificationOverlap");
int overlap = appInfo.metaData.getInt("notificationOverlap");
//デフォルト複数表示
int notificationId = new Random().nextInt();
if (overlap == 0 && containsKey) {
//最新のみ表示
notificationId = 0;
}
NotificationManager notificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(notificationId, inboxStyle.build());
}
}
선언, 선언, 선언, 선언, 새로 만든 서비스.AndroidManifest.xml
<!--
<service
android:name="com.nifty.cloud.mb.core.NCMBGcmListenerService"
android:exported="false">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE"/>
</intent-filter>
</service>
-->
<service
android:name="パッケージ名.CustomGcmListenerService"
android:exported="false">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE"/>
</intent-filter>
</service>
결실
Reference
이 문제에 관하여([mbaS] 다른 줄로 알림 메시지 보내기 [안드로이드]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kojimatp/items/c220d78c3c68d6f9b1e1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)