Skip to content

Angepasste Behandlung von Push-Eingängen, Öffnungen, Entlassungen und Schlüssel-Wert-Paaren über Broadcast Receiver

Braze sendet auch angepasste Absichten, wenn Push-Benachrichtigungen empfangen, geöffnet oder abgelehnt werden. Wenn Sie einen speziellen Anwendungsfall für diese Szenarien haben (z.B. die Notwendigkeit, auf angepasste Schlüssel-Wert-Paare oder proprietäre Handhabung von Deeplinks zu achten), müssen Sie auf diese Absichten achten, indem Sie eine angepasste BroadcastReceiver erstellen.

Schritt 1: Registrieren Sie Ihren BroadcastReceiver

Registrieren Sie Ihre angepasste BroadcastReceiver, um auf geöffnete und empfangene Push-Absichten von Braze in Ihrem AndroidManifest.xml:

1
2
3
4
5
6
7
<receiver android:name="YOUR-BROADCASTRECEIVER-NAME" android:exported="false" >
  <intent-filter>
    <action android:name="com.braze.push.intent.NOTIFICATION_RECEIVED" />
    <action android:name="com.braze.push.intent.NOTIFICATION_OPENED" />
    <action android:name="com.braze.push.intent.NOTIFICATION_DELETED" />
  </intent-filter>
</receiver>

Schritt 2: Erstellen Sie Ihren BroadcastReceiver

Ihr Empfänger sollte die von Braze gesendeten Absichten verarbeiten und Ihre Aktivität mit ihnen starten:

  • Sie sollte die Unterklasse BroadcastReceiver untergliedern und onReceive() außer Kraft setzen.
  • Die Methode onReceive() sollte auf von Braze gesendete Absichten warten.
    • Eine NOTIFICATION_RECEIVED Absicht wird empfangen, wenn eine Push-Benachrichtigung eintrifft.
    • Eine NOTIFICATION_OPENED Absicht wird empfangen, wenn der Nutzer:innen auf eine Push-Benachrichtigung klickt.
    • Eine NOTIFICATION_DELETED Absicht wird empfangen, wenn eine Push-Benachrichtigung vom Nutzer:innen zurückgewiesen (weggewischt) wird.
  • Es sollte Ihre angepasste Logik für jeden dieser Fälle ausführen. Wenn Ihr Empfänger Deeplinks öffnet, stellen Sie sicher, dass Sie das automatische Öffnen von Deeplinks deaktivieren, indem Sie com_braze_handle_push_deep_links_automatically auf false in Ihrem braze.xml einstellen.

Ein ausführliches Beispiel für einen angepassten Empfänger finden Sie in den folgenden Code-Snippets:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class CustomBroadcastReceiver extends BroadcastReceiver {
  private static final String TAG = CustomBroadcastReceiver.class.getName();

  @Override
  public void onReceive(Context context, Intent intent) {
    String pushReceivedAction = Constants.BRAZE_PUSH_INTENT_NOTIFICATION_RECEIVED;
    String notificationOpenedAction = Constants.BRAZE_PUSH_INTENT_NOTIFICATION_OPENED;
    String notificationDeletedAction = Constants.BRAZE_PUSH_INTENT_NOTIFICATION_DELETED;

    String action = intent.getAction();
    Log.d(TAG, String.format("Received intent with action %s", action));

    if (pushReceivedAction.equals(action)) {
      Log.d(TAG, "Received push notification.");
    } else if (notificationOpenedAction.equals(action)) {
      BrazeNotificationUtils.routeUserWithNotificationOpenedIntent(context, intent);
    } else if (notificationDeletedAction.equals(action)) {
      Log.d(TAG, "Received push notification deleted intent.");
    } else {
      Log.d(TAG, String.format("Ignoring intent with unsupported action %s", action));
    }
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class CustomBroadcastReceiver : BroadcastReceiver() {
  override fun onReceive(context: Context, intent: Intent) {
    val pushReceivedAction = Constants.BRAZE_PUSH_INTENT_NOTIFICATION_RECEIVED
    val notificationOpenedAction = Constants.BRAZE_PUSH_INTENT_NOTIFICATION_OPENED
    val notificationDeletedAction = Constants.BRAZE_PUSH_INTENT_NOTIFICATION_DELETED

    val action = intent.action
    Log.d(TAG, String.format("Received intent with action %s", action))

    when (action) {
      pushReceivedAction -> {
        Log.d(TAG, "Received push notification.")
      }
      notificationOpenedAction -> {
        BrazeNotificationUtils.routeUserWithNotificationOpenedIntent(context, intent)
      }
      notificationDeletedAction -> {
        Log.d(TAG, "Received push notification deleted intent.")
      }
      else -> {
        Log.d(TAG, String.format("Ignoring intent with unsupported action %s", action))
      }
    }
  }

  companion object {
    private val TAG = CustomBroadcastReceiver::class.java.name
  }
}

Schritt 3: Zugriff auf angepasste Schlüssel-Wert-Paare

Angepasste Schlüssel-Wert-Paare, die entweder über das Dashboard oder die Messaging APIs gesendet werden, sind in Ihrem angepassten Broadcast-Empfänger für den von Ihnen gewählten Zweck zugänglich:

1
2
3
4
5
6
7
8
// intent is the Braze push intent received by your custom broadcast receiver.
String deepLink = intent.getStringExtra(Constants.BRAZE_PUSH_DEEP_LINK_KEY);

// The extras bundle extracted from the intent contains all custom key-value pairs.
Bundle extras = intent.getBundleExtra(Constants.BRAZE_PUSH_EXTRAS_KEY);

// example of getting specific key-value pair from the extras bundle.
String myExtra = extras.getString("my_key");
1
2
3
4
5
6
7
8
// intent is the Braze push intent received by your custom broadcast receiver.
val deepLink = intent.getStringExtra(Constants.BRAZE_PUSH_DEEP_LINK_KEY)

// The extras bundle extracted from the intent contains all custom key-value pairs.
val extras = intent.getBundleExtra(Constants.BRAZE_PUSH_EXTRAS_KEY)

// example of getting specific key-value pair from the extras bundle.
val myExtra = extras.getString("my_key")
New Stuff!