[mbaS] 다른 줄로 알림 메시지 보내기 [안드로이드]

10117 단어 AndroidmBaas
mBaaS의 푸시 알림을 사용할 때 iOS에서 정보에 직접 반영되는 줄 바꿈과 안드로이드는 줄 바꿈을 무시합니다.

그러나 받은 푸시 알림 메시지 중 줄 바꿈 부분은 "\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>

결실

  • 생성된 푸시 알림
  • 푸시 알림 수신
  • 좋은 웹페이지 즐겨찾기