モバイルアプリプッシュにおけるメッセージ折りたたみの解決策

モバイルアプリのプッシュシナリオにおいて、メッセージの折りたたみ問題は直接的にユーザーエクスペリエンスとメッセージ配信効率に影響を及ぼします。この記事では、AppPushサービスを基に、通知メッセージとカスタムメッセージの両方のタイプを使用して、メッセージを折りたたまずに表示する方法について詳しく説明します。

alt text

1. メッセージタイプと表示ルールの比較

通知メッセージ

  • システムのデフォルト動作:
アプリ状態 表示ルール
フォアグラウンド group_idを使用して折りたたみを制御可能
バックグラウンド 携帯電話のシステムによって管理され、通知バーに表示される。カスタマイズオプション(折りたたみ、数量制限など)が限られている
  • 使用シナリオ: システム通知バーを介してユーザーに到達する必要がある標準的なプッシュメッセージ。

カスタムメッセージ

  • 主な利点:
    アプリがフォアグラウンド、バックグラウンド、またはメモリからクリアされている場合に関係なく、クライアント側のコードでメッセージの表示方法(ポップアップ位置、折りたたみロジックなど)を完全に制御できます。

  • 使用シナリオ:
    カスタマイズされた対話が必要な高優先度メッセージ(注文状態の更新、インスタントメッセージングなど)。

2. メッセージの折りたたみを防止する2つの解決策

解決策1:通知メッセージを使用する

(FCMはアプリがフォアグラウンドの場合のみ有効;EngageLabはすべての状態で有効)

原理

group_idフィールドを使用してメッセージのグループ化を制御します:

  • 折りたたみを防止するには:各メッセージに一意のgroup_idを割り当てます。

実装手順

Android SDKバージョンV5.0.1以降でサポートされています

プッシュAPIペイロードのサンプル:

{ "notification": { "android": { "group_id": "UNIQUE_GROUP_123" // 一意の値で折りたたみを防止 } } }
              
              {
  "notification": {
    "android": {
      "group_id": "UNIQUE_GROUP_123"  // 一意の値で折りたたみを防止
    }
  }
}

            
このコードブロックはフローティングウィンドウ内に表示されます

互換性に関する注意事項

  • 現在、FCMEngageLabのプッシュチャネルのみをサポートしています。
  • アプリがバックグラウンドの場合、メッセージは依然としてシステムの制限の影響を受ける可能性があります。

解決策2:カスタムメッセージを使用する(すべてのシナリオでサポート)

原理

クライアントがアクティブにshowNotificationAPIを呼び出してメッセージをレンダリングし、システムの制限を回避します。

実装手順

1. カスタムメッセージを送信する
{ "message": { "msg_content": "Your order has been shipped", "content_type": "text", "extras": { "type": "priority_alert", "style": "popup_bottom" // カスタム表示スタイル } } }
              
              {
  "message": {
    "msg_content": "Your order has been shipped",
    "content_type": "text",
    "extras": {
      "type": "priority_alert",
      "style": "popup_bottom"  // カスタム表示スタイル
    }
  }
}

            
このコードブロックはフローティングウィンドウ内に表示されます
2. クライアントがメッセージを処理する(Androidの例)
public class UserReceiver extends MTCommonReceiver { @Override public void onCustomMessage(Context context, CustomMessage customMessage) { ExampleLogger.i(TAG, "onCustomMessage:" + customMessage.toString()); showNotification(context, customMessage); // 表示をトリガー } }
              
              public class UserReceiver extends MTCommonReceiver {
    @Override
    public void onCustomMessage(Context context, CustomMessage customMessage) {
        ExampleLogger.i(TAG, "onCustomMessage:" + customMessage.toString());
        showNotification(context, customMessage); // 表示をトリガー
    }
}

            
このコードブロックはフローティングウィンドウ内に表示されます
3. カスタム表示ロジック(折りたたみ防止)
public void showNotification(Context context, CustomMessage customMessage) { NotificationMessage notificationMessage = new NotificationMessage() .setMessageId(customMessage.getMessageId()) .setNotificationId("独自のID;各通知は一意である必要があります") .setTitle(customMessage.getTitle()) .setContent(customMessage.getContent()) .setgroup_id(customMessage.getMessageId()); // 折りたたみを防止するキーフィールド MTPushPrivatesApi.showNotification(context, notificationMessage); }
              
              public void showNotification(Context context, CustomMessage customMessage) {
    NotificationMessage notificationMessage = new NotificationMessage()
        .setMessageId(customMessage.getMessageId())
        .setNotificationId("独自のID;各通知は一意である必要があります")
        .setTitle(customMessage.getTitle())
        .setContent(customMessage.getContent())
        .setgroup_id(customMessage.getMessageId()); // 折りたたみを防止するキーフィールド

    MTPushPrivatesApi.showNotification(context, notificationMessage);
}

            
このコードブロックはフローティングウィンドウ内に表示されます

機能比較

機能 通知メッセージ カスタムメッセージ
アプリ状態サポート FCM:フォアグラウンドのみ;EngageLab:すべての状態 すべてのシナリオ(フォアグラウンド/バックグラウンド)
UIの柔軟性 限られている(システムに依存) 完全にカスタマイズ可能
チャネル依存性 特定のチャネル(FCM、EngageLab)が必要 制限なし

3. 注意事項

  • チャネル互換性

    • group_id機能は現在、FCMとEngageLabチャネルのみをサポートしています。
  • パフォーマンス最適化

    • 一意のgroup_idを持つ高頻度メッセージを送信する場合は、通知バーのキャッシュ圧力を監視してください(推奨制限:1デバイスあたり1時間に≤30メッセージ)。

4. まとめ

  • 軽量なニーズ: 通知メッセージでgroup_idを使用して折りたたみを制御することを推奨します。開発コストが低くなります。
  • 高カスタマイズニーズ: カスタムメッセージを選択してください。クライアントロジックを介して表示動作を完全に制御できます。
  • ハイブリッド戦略: 重要なメッセージ(支払い成功など)にはカスタムメッセージを使用し、標準メッセージはgroup_idで管理します。

適切な戦略を選択することで、メッセージの可視性とユーザーの関与を大幅に向上させることができます。

icon
お問い合わせ