MTPush-API
MTCorePrivatesApi
- Hauptsächlich für die Informationskonfiguration verwendet.
- Alle Methoden müssen im Hauptprozess aufgerufen werden. Bitte führen Sie vor dem Methodenaufruf keine Prozessprüfung durch, um sie in den Kindprozess zu verschieben, da sonst ein Aufruffehler auftritt.
configAppKey
- Muss in der Methode Application.onCreate() aufgerufen werden.
- Bitte vor init aufrufen.
/**
* Konfiguriert den Anwendungsschlüssel, ohne die Konfiguration in der AndroidManifest.xml zu verwenden.
*
* Muss in der Methode Application.onCreate() aufgerufen werden.
* Bitte vor [init](#init) aufrufen.
*
*@param context darf nicht leer sein
*@param appKey darf nicht leer sein
*/
Public static void configAppKey(Context context, String appKey)
Beispielcode:
Java:
MTCorePrivatesApi.configAppKey(this, "Ihr AppKey");
Kotlin:
MTCorePrivatesApi.configAppKey(this, "Ihr AppKey")
configAppChannel
- Muss in der Methode Application.onCreate() aufgerufen werden.
- Bitte vor init aufrufen.
/**
* Konfiguriert den Anwendungskanal, ohne die Konfiguration in der AndroidManifest.xml zu verwenden.
* Muss in der Methode Application.onCreate() aufgerufen werden.
* Muss vor init verwendet werden und innerhalb von Application.onCreate aufgerufen werden.
*
* @param context darf nicht leer sein
* @param appChannel darf nicht leer sein
*/
public static void configAppChannel(Context context, String appChannel)
Beispielcode:
Java:
MTCorePrivatesApi.configAppChannel(this, "Ihr_AppChannel");
Kotlin:
MTCorePrivatesApi.configAppChannel(this, "Ihr_AppChannel")
configAppSiteName
- Muss in der Methode Application.onCreate() aufgerufen werden.
- Bitte vor init aufrufen.
/**
* Konfiguriert den Namen des Datenzentrum-Standorts, ohne die Konfiguration in der AndroidManifest.xml zu verwenden.
* Die aktuell verfügbaren Standorte sind: Singapore, USA_Virginia, DEU_Frankfurt und HongKong.
* Muss in der Methode Application.onCreate() aufgerufen werden.
* Bitte vor [init](#init) aufrufen.
*
*@param context darf nicht leer sein
*@param appSiteName darf nicht leer sein
*/
Public static void configAppSiteName(Context context, String appSiteName)
Beispielcode:
Java:
MTCorePrivatesApi.configAppSiteName(this, "Ihr Plattform-Datenzentrum-Standortname");
Kotlin:
MTCorePrivatesApi.configAppSiteName(this, "Ihr Plattform-Datenzentrum-Standortname")
configHeartbeatInterval
- Muss in der Methode Application.onCreate() aufgerufen werden.
- Bitte vor init aufrufen.
/**
* Setzt das Heartbeat-Intervall.
*
* Muss in der Methode Application.onCreate() aufgerufen werden.
*
* @param context darf nicht leer sein
* @param heartbeatInterval Zeiteinheit ist Millisekunden, muss größer als 0 sein, Standardwert ist 4 Minuten und 50 Sekunden
*/
public static void configHeartbeatInterval(Context context, long heartbeatInterval)
Beispielcode:
- Im Demo wird das Heartbeat-Intervall auf 3 Minuten gesetzt.
Java:
MTCorePrivatesApi.configHeartbeatInterval(this, 3 * 60 * 1000);
Kotlin:
MTCorePrivatesApi.configHeartbeatInterval(this, 3 * 60 * 1000)
configConnectRetryCount
- Muss in der Methode Application.onCreate() aufgerufen werden.
- Bitte vor init aufrufen.
/**
* Setzt die Anzahl der Wiederholungsversuche für die Langzeitverbindung.
*
* Muss in der Methode Application.onCreate() aufgerufen werden.
*
* @param context darf nicht leer sein
* @param connectRetryCount Anzahl der Wiederholungen, Standardwert ist 3, mindestens 3
*/
public static void configConnectRetryCount(Context context, int connectRetryCount)
Beispielcode:
- Im Beispiel wird die Anzahl der Wiederholungsversuche auf 10 gesetzt.
Java:
MTCorePrivatesApi.configConnectRetryCount(this, 10);
Kotlin:
MTCorePrivatesApi.configConnectRetryCount(this, 10)
setTcpSSl
- Muss in der Methode Application.onCreate() aufgerufen werden.
- Bitte vor init aufrufen.
/**
* Legt fest, ob die Langzeitverbindung verschlüsselt wird, Standard ist keine Verschlüsselung.
*
* Muss in der Methode Application.onCreate() aufgerufen werden.
*
* @param isSSL true = Verschlüsselung, false = keine Verschlüsselung
*/
public static void setTcpSSl(boolean isSSL)
Beispielcode:
- Demo aktiviert Verschlüsselung.
Java:
MTCorePrivatesApi.setTcpSSl(context, true);
Kotlin:
MTCorePrivatesApi.setTcpSSl(context, true)
configDebugMode
- Muss in der Methode Application.onCreate() aufgerufen werden.
- Bitte vor init aufrufen.
- Engagelab-Log-Format, Suche nach „ENGAGELAB-PRIVATES“
- Engagelab gibt Logs sowohl im Hauptprozess als auch im Kindprozess aus.
/**
* Legt fest, ob der Debug-Modus aktiviert ist. Im Debug-Modus werden detailliertere Logs ausgegeben.
*
* Muss in der Methode Application.onCreate() aufgerufen werden.
*
* @param context darf nicht leer sein
* @param enable true = Debug-Modus aktiv, false = nicht aktiv
*/
public static void configDebugMode(Context context, boolean enable)
Beispielcode:
- Das SDK läuft in zwei Prozessen, Hauptprozess und Kindprozess. Der Name des Kindprozesses ist der Prozessattributname der MTCommonService-Subklasse.
- SDK-Log-Tag ist „ENGAGELAB-PRIVATES“.
- Die Logs zu udp/tcp/http-bezogenen Operationen befinden sich alle im Kindprozess.
- Falls Nachrichten nicht gepusht werden können, aktivieren Sie bitte zuerst den Debug-Modus, holen Sie sich dann das Log mit dem Tag „ENGAGELAB-PRIVATES“ aus dem Kindprozess und stellen Sie es dem technischen Support zur Analyse zur Verfügung.
Java:
// Es wird empfohlen, true zu setzen, solange die App nicht live ist, um die Integration zu erleichtern.
MTCorePrivatesApi.configDebugMode(context.getApplicationContext(), true);
// Nach dem Go-Live sollte auf false gesetzt werden.
MTCorePrivatesApi.configDebugMode(context.getApplicationContext(), false);
Kotlin:
// Es wird empfohlen, true zu setzen, solange die App nicht live ist, um die Integration zu erleichtern.
MTCorePrivatesApi.configDebugMode(context.applicationContext, true)
// Nach dem Go-Live sollte auf false gesetzt werden.
MTCorePrivatesApi.configDebugMode(context.applicationContext, false)
configSM4
- Muss in der Methode Application.onCreate() aufgerufen werden.
- Bitte vor init aufrufen.
/**
* Konfiguriert die Verwendung der nationalen Verschlüsselung (SM4).
*
* @param context darf nicht leer sein
*/
public static void configSM4(Context context)
Beispielcode:
Java:
// Nationale Verschlüsselung aktivieren, wenn nicht aufgerufen, wird die Standardverschlüsselung verwendet.
MTCorePrivatesApi.configSM4(context.getApplicationContext());
Kotlin:
// Nationale Verschlüsselung aktivieren, wenn nicht aufgerufen, wird die Standardverschlüsselung verwendet.
MTCorePrivatesApi.configSM4(context.applicationContext)
getUserId
Wenn der Rückgabewert leer ist, prüfen Sie bitte, ob die Umgebung korrekt konfiguriert ist und ob die Initialisierung aufgerufen wurde.
Wenn die Konfiguration korrekt ist, kann es dennoch sein, dass sich die Verbindung noch im Aufbau befindet. Sie können die UserId abfragen, wenn onConnectStatus true zurückgibt.
/**
* Gibt die userId des aktuellen Geräts zurück. Dies ist die eindeutige Kennung von Engagelab und kann für Push verwendet werden.
*
* @param context darf nicht leer sein
* @return userId
*/
public static String getUserId(Context context)
Beispielcode:
Java:
String userId = MTCorePrivatesApi.getUserId(context);
Kotlin:
val userId = MTCorePrivatesApi.getUserId(context)
getRegistrationId
Wenn der Rückgabewert leer ist, prüfen Sie bitte, ob die Umgebung korrekt konfiguriert ist und ob die Initialisierung aufgerufen wurde.
Wenn die Konfiguration korrekt ist, kann es dennoch sein, dass sich die Verbindung noch im Aufbau befindet. Sie können die RegistrationId abfragen, wenn onConnectStatus true zurückgibt.
/**
* Gibt die registrationId des aktuellen Geräts zurück. Dies ist die eindeutige Kennung von Engagelab und kann für Push verwendet werden.
*
* @param context darf nicht leer sein
* @return registrationId
*/
public static String getRegistrationId(Context context)
Beispielcode:
Java:
String registrationId = MTCorePrivatesApi.getRegistrationId(context);
Kotlin:
val registrationId = MTCorePrivatesApi.getRegistrationId(context)
setEnableResetOnDeviceChange
- Muss in der Methode Application.onCreate() aufgerufen werden.
- Bitte vor init aufrufen.
- Standard ist false (deaktiviert).
/**
* Konfiguriert die Geräte-Migrationsfunktion.
* Wenn aktiviert, werden bei einem Gerätewechsel die lokale registrationId und UID-Informationen gelöscht und neu registriert.
* Standard ist false.
*
* @param context darf nicht leer sein
* @param enable true = Geräte-Migration aktiv, false = deaktiviert
*/
public static void setEnableResetOnDeviceChange(Context context, boolean enable)
Beispielcode:
- Bei Gerätewechsel (z. B. Flashen des Geräts, Gerätewechsel usw.) werden die lokal zwischengespeicherten Registrierungsinformationen automatisch gelöscht.
Java:
// Geräte-Migrationsfunktion aktivieren
MTCorePrivatesApi.setEnableResetOnDeviceChange(this, true);
// Geräte-Migrationsfunktion deaktivieren (Standard)
MTCorePrivatesApi.setEnableResetOnDeviceChange(this, false);
Kotlin:
// Geräte-Migrationsfunktion aktivieren
MTCorePrivatesApi.setEnableResetOnDeviceChange(this, true)
// Geräte-Migrationsfunktion deaktivieren (Standard)
MTCorePrivatesApi.setEnableResetOnDeviceChange(this, false)
MTPushPrivatesApi
- Hauptsächlich für Push-Funktionen verwendet.
- Alle Methoden müssen im Hauptprozess aufgerufen werden. Bitte führen Sie vor dem Methodenaufruf keine Prozessprüfung durch, um sie in den Kindprozess zu verschieben, da sonst ein Aufruffehler auftritt.
configUserLanguage
/**
* Sprache der Push-Benachrichtigungen konfigurieren; nach MTPushPrivatesApi.init verwenden
*
* @param context darf nicht leer sein
* @param pushLanguage Bei leerer Zeichenkette wird die Gerätesprache wiederhergestellt
*/
public static void configUserLanguage(Context context, String pushLanguage)
Beispielcode:
Java:
MTPushPrivatesApi.configUserLanguage(context,"zh-Hans");
Kotlin:
MTPushPrivatesApi.configUserLanguage(context, "zh-Hans")
Unterstützte Sprachcodes siehe Push API
setEnablePushTextToSpeech
/**
* Einstellungen für die Sprachausgabe von Push-Benachrichtigungen, erfordert das Importieren des Sprachpakets (mt-sdk-sound-x.x.x.aar)
*
* @param context darf nicht leer sein
* @param enable true = aktivieren, false = deaktivieren, Standard ist false
*/
public static void setEnablePushTextToSpeech(Context context, boolean enable)
Beispielcode:
Java:
MTPushPrivatesApi.setEnablePushTextToSpeech(context, true);
Kotlin:
MTPushPrivatesApi.setEnablePushTextToSpeech(context, true)
init
- Es wird empfohlen, in der Methode Application.onCreate() aufzurufen.
/**
* Initialisierung von MTPush
*
* Es wird empfohlen, in der Methode Application.onCreate() aufzurufen.
*
* @param context darf nicht leer sein, bitte verwenden Sie das applicationContext-Objekt
*/
public static void init(Context context)
Beispielcode:
Java:
public class ExampleApplication extends Application {
@Override
public void onCreate() {
// Debug-Modus aktivieren
MTCorePrivatesApi.configDebugMode(context.getApplicationContext(), true);
// Initialisierung
MTPushPrivatesApi.init(context.getApplicationContext());
}
}
Kotlin:
class ExampleApplication : Application() {
override fun onCreate() {
super.onCreate()
// Debug-Modus aktivieren
MTCorePrivatesApi.configDebugMode(applicationContext, true)
// Initialisierung
MTPushPrivatesApi.init(applicationContext)
}
}
setCollectControl
- Steuerung der Datenerfassung festlegen
- Es wird empfohlen, diese Methode in Application.onCreate() vor dem Aufruf von init auszuführen.
/**
* Steuerung der Datenerfassung festlegen
*
* Dient zur Steuerung, ob bestimmte Gerätedaten erfasst werden.
* Es wird empfohlen, diese Methode in Application.onCreate() vor dem Aufruf von init auszuführen.
*
* @param control Objekt zur Steuerung der Datenerfassung, darf nicht null sein
*/
public static void setCollectControl(MTPushCollectControl control)
Beispielcode:
Java:
public class ExampleApplication extends Application {
@Override
public void onCreate() {
// Steuerung der Datenerfassung konfigurieren
MTPushCollectControl collectControl = new MTPushCollectControl();
collectControl.setGaid(true); // GAID-Erfassung aktivieren, false = deaktivieren. Standard ist aktiviert.
MTPushPrivatesApi.setCollectControl(collectControl);
// Initialisierung
MTPushPrivatesApi.init(context.getApplicationContext());
}
}
Kotlin:
class ExampleApplication : Application() {
override fun onCreate() {
super.onCreate()
// Configure data collection control
val collectControl = MTPushCollectControl()
collectControl.setGaid(true) // Enable GAID collection, false to disable. Enabled by default.
MTPushPrivatesApi.setCollectControl(collectControl)
// Initialization
MTPushPrivatesApi.init(applicationContext)
}
}
goToAppNotificationSettings
- Nach dem Start des SDK kann das Ergebnis über onNotificationStatus zurückgegeben werden, um zu entscheiden, ob diese Methode aufgerufen werden muss.
/**
* Öffnet die Einstellungsseite für Benachrichtigungen
*
* @param context darf nicht leer sein
*/
public static void goToAppNotificationSettings(Context context)
Beispielcode:
Java:
// Öffnet die Einstellungsseite für Benachrichtigungen. Der Kunde muss den Benachrichtigungsschalter manuell aktivieren.
MTPushPrivatesApi.goToAppNotificationSettings(this);
// Nach dem Überschreiben von MTCommonReceiver die Methode onNotificationStatus implementieren, um den Status des Benachrichtigungsschalters zu erhalten. Wenn enable true ist, wurde er erfolgreich aktiviert.
@Override
public void onNotificationStatus(Context context, boolean enable) {
if(enable){
// Der Benachrichtigungsschalter wurde aktiviert
}
}
Kotlin:
// Go to the notification switch setting page, the customer needs to manually turn on the notification switch
MTPushPrivatesApi.goToAppNotificationSettings(this)
// After inheriting MTCommonReceiver, rewrite the onNotificationStatus method to obtain the status of the notification switch. If enable is true, it means that it has been successfully enabled
override fun onNotificationStatus(context: Context, enable: Boolean) {
if (enable) {
// The notification switch has been set to open
}
}
turnOnPush
- Wird in der Regel nach turnOffPush verwendet, um Push wieder zu aktivieren.
- Mehrfaches Aufrufen hat nur einmal Wirkung; wenn bereits aktiviert, bleibt der Status unverändert.
- Bei korrekter Umgebung wird das Ergebnis über onConnectStatus zurückgegeben.
- Unterstützte Kanäle: Engagelab/Huawei/Xiaomi/Meizu/Oppo/Vivo
/**
* Push aktivieren, der Status wird persistent auf true gesetzt, Standard ist true.
*
* @param context darf nicht leer sein
*/
public static void turnOnPush(Context context)
Beispielcode:
Java:
// Push aktivieren (Standard ist aktiviert)
MTPushPrivatesApi.turnOnPush(context);
// Nach dem Überschreiben von MTCommonReceiver die Methode onConnectStatus implementieren, um den Status der Langzeitverbindung zu erhalten. Wenn enable true ist, wurde Push erfolgreich aktiviert.
@Override
public void onConnectStatus(Context context, boolean enable){
if(enable){
// Push erfolgreich aktiviert
}
}
Kotlin:
// Turn on the push, which is turned on by default
MTPushPrivatesApi.turnOnPush(context)
// After inheriting MTCommonReceiver, rewrite the onConnectStatus method to obtain the connection status of the long connection. If enable is true, it means that it has been successfully opened
override fun onConnectStatus(context: Context, enable: Boolean) {
if (enable) {
// enable push push successfully
}
}
turnOffPush
- Wird in der Regel verwendet, um Push zu deaktivieren.
- Nach dem Deaktivieren wird Push durch erneutes Aufrufen von init nicht automatisch aktiviert.
- Mehrfaches Aufrufen hat nur einmal Wirkung.
- Bei korrekter Umgebung wird das Ergebnis über onConnectStatus zurückgegeben.
- Unterstützte Kanäle: Engagelab/Huawei/Xiaomi/Meizu/Oppo/Vivo
/**
* Push deaktivieren, der Status wird persistent auf false gesetzt, Standard ist true.
*
* @param context darf nicht leer sein
*/
public static void turnOffPush(Context context)
Beispielcode:
Java:
// Push deaktivieren, zum erneuten Aktivieren muss turnOnPush aufgerufen werden
MTPushPrivatesApi.turnOffPush(context);
// Nach dem Überschreiben von MTCommonReceiver die Methode onConnectStatus implementieren, um den Status der Langzeitverbindung zu erhalten. Wenn enable false ist, wurde Push erfolgreich deaktiviert.
@Override
public void onConnectStatus(Context context, boolean enable){
if(!enable){
// Push erfolgreich deaktiviert
}
}
Kotlin:
// Turn off the push, you need to call turnOnPush again to turn on the push
MTPushPrivatesApi.turnOffPush(context)
// After inheriting MTCommonReceiver, rewrite the onConnectStatus method to get the long connection status. If enable is false, it means that it has been closed successfully
override fun onConnectStatus(context: Context, enable: Boolean) {
if (!enable) {
// close push push successfully
}
}
addTag
- Bitte zuerst init aufrufen, sonst ist der Aufruf ungültig.
- Bei korrekter Umgebung wird das Ergebnis über onTagMessage zurückgegeben.
/**
* Fügt ein angegebenes Tag hinzu, Akkumulationslogik: vorherige Tags bleiben erhalten.
*
* @param context darf nicht leer sein
* @param sequence Benutzerdefinierte Operationssequenznummer, wird zusammen mit dem Ergebnis zurückgegeben, zur Identifikation der Operation
* @param tags Tag-Array, Länge jedes Tag-Namens max. 40 Bytes, max. 1000 Tags, Gesamtlänge pro Vorgang max. 5000 Bytes
*/
public static void addTag(Context context, int sequence, String... tags)
Beispielcode:
Java:
// Konstante für das Hinzufügen von Tags
private static final int SEQUENCE_TAG_ADD = 1;
// Tags hinzufügen: "china", "guangdong", "shenzhen"
MTPushPrivatesApi.addTag(context, SEQUENCE_TAG_ADD, "china", "guangdong", "shenzhen");
// Nach dem Überschreiben von MTCommonReceiver die Methode onTagMessage implementieren, um das Callback zu erhalten
@Override
public void onTagMessage(Context context, TagMessage tagMessage){
if(tagMessage.getCode != MTPushPrivatesApi.Code.Success){
// Tag-Operation fehlgeschlagen, Details siehe MTPushPrivatesApi.Code
return;
}
if(tagMessage.getSequence() == SEQUENCE_TAG_ADD){
// Tag erfolgreich hinzugefügt. Erfolgreiche Tags können jetzt abgerufen werden.
String[] tags = tagMessage.getTags();
}
}
Kotlin:
// Define a constant here, which represents adding the specified tag operation
companion object {
private const val SEQUENCE_TAG_ADD = 1
}
// Add tags: "china","guangdong","shenzhen"
MTPushPrivatesApi.addTag(context, SEQUENCE_TAG_ADD, "china", "guangdong", "shenzhen")
// After inheriting MTCommonReceiver, override the onTagMessage method to get the tag operation callback
override fun onTagMessage(context: Context, tagMessage: TagMessage) {
if (tagMessage.code != MTPushPrivatesApi.Code.SUCCESS) {
// tag operation failed, detailed error information can be found in MTPushPrivatesApi.Code
return
}
if (tagMessage.sequence == SEQUENCE_TAG_ADD) {
// The specified tag is added successfully. At this time, you can view the tag array of the successful operation
val tags = tagMessage.tags
}
}
deleteTag
- Bitte zuerst init aufrufen, sonst ist der Aufruf ungültig.
- Bei korrekter Umgebung wird das Ergebnis über onTagMessage zurückgegeben.
/**
* Löscht das angegebene Tag, Löschlogik: Das angegebene Tag wird entfernt.
*
* @param context darf nicht leer sein
* @param sequence Benutzerdefinierte Operationssequenznummer, wird zusammen mit dem Ergebnis zurückgegeben, zur Identifikation der Operation
* @param tags Tag-Array, Länge jedes Tag-Namens max. 40 Bytes, max. 1000 Tags, Gesamtlänge pro Vorgang max. 5000 Bytes
*/
public static void deleteTag(Context context, int sequence, String... tags)
Beispielcode:
Java:
// Konstante für das Löschen von Tags
private static final int SEQUENCE_TAG_DELETE = 2;
// Tags löschen: "china", "guangdong", "shenzhen"
MTPushPrivatesApi.deleteTag(context, SEQUENCE_TAG_DELETE, "china", "guangdong", "shenzhen");
// Nach dem Überschreiben von MTCommonReceiver die Methode onTagMessage implementieren, um das Callback zu erhalten
@Override
public void onTagMessage(Context context, TagMessage tagMessage){
if(tagMessage.getCode != MTPushPrivatesApi.Code.Success){
// Tag-Operation fehlgeschlagen, Details siehe MTPushPrivatesApi.Code
return;
}
if(tagMessage.getSequence() == SEQUENCE_TAG_DELETE){
// Tag erfolgreich gelöscht
String[] tags = tagMessage.getTags();
}
}
Kotlin:
// Define a constant here, which represents the operation of deleting the specified tag
companion object {
private const val SEQUENCE_TAG_DELETE = 2
}
// Delete tags: "china","guangdong","shenzhen"
MTPushPrivatesApi.deleteTag(context, SEQUENCE_TAG_DELETE, "china", "guangdong", "shenzhen")
// After inheriting MTCommonReceiver, override the onTagMessage method to get the tag operation callback
override fun onTagMessage(context: Context, tagMessage: TagMessage) {
if (tagMessage.code != MTPushPrivatesApi.Code.SUCCESS) {
// tag operation failed, detailed error information can be found in MTPushPrivatesApi.Code
return
}
if (tagMessage.sequence == SEQUENCE_TAG_DELETE) {
// Delete the specified tag successfully, at this time, you can view the tag array of the successful operation
val tags = tagMessage.tags
}
}
updateTag
- Bitte zuerst init aufrufen, sonst ist der Aufruf ungültig.
- Bei korrekter Umgebung wird das Ergebnis über onTagMessage zurückgegeben.
/**
* Aktualisiert das angegebene Tag, Überschreiblogik: Vorherige Tags werden entfernt.
*
* @param context darf nicht leer sein
* @param sequence Benutzerdefinierte Operationssequenznummer, wird zusammen mit dem Ergebnis zurückgegeben, zur Identifikation der Operation
* @param tags Tag-Array, Länge jedes Tag-Namens max. 40 Bytes, max. 1000 Tags, Gesamtlänge pro Vorgang max. 5000 Bytes
*/
public static void updateTag(Context context, int sequence, String... tags)
Beispielcode:
Java:
// Konstante für das Aktualisieren von Tags
private static final int SEQUENCE_TAG_UPDATE = 3;
// Tags aktualisieren: "beijing", "shanghai", "guangzhou", "shenzhen" (vorherige Tags werden ungültig)
MTPushPrivatesApi.updateTag(context, SEQUENCE_TAG_UPDATE, "beijing", "shanghai", "guangzhou", "shenzhen");
// Nach dem Überschreiben von MTCommonReceiver die Methode onTagMessage implementieren, um das Callback zu erhalten
@Override
public void onTagMessage(Context context, TagMessage tagMessage){
if(tagMessage.getCode != MTPushPrivatesApi.Code.Success){
// Tag-Operation fehlgeschlagen, Details siehe MTPushPrivatesApi.Code
return;
}
if(tagMessage.getSequence() == SEQUENCE_TAG_UPDATE){
// Tag erfolgreich aktualisiert
String[] tags = tagMessage.getTags();
}
}
Kotlin:
// Define a constant here, which represents the operation of updating the specified tag
companion object {
private const val SEQUENCE_TAG_UPDATE = 3
}
// Update tag: "beijing","shanghai","guangzhou","shenzhen", the previously set tag will be invalid
MTPushPrivatesApi.updateTag(context, SEQUENCE_TAG_UPDATE, "beijing", "shanghai", "guangzhou", "shenzhen")
// After inheriting MTCommonReceiver, override the onTagMessage method to get the tag operation callback
override fun onTagMessage(context: Context, tagMessage: TagMessage) {
if (tagMessage.code != MTPushPrivatesApi.Code.SUCCESS) {
// tag operation failed, detailed error information can be found in MTPushPrivatesApi.Code
return
}
if (tagMessage.sequence == SEQUENCE_TAG_UPDATE) {
// Update the specified tag successfully, and you can view the tag array with successful operation at this time
val tags = tagMessage.tags
}
}
queryTag
- Bitte zuerst init aufrufen, sonst ist der Aufruf ungültig.
- Bei korrekter Umgebung wird das Ergebnis über onTagMessage zurückgegeben.
/**
* Abfrage eines bestimmten Tags.
*
* @param context darf nicht leer sein
* @param sequence Benutzerdefinierte Operationssequenznummer, wird zusammen mit dem Ergebnis zurückgegeben, zur Identifikation der Operation
* @param tag Tag-Name, max. 40 Bytes
*/
public static void queryTag(Context context, int sequence, String tag)
Beispielcode:
Java:
// Konstante für die Abfrage eines Tags
private static final int SEQUENCE_TAG_QUERY = 4;
// Tag abfragen
MTPushPrivatesApi.queryTag(context, SEQUENCE_TAG_QUERY, "china");
// Nach dem Überschreiben von MTCommonReceiver die Methode onTagMessage implementieren, um das Callback zu erhalten
@Override
public void onTagMessage(Context context, TagMessage tagMessage){
if(tagMessage.getCode != MTPushPrivatesApi.Code.Success){
// Tag-Operation fehlgeschlagen, Details siehe MTPushPrivatesApi.Code
return;
}
if(tagMessage.getSequence() == SEQUENCE_TAG_QUERY){
// Tag erfolgreich abgefragt
String tag = tagMessage.getQueryTag();
boolean valid = tagMessage.isQueryTagValid();
}
}
Kotlin:
// Define a constant here, which represents the query specified tag operation
companion object {
private const val SEQUENCE_TAG_QUERY = 4
}
// query label
MTPushPrivatesApi.queryTag(context, SEQUENCE_TAG_QUERY, "china")
// After inheriting MTCommonReceiver, override the onTagMessage method to get the tag operation callback
override fun onTagMessage(context: Context, tagMessage: TagMessage) {
if (tagMessage.code != MTPushPrivatesApi.Code.SUCCESS) {
// tag operation failed, detailed error information can be found in MTPushPrivatesApi.Code
return
}
if (tagMessage.sequence == SEQUENCE_TAG_QUERY) {
// Query the specified tag successfully, at this time, you can view the tag and status of the successful operation
val tag = tagMessage.queryTag
val valid = tagMessage.isQueryTagValid
}
}
deleteAllTag
- Bitte zuerst init aufrufen, sonst ist der Aufruf ungültig.
- Bei korrekter Umgebung wird das Ergebnis über onTagMessage zurückgegeben.
/**
* Löscht alle Tags, Löschlogik: Alle Tags werden entfernt.
*
* @param context darf nicht leer sein
* @param sequence Benutzerdefinierte Operationssequenznummer, wird zusammen mit dem Ergebnis zurückgegeben, zur Identifikation der Operation
*/
public static void deleteAllTag(Context context, int sequence, String... tags)
Beispielcode:
Java:
// Konstante für das Löschen aller Tags
private static final int SEQUENCE_TAG_DELETE_ALL = 5;
// Alle Tags löschen
MTPushPrivatesApi.deleteTag(context, SEQUENCE_TAG_DELETE_ALL);
// Nach dem Überschreiben von MTCommonReceiver die Methode onTagMessage implementieren, um das Callback zu erhalten
@Override
public void onTagMessage(Context context, TagMessage tagMessage){
if(tagMessage.getCode != MTPushPrivatesApi.Code.Success){
// Tag-Operation fehlgeschlagen, Details siehe MTPushPrivatesApi.Code
return;
}
if(tagMessage.getSequence() == SEQUENCE_TAG_DELETE_ALL){
// Alle Tags erfolgreich gelöscht
}
}
Kotlin:
// Define a constant here to represent delete all tag operations
companion object {
private const val SEQUENCE_TAG_DELETE_ALL = 5
}
// remove all tags
MTPushPrivatesApi.deleteAllTag(context, SEQUENCE_TAG_DELETE_ALL)
// After inheriting MTCommonReceiver, override the onTagMessage method to get the tag operation callback
override fun onTagMessage(context: Context, tagMessage: TagMessage) {
if (tagMessage.code != MTPushPrivatesApi.Code.SUCCESS) {
// tag operation failed, detailed error information can be found in MTPushPrivatesApi.Code
return
}
if (tagMessage.sequence == SEQUENCE_TAG_DELETE_ALL) {
// delete all tags successfully
}
}
queryAllTag
- Bitte zuerst init aufrufen, sonst ist der Aufruf ungültig.
- Bei korrekter Umgebung wird das Ergebnis über onTagMessage zurückgegeben.
/**
* Alle Tags abfragen.
*
* @param context darf nicht leer sein
* @param sequence Benutzerdefinierte Operationssequenznummer, wird zusammen mit dem Ergebnis zurückgegeben, zur Identifikation der Operation
*/
public static void queryAllTag(Context context, int sequence, String... tags)
Beispielcode:
Java:
// Konstante für die Abfrage aller Tags
private static final int SEQUENCE_TAG_QUERY_ALL = 6;
// Alle Tags abfragen
MTPushPrivatesApi.queryAllTag(context, SEQUENCE_TAG_QUERY_ALL);
// Nach dem Überschreiben von MTCommonReceiver die Methode onTagMessage implementieren, um das Callback zu erhalten
@Override
public void onTagMessage(Context context, TagMessage tagMessage){
if(tagMessage.getCode != MTPushPrivatesApi.Code.Success){
// Tag-Operation fehlgeschlagen, Details siehe MTPushPrivatesApi.Code
return;
}
if(tagMessage.getSequence() == SEQUENCE_TAG_DELETE_ALL){
// Alle Tags erfolgreich abgefragt
String[] tags = tagMessage.getTags();
}
}
Kotlin:
// Define a constant here, which represents querying all tag operations
companion object {
private const val SEQUENCE_TAG_QUERY_ALL = 6
}
// query all tags
MTPushPrivatesApi.queryAllTag(context, SEQUENCE_TAG_QUERY_ALL)
// After inheriting MTCommonReceiver, override the onTagMessage method to get the tag operation callback
override fun onTagMessage(context: Context, tagMessage: TagMessage) {
if (tagMessage.code != MTPushPrivatesApi.Code.SUCCESS) {
// The tag operation failed, for detailed error information, please refer to MTPushPrivatesApi.Code
return
}
if (tagMessage.sequence == SEQUENCE_TAG_QUERY_ALL) {
// Query all tags successfully, at this time, you can view the tag array with successful operation
val tags = tagMessage.tags
}
}
setAlias
- Bitte zuerst init aufrufen, sonst ist der Aufruf ungültig.
- Bei korrekter Umgebung wird das Ergebnis über onAliasMessage zurückgegeben.
/**
* Alias setzen
*
* Es wird empfohlen, für unterschiedliche Nutzer:innen in derselben App unterschiedliche Aliase zu verwenden, um eine eindeutige Identifikation zu gewährleisten.
*
* Alias nicht auf eine:n Nutzer:in beschränken.
*
* @param context darf nicht leer sein
* @param sequence Benutzerdefinierte Operationssequenznummer, wird zusammen mit dem Ergebnis zurückgegeben, zur Identifikation der Operation
* @param alias Gültige Alias-Zeichen: Buchstaben (Groß-/Kleinschreibung), Zahlen, Unterstrich, chinesische Zeichen, Sonderzeichen @!#$&*+=.|. Einschränkung: Max. 40 Bytes (UTF-8)
*/
public static void setAlias(Context context, int sequence, String alias)
Beispielcode:
Java:
// Konstante für das Setzen eines Alias
private static final int SEQUENCE_ALIAS_SET = 7;
// Alias setzen: "young"
MTPushPrivatesApi.setAlias(context, SEQUENCE_ALIAS_SET, "young");
// Nach dem Überschreiben von MTCommonReceiver die Methode onAliasMessage implementieren, um das Callback zu erhalten
@Override
public void onAliasMessage(Context context, AliasMessage aliasMessage){
if(aliasMessage.getCode != MTPushPrivatesApi.Code.Success){
// Alias-Operation fehlgeschlagen, Details siehe MTPushPrivatesApi.Code
return;
}
if(aliasMessage.getSequence() == SEQUENCE_ALIAS_SET){
// Alias erfolgreich gesetzt
String alias = aliasMessage.getAlias();
}
}
Kotlin:
// Define a constant here, which represents setting alias operation
companion object {
private const val SEQUENCE_ALIAS_SET = 7
}
// Set alias: "young"
MTPushPrivatesApi.setAlias(context, SEQUENCE_ALIAS_SET, "young")
// After inheriting MTCommonReceiver, override the onAliasMessage method to get the alias operation callback
override fun onAliasMessage(context: Context, aliasMessage: AliasMessage) {
if (aliasMessage.code != MTPushPrivatesApi.Code.SUCCESS) {
// The alias operation failed, for detailed error information, please refer to MTPushPrivatesApi.Code
return
}
if (aliasMessage.sequence == SEQUENCE_ALIAS_SET) {
// The alias is set successfully, and you can view the alias of the successful operation at this time
val alias = aliasMessage.alias
}
}
getAlias
- Bitte zuerst init aufrufen, sonst ist der Aufruf ungültig.
- Bei korrekter Umgebung wird das Ergebnis über onAliasMessage zurückgegeben.
/**
* Alias abfragen
*
* Es wird empfohlen, für unterschiedliche Nutzer:innen in derselben App unterschiedliche Aliase zu verwenden, um eine eindeutige Identifikation zu gewährleisten.
*
* Alias nicht auf eine:n Nutzer:in beschränken.
*
* @param context darf nicht leer sein
* @param sequence Benutzerdefinierte Operationssequenznummer, wird zusammen mit dem Ergebnis zurückgegeben, zur Identifikation der Operation
*/
public static void getAlias(Context context, int sequence)
Beispielcode:
Java:
// Konstante für das Abfragen eines Alias
private static final int SEQUENCE_ALIAS_GET = 8;
// Alias abfragen
MTPushPrivatesApi.getAlias(context, SEQUENCE_ALIAS_GET);
// Nach dem Überschreiben von MTCommonReceiver die Methode onAliasMessage implementieren, um das Callback zu erhalten
@Override
public void onAliasMessage(Context context, AliasMessage aliasMessage){
if(aliasMessage.getCode != MTPushPrivatesApi.Code.Success){
// Alias-Operation fehlgeschlagen, Details siehe MTPushPrivatesApi.Code
return;
}
if(aliasMessage.getSequence() == SEQUENCE_ALIAS_GET){
// Alias erfolgreich abgefragt
String alias = aliasMessage.getAlias();
}
}
Kotlin:
// Define a constant here, which represents the operation of obtaining alias
companion object {
private const val SEQUENCE_ALIAS_GET = 8
}
// get alias
MTPushPrivatesApi.getAlias(context, SEQUENCE_ALIAS_GET)
// After inheriting MTCommonReceiver, override the onAliasMessage method to get the alias operation callback
override fun onAliasMessage(context: Context, aliasMessage: AliasMessage) {
if (aliasMessage.code != MTPushPrivatesApi.Code.SUCCESS) {
// The alias operation failed, for detailed error information, please refer to MTPushPrivatesApi.Code
return
}
if (aliasMessage.sequence == SEQUENCE_ALIAS_GET) {
// Get the alias successfully, you can view the alias of the successful operation at this time
val alias = aliasMessage.alias
}
}
clearAlias
- Bitte zuerst init aufrufen, sonst ist der Aufruf ungültig.
- Bei korrekter Umgebung wird das Ergebnis über onAliasMessage zurückgegeben.
/**
* Alias löschen
*
* Es wird empfohlen, für unterschiedliche Nutzer:innen in derselben App unterschiedliche Aliase zu verwenden, um eine eindeutige Identifikation zu gewährleisten.
*
* Alias nicht auf eine:n Nutzer:in beschränken.
*
* @param context darf nicht leer sein
* @param sequence Benutzerdefinierte Operationssequenznummer, wird zusammen mit dem Ergebnis zurückgegeben, zur Identifikation der Operation
*/
public static void clearAlias(Context context, int sequence)
Beispielcode:
Java:
// Konstante für das Löschen eines Alias
private static final int SEQUENCE_ALIAS_CLEAR = 7;
// Alias löschen
MTPushPrivatesApi.clearAlias(context, SEQUENCE_ALIAS_CLEAR);
// Nach dem Überschreiben von MTCommonReceiver die Methode onAliasMessage implementieren, um das Callback zu erhalten
@Override
public void onAliasMessage(Context context, AliasMessage aliasMessage){
if(aliasMessage.getCode != MTPushPrivatesApi.Code.Success){
// Alias-Operation fehlgeschlagen, Details siehe MTPushPrivatesApi.Code
return;
}
if(aliasMessage.getSequence() == SEQUENCE_ALIAS_CLEAR){
// Alias erfolgreich gelöscht
}
}
Kotlin:
// Define a constant here to represent clear alias operation
companion object {
private const val SEQUENCE_ALIAS_CLEAR = 9
}
// clear aliases
MTPushPrivatesApi.clearAlias(context, SEQUENCE_ALIAS_CLEAR)
// After inheriting MTCommonReceiver, override the onAliasMessage method to get the alias operation callback
override fun onAliasMessage(context: Context, aliasMessage: AliasMessage) {
if (aliasMessage.code != MTPushPrivatesApi.Code.SUCCESS) {
// The alias operation failed, for detailed error information, please refer to MTPushPrivatesApi.Code
return
}
if (aliasMessage.sequence == SEQUENCE_ALIAS_CLEAR) {
// Clear alias successfully
}
}
setNotificationShowTime
- Bitte zuerst init aufrufen, sonst ist der Aufruf ungültig.
- Unterstützte Kanäle: Engagelab-Kanal/Google-Kanal, wenn die App im Vordergrund ist (Anzeige durch Engagelab).
/**
* Legt die Anzeigedauer von Benachrichtigungen fest. Standardmäßig werden Benachrichtigungen jederzeit angezeigt.
*
* @param context darf nicht leer sein
* @param beginHour Startzeit (24-Stunden-Format, Bereich 0 bis 23)
* @param endHour Endzeit (24-Stunden-Format, Bereich 0 bis 23), beginHour darf nicht größer oder gleich endHour sein
* @param weekDays Wochentags-Array (7-Tage-System, Werte 1 bis 7), leeres Array = keine Anzeige
*/
public static void setNotificationShowTime(Context context, int beginHour, int endHour, int... weekDays)
Beispielcode:
Java:
// Benachrichtigungen werden wöchentlich von 9 bis 21 Uhr an den Tagen 1/3/5/7 angezeigt
MTPushPrivatesApi.setNotificationShowTime(context, 9, 21, 1, 3, 5, 7);
Kotlin:
// Set the notification display time from 9 am to 9 pm on 1/3/5/7 every week
MTPushPrivatesApi.setNotificationShowTime(context, 9, 21, 1, 3, 5, 7)
resetNotificationShowTime
- Bitte zuerst init aufrufen, sonst ist der Aufruf ungültig.
- Unterstützte Kanäle: Engagelab-Kanal/Google-Kanal, wenn die App im Vordergrund ist (Anzeige durch Engagelab).
/**
* Setzt die Anzeigedauer von Benachrichtigungen zurück, Standard ist jederzeitige Anzeige.
*
* @param context darf nicht leer sein
*/
public static void resetNotificationShowTime(Context context)
Beispielcode:
Java:
// Setzt die Anzeigedauer für Benachrichtigungen zurück (Standard: jederzeit)
MTPushPrivatesApi.resetNotificationShowTime(context);
Kotlin:
// Reset the notification display time, which is displayed at any time by default
MTPushPrivatesApi.resetNotificationShowTime(context)
setNotificationSilenceTime
- Bitte zuerst init aufrufen, sonst ist der Aufruf ungültig.
- Unterstützte Kanäle: Engagelab-Kanal/Google-Kanal, wenn die App im Vordergrund ist (Anzeige durch Engagelab).
/**
* Legt die Ruhezeit für Benachrichtigungen fest, Standard ist keine Ruhezeit.
*
* @param context darf nicht leer sein
* @param beginHour Startzeit der Ruhezeit (24-Stunden-Format, Bereich 0 bis 23)
* @param beginMinute Startminute der Ruhezeit (Bereich 0 bis 59)
* @param endHour Endzeit der Ruhezeit (24-Stunden-Format, Bereich 0 bis 23)
* @param endMinute Endminute der Ruhezeit (Bereich 0 bis 59)
*/
public static void setNotificationSilenceTime(Context context, int beginHour, int beginMinute, int endHour, int endMinute)
Beispielcode:
Java:
// Ruhezeit von 21:30 Uhr bis 9:30 Uhr am nächsten Tag
MTPushPrivatesApi.setNotificationSilenceTime(context, 21, 30, 9, 30);
Kotlin:
// Set the notification silent time from 9:30 p.m. to 9:30 a.m. the next day
MTPushPrivatesApi.setNotificationSilenceTime(context, 21, 30, 9, 30)
resetNotificationSilenceTime
- Bitte zuerst init aufrufen, sonst ist der Aufruf ungültig.
- Unterstützte Kanäle: Engagelab-Kanal/Google-Kanal, wenn die App im Vordergrund ist (Anzeige durch Engagelab).
/**
* Setzt die Ruhezeit für Benachrichtigungen zurück, Standard ist keine Ruhezeit.
*
* @param context darf nicht leer sein
*/
public static void resetNotificationSilenceTime(Context context)
Beispielcode:
Java:
// Ruhezeit für Benachrichtigungen zurücksetzen (Standard: keine Ruhezeit)
MTPushPrivatesApi.resetNotificationSilenceTime(context);
Kotlin:
// Reset the notification silent time, the default is not silent at any time
MTPushPrivatesApi.resetNotificationSilenceTime(context)
setNotificationLayout
- Bitte zuerst init aufrufen, sonst ist der Aufruf ungültig.
- Unterstützte Kanäle: Engagelab-Kanal
/**
* Legt ein benutzerdefiniertes Benachrichtigungs-Layout fest, Standard ist das Systemlayout.
*
* @param context darf nicht leer sein
* @param builderId Build-ID
* @param notificationLayout Objekt für benutzerdefiniertes Layout, darf nicht leer sein
*/
public static void setNotificationLayout(Context context, int builderId, NotificationLayout notificationLayout)
Beispielcode:
Java:
// Konstante für die Build-ID
private static final int BUILDER_ID = 11;
// NotificationLayout erstellen
NotificationLayout notificationLayout = new NotificationLayout()
.setLayoutId(R.layout.custom_notification_layout)
.setIconViewId(R.id.iv_notification_icon)
.setIconResourceId(R.drawable.mtpush_notification_icon)
.setTitleViewId(R.id.tv_notification_title)
.setContentViewId(R.id.tv_notification_content)
.setTimeViewId(R.id.tv_notification_time);
// Benutzerdefiniertes Layout mit Build-ID festlegen
MTPushPrivatesApi.setNotificationLayout(this.getApplicationContext(), BUILDER_ID, notificationLayout);
Kotlin:
// Define a constant here, representing the build id
companion object {
private const val BUILDER_ID = 11
}
// Build a notificationLayout
val notificationLayout = NotificationLayout()
.setLayoutId(R.layout.custom_notification_layout) // layout layout_id
.setIconViewId(R.id.iv_notification_icon) // notification icon view_id
.setIconResourceId(R.drawable.mtpush_notification_icon) // notification icon source_id
.setTitleViewId(R.id.tv_notification_title) // notification title view_id
.setContentViewId(R.id.tv_notification_content) // notification content view_id
.setTimeViewId(R.id.tv_notification_time) // notification time view_id
// Set the custom layout with the build id as BUILDER_ID, and specify builderId as BUILDER_ID when sending the notification to change the layout of the notification
MTPushPrivatesApi.setNotificationLayout(applicationContext, BUILDER_ID, notificationLayout)
resetNotificationLayout
- Bitte zuerst init aufrufen, sonst ist der Aufruf ungültig.
- Unterstützte Kanäle: Engagelab-Kanal
/**
* Setzt das benutzerdefinierte Benachrichtigungs-Layout zurück, Standard ist das Systemlayout.
*
* @param context darf nicht leer sein
* @param builderId ID des benutzerdefinierten Layouts
*/
public static void resetNotificationLayout(Context context, int builderId)
Beispielcode:
Java:
// Konstante für die Build-ID
private static final int BUILDER_ID = 11;
// Benutzerdefiniertes Layout mit Build-ID zurücksetzen (Systemlayout verwenden)
MTPushPrivatesApi.resetNotificationLayout(context, BUILDER_ID);
Kotlin:
// Define a constant here, representing the build id
companion object {
private const val BUILDER_ID = 11
}
// Reset the custom layout with build id as BUILDER_ID, specify builderId as BUILDER_ID when sending the notification, and use the system default layout
MTPushPrivatesApi.resetNotificationLayout(context, BUILDER_ID)
setNotificationCount
- Bitte zuerst init aufrufen, sonst ist der Aufruf ungültig.
- Unterstützte Kanäle: Engagelab-Kanal/Google-Kanal, wenn die App im Vordergrund ist (Anzeige durch Engagelab).
/**
* Legt die Anzahl der Benachrichtigungen in der Benachrichtigungsleiste fest, Standard ist 5.
*
* @param context darf nicht leer sein
* @param count Begrenzung der Anzahl, bei Überschreitung wird die älteste Benachrichtigung entfernt, darf nicht <= 0 sein
*/
public static void setNotificationCount(Context context, int count)
Beispielcode:
Java:
// Anzahl der Benachrichtigungen auf 50 setzen
MTPushPrivatesApi.setNotificationCount(context, 50);
Kotlin:
// Set the number of notifications in the notification bar to 50
MTPushPrivatesApi.setNotificationCount(context, 50)
resetNotificationCount
- Bitte zuerst init aufrufen, sonst ist der Aufruf ungültig.
- Unterstützte Kanäle: Engagelab-Kanal/Google-Kanal, wenn die App im Vordergrund ist (Anzeige durch Engagelab).
/**
* Setzt die Anzahl der Benachrichtigungen in der Benachrichtigungsleiste zurück, Standard ist 5.
*
* @param context darf nicht leer sein
*/
public static void resetNotificationCount(Context context)
Beispielcode:
Java:
// Anzahl der Benachrichtigungen zurücksetzen (Standard: 5)
MTPushPrivatesApi.resetNotificationCount(context);
Kotlin:
// Reset the number of notifications in the notification bar, the default number is 5
MTPushPrivatesApi.resetNotificationCount(context)
setNotificationBadge
- Bitte zuerst init aufrufen, sonst ist der Aufruf ungültig.
/**
* Legt die Anzahl der App-Badges fest, Standard ist 0 (nur für Huawei/Honor gültig).
*
* @param context darf nicht leer sein
* @param badge Anzahl der App-Badges
*/
public static void setNotificationBadge(Context context, int badge)
Beispielcode:
Java:
// Anzahl der App-Badges auf 1 setzen
MTPushPrivatesApi.setNotificationBadge(context, 1);
Kotlin:
// Set the number of application badges to 1
MTPushPrivatesApi.setNotificationBadge(context, 1)
resetNotificationBadge
- Bitte zuerst init aufrufen, sonst ist der Aufruf ungültig.
/**
* Setzt die Anzahl der App-Badges zurück, Standard ist 0 (nur für Huawei/Honor gültig).
*
* @param context darf nicht leer sein
*/
public static void resetNotificationBadge(Context context)
Beispielcode:
Java:
// Anzahl der App-Badges zurücksetzen (Standard: 0)
MTPushPrivatesApi.resetNotificationBadge(context);
Kotlin:
// Reset the number of application badges, the default is 0
MTPushPrivatesApi.resetNotificationBadge(context)
showNotification
- Bitte zuerst init aufrufen, sonst ist der Aufruf ungültig.
/**
* Benachrichtigung anzeigen
*
* @param context darf nicht leer sein
* @param notificationMessage Benachrichtigungsobjekt, darf nicht leer sein
*/
public static void showNotification(Context context, NotificationMessage notificationMessage)
Beispielcode:
Java:
// Grundlegende Benachrichtigung erstellen (messageId und content erforderlich)
NotificationMessage notificationMessage = new NotificationMessage()
.setMessageId("12345")
.setNotificationId(12345)
.setTitle("custom_notification_title")
.setContent("custom_notification_content");
// Benachrichtigung anzeigen
MTPushPrivatesApi.showNotification(context, notificationMessage);
Kotlin:
// Build a basic notification, where messageId and content are required, otherwise the notification cannot be displayed
val notificationMessage = NotificationMessage()
.setMessageId("12345")
.setNotificationId(12345)
.setTitle("custom_notification_title")
.setContent("custom_notification_content")
// display notification
MTPushPrivatesApi.showNotification(context, notificationMessage)
clearNotification
- Bitte zuerst init aufrufen, sonst ist der Aufruf ungültig.
/**
* Löscht die Benachrichtigung mit der angegebenen notifyId
*
* @param context darf nicht leer sein
* @param notifyId Benachrichtigungs-ID
*/
public static void clearNotification(Context context, int notifyId)
Beispielcode:
Java:
// Benachrichtigung mit der angegebenen notifyId löschen
MTPushPrivatesApi.clearNotification(context, 12345);
Kotlin:
// Clear the notification with the specified notifyId
MTPushPrivatesApi.clearNotification(context, 12345)
reportNotificationArrived
- Bitte zuerst init aufrufen, sonst ist der Aufruf ungültig.
- Wenn kein Engagelab-Herstellerpaket integriert ist, aber Engagelab die Zustellrate erfassen soll, bitte diese Schnittstelle aufrufen.
/**
* Meldet das Eintreffen der Herstellerbenachrichtigung.
*
* HTTP/HTTPS wird verwendet.
*
* @param context darf nicht leer sein
* @param messageId Engagelab messageId, darf nicht leer sein
* @param platform Hersteller (1:mi, 2:huawei, 3:meizu, 4:oppo, 5:vivo, 7:honor, 8:google)
* @param platformMessageId Hersteller messageId, optional
*/
public static void reportNotificationArrived(Context context, String messageId, byte platform, String platformMessageId)
Beispielcode:
Java:
// Meldet das Eintreffen der Herstellerbenachrichtigung, messageId: "12345", Hersteller: Xiaomi, Hersteller messageId: "MI-6476RHT25"
MTPushPrivatesApi.reportNotificationArrived(context, "12345", MTPushPrivatesApi.PLATFORM_XIAOMI, "MI-6476RHT25");
Kotlin:
// Report the arrival of the manufacturer's notification, the messageId is "12345", the manufacturer is Xiaomi, and the manufacturer's messageId is "MI-6476RHT25"
MTPushPrivatesApi.reportNotificationArrived(context, "12345", MTPushPrivatesApi.PLATFORM_XIAOMI, "MI-6476RHT25")
reportNotificationClicked
- Bitte zuerst init aufrufen, sonst ist der Aufruf ungültig.
- Wenn kein Engagelab-Herstellerpaket integriert ist, aber Engagelab die Klickrate erfassen soll, bitte diese Schnittstelle aufrufen.
/**
* Meldet den Klick auf die Herstellerbenachrichtigung.
*
* HTTP/HTTPS wird verwendet.
*
* @param context darf nicht leer sein
* @param messageId Engagelab messageId, darf nicht leer sein
* @param platform Hersteller (1:mi, 2:huawei, 3:meizu, 4:oppo, 5:vivo, 7:honor, 8:google)
* @param platformMessageId Hersteller messageId, optional
*/
public static void reportNotificationClicked(Context context, String messageId, byte platform, String platformMessageId)
Beispielcode:
Java:
// Meldet den Klick auf die Herstellerbenachrichtigung, messageId: "12345", Hersteller: Xiaomi, Hersteller messageId: "MI-6476RHT25"
MTPushPrivatesApi.reportNotificationClicked(context, "12345", MTPushPrivatesApi.PLATFORM_XIAOMI, "MI-6476RHT25");
Kotlin:
// Report the manufacturer's notification click, the messageId is "12345", the manufacturer is Xiaomi, and the manufacturer's messageId is "MI-6476RHT25"
MTPushPrivatesApi.reportNotificationClicked(context, "12345", MTPushPrivatesApi.PLATFORM_XIAOMI, "MI-6476RHT25")
reportNotificationDeleted
- Bitte zuerst init aufrufen, sonst ist der Aufruf ungültig.
- Wenn kein Engagelab-Herstellerpaket integriert ist, aber Engagelab die Löschrate erfassen soll, bitte diese Schnittstelle aufrufen.
/**
* Meldet das Löschen der Herstellerbenachrichtigung.
*
* HTTP/HTTPS wird verwendet.
*
* @param context darf nicht leer sein
* @param messageId Engagelab messageId, darf nicht leer sein
* @param platform Hersteller (1:mi, 2:huawei, 3:meizu, 4:oppo, 5:vivo, 7:honor, 8:google)
* @param platformMessageId Hersteller messageId, optional
*/
public static void reportNotificationDeleted(Context context, String messageId, byte platform, String platformMessageId)
Beispielcode:
Java:
// Meldet das Löschen der Herstellerbenachrichtigung, messageId: "12345", Hersteller: Xiaomi, Hersteller messageId: "MI-6476RHT25"
MTPushPrivatesApi.reportNotificationDeleted(context, "12345", MTPushPrivatesApi.PLATFORM_XIAOMI, "MI-6476RHT25");
Kotlin:
// Report the manufacturer to delete the notification, the messageId is "12345", the manufacturer is mi, and the manufacturer's messageId is "MI-6476RHT25"
MTPushPrivatesApi.reportNotificationDeleted(context, "12345", MTPushPrivatesApi.PLATFORM_XIAOMI, "MI-6476RHT25")
reportNotificationOpened
- Bitte zuerst init aufrufen, sonst ist der Aufruf ungültig.
- Wenn kein Engagelab-Herstellerpaket integriert ist, aber Engagelab die Öffnungsrate erfassen soll, bitte diese Schnittstelle aufrufen.
- Einige Hersteller (z. B. Huawei/Oppo/Vivo) bieten keine Callbacks für Benachrichtigungseingang und -klick. Nach der Konfiguration der Aktivität, auf die die Benachrichtigung verweist, können die Parameter im Ziel-Intent abgefragt werden. Es wird empfohlen, für alle Hersteller die Zielaktivität zu konfigurieren.
- Ab MTPush 4.0.0 nicht mehr erforderlich.
/**
* Meldet das Öffnen der Herstellerbenachrichtigung.
*
* HTTP/HTTPS wird verwendet.
*
* @param context darf nicht leer sein
* @param messageId Engagelab messageId, darf nicht leer sein
* @param platform Hersteller (1:mi, 2:huawei, 3:meizu, 4:oppo, 5:vivo, 7:honor, 8:google)
* @param platformMessageId Hersteller messageId, optional
*/
public static void reportNotificationOpened(Context context, String messageId, byte platform, String platformMessageId)
Beispielcode:
Java:
Bundle bundle = intent.getExtras();
String platformMessage = "";
// Huawei
if (intent.getData() != null) {
platformMessage = intent.getData().toString();
}
// Andere Hersteller
if (TextUtils.isEmpty(platformMessage) && intent.getExtras() != null) {
if (bundle.containsKey("JMessageExtra")) {
platformMessage = bundle.getString("JMessageExtra");
} else {
platformMessage = bundle.getString("MTMessageExtra");
}
}
if (TextUtils.isEmpty(platformMessage)) {
return;
}
JSONObject messageJson = new JSONObject(platformMessage);
tvMessage.setText(toLogString(messageJson));
// Auslesen
String messageId = messageJson.optString("msg_id");
byte platform = (byte) messageJson.optInt("rom_type");
String title = messageJson.optString("n_title");
String content = messageJson.optString("n_content");
// Meldet das Öffnen der Benachrichtigung (empfohlen für alle Hersteller, nur für Versionen < 4.0.0 erforderlich)
MTPushPrivatesApi.reportNotificationOpened(this, messageId, platform, "");
Kotlin:
val bundle = intent.extras
var platformMessage = ""
// huawei
if (intent.data != null) {
platformMessage = intent.data!!.toString()
}
// other manufacturers
if (TextUtils.isEmpty(platformMessage) && intent.extras != null) {
bundle?.let {
if (it.containsKey("JMessageExtra")) {
platformMessage = it.getString("JMessageExtra", "")
} else {
platformMessage = it.getString("MTMessageExtra", "")
}
}
}
if (TextUtils.isEmpty(platformMessage)) {
return
}
val messageJson = JSONObject(platformMessage)
tvMessage.setText(toLogString(messageJson))
// parse
val messageId = messageJson.optString("msg_id")
val platform = messageJson.optInt("rom_type").toByte()
val title = messageJson.optString("n_title")
val content = messageJson.optString("n_content")
// Report the notification and click on the activity to open it. It is recommended that all manufacturers jump to add it. It is only required for versions below MTPush4.0.0
MTPushPrivatesApi.reportNotificationOpened(this, messageId, platform, "")
uploadPlatformToken
- Bitte zuerst init aufrufen, sonst ist der Aufruf ungültig.
- Da der Upload per TCP erfolgt, muss die Langzeitverbindung erfolgreich aufgebaut sein, d. h. diese Schnittstelle nach dem Callback onConnectStatus mit true aufrufen.
- Wenn kein Engagelab-Herstellerpaket integriert ist, aber Engagelab Hersteller-Nachrichten pushen soll, bitte diese Schnittstelle aufrufen.
/**
* Hersteller-Token hochladen
*
* Upload erfolgt per TCP
*
* @param context darf nicht leer sein
* @param platform Hersteller (1:mi, 2:huawei, 3:meizu, 4:oppo, 5:vivo, 7:honor, 8:google)
* @param token Vom Hersteller zurückgegebenes Token, darf nicht leer sein
* @param region Für internationale Versionen von Xiaomi/Oppo: "GLOBAL", sonst "NULL"
*/
public static void uploadPlatformToken(Context context, byte platform, String token, String region)
Beispielcode:
Java:
// Hersteller-Token melden, Hersteller: Xiaomi, Token: "MI-6476s-afs-afs-afaR-HT25"
MTPushPrivatesApi.uploadPlatformToken(context, MTPushPrivatesApi.PLATFORM_XIAOMI, "MI-6476s-afs-afs-afaR-HT25", "NULL");
Kotlin:
// Report the manufacturer token, the manufacturer is mi, and the manufacturer token is "MI-6476s-afs-afs-afaR-HT25"
MTPushPrivatesApi.uploadPlatformToken(context, MTPushPrivatesApi.PLATFORM_XIAOMI, "MI-6476s-afs-afs-afaR-HT25", "NULL")
clearPlatformToken
- Bitte zuerst init aufrufen, sonst ist der Aufruf ungültig.
- Da der Upload per TCP erfolgt, muss die Langzeitverbindung erfolgreich aufgebaut sein, d. h. diese Schnittstelle nach dem Callback onConnectStatus mit true aufrufen.
- Wenn kein Engagelab-Herstellerpaket integriert ist, aber Engagelab Hersteller-Nachrichten pushen soll, bitte diese Schnittstelle aufrufen.
/**
* Token löschen. Nach dem Aufruf kann das Token nur noch über uploadPlatformToken gemeldet werden. Das SDK erfasst und meldet das Token nicht mehr automatisch. Nach einem Kaltstart wird es zurückgesetzt.
* Über das Callback onPlatformToken überwachen. Wenn platform -128 ist, war das Löschen erfolgreich.
*
* TCP-Verbindung erforderlich.
*
* @param context darf nicht leer sein
*/
public static void clearPlatformToken(Context context)
Beispielcode:
Java:
MTPushPrivatesApi.clearPlatformToken(context);
onFragmentResume
- Bitte zuerst init aufrufen, sonst ist der Aufruf ungültig.
/**
* @param context darf nicht leer sein
* @param fragmentName Vollständiger Klassenname des Fragments (this.getClass().getCanonicalName())
*/
public static void onFragmentResume(Context context, String fragmentName)
Kotlin:
MTPushPrivatesApi.clearPlatformToken(context)
onFragmentPause
- Bitte zuerst init aufrufen, sonst ist der Aufruf ungültig.
/**
* @param context darf nicht leer sein
* @param fragmentName Vollständiger Klassenname des Fragments (this.getClass().getCanonicalName())
*/
public static void onFragmentPause(Context context, String fragmentName)
Hinweise zur Verwendung: Da es vier Möglichkeiten gibt, ein Fragment in Android hinzuzufügen, muss jede Methode unterschiedlich behandelt werden. Nachfolgend finden Sie Erklärungen zur Steuerung der In-App-Anzeige für das jeweilige Fragment basierend auf diesen vier Methoden.
| Fragment-Verwendung | Kann Fragment-Lebenszyklus überwacht werden? | JPush Dynamic Display Page Interface Call Method |
|---|---|---|
| Methode 1: add/show/hide | Lebenszyklus kann nicht überwacht werden | Aufruf von onFragmentResume und onHiddenChanged im Fragment |
| Methode 2: ViewPager | Lebenszyklus kann nicht überwacht werden | Aufruf von setUserVisibleHint im Fragment |
| Methode 3: replace | Lebenszyklus kann überwacht werden | Aufruf der Lebenszyklusmethoden onResume und onPause im Fragment |
| Methode 4: attach/detach | Lebenszyklus kann überwacht werden | Aufruf der Lebenszyklusmethoden onResume und onPause im Fragment |
add/show/hide-Methode
1) Rufen Sie die dynamische Steuerungsschnittstelle in der onCreateView-Callbackfunktion des Fragments auf und übergeben Sie die erforderlichen Parameter. @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { String classname = this.getClass().getCanonicalName(); MTPushPrivatesApi.onFragmentResumed(MyApplication.gContext, classname); return inflater.inflate(R.layout.black_fragment, container, false); } 2) Rufen Sie die dynamische Steuerungsschnittstelle im onHiddenChanged-Callback des Fragments auf und übergeben Sie die erforderlichen Parameter. @Override public void onHiddenChanged(boolean hidden) { String classname = this.getClass().getCanonicalName(); if (!hidden) { // context sollte application context sein MTPushPrivatesApi.onFragmentResumed(MyApplication.gContext, classname); } else { // verstecken MTPushPrivatesApi.onFragmentPaused(MyApplication.gContext, classname); } super.onHiddenChanged(hidden); }1) Rufen Sie die dynamische Steuerungsschnittstelle in der onCreateView-Callbackfunktion des Fragments auf und übergeben Sie die erforderlichen Parameter. @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { String classname = this.getClass().getCanonicalName(); MTPushPrivatesApi.onFragmentResumed(MyApplication.gContext, classname); return inflater.inflate(R.layout.black_fragment, container, false); } 2) Rufen Sie die dynamische Steuerungsschnittstelle im onHiddenChanged-Callback des Fragments auf und übergeben Sie die erforderlichen Parameter. @Override public void onHiddenChanged(boolean hidden) { String classname = this.getClass().getCanonicalName(); if (!hidden) { // context sollte application context sein MTPushPrivatesApi.onFragmentResumed(MyApplication.gContext, classname); } else { // verstecken MTPushPrivatesApi.onFragmentPaused(MyApplication.gContext, classname); } super.onHiddenChanged(hidden); }Diesen Codeblock im schwebenden Fenster anzeigenViewPager-Methode
1) Rufen Sie die dynamische Steuerungsschnittstelle im setUserVisibleHint-Callback des Fragments auf und übergeben Sie die erforderlichen Parameter. @Override public void setUserVisibleHint(boolean isVisibleToUser) { String classname = this.getClass().getCanonicalName(); if (isVisibleToUser) { // application context übergeben MTPushPrivatesApi.onFragmentResumed(MyApplication.gContext, classname); } else { // verstecken MTPushPrivatesApi.onFragmentPause(MyApplication.gContext, classname); } super.setUserVisibleHint(isVisibleToUser); }1) Rufen Sie die dynamische Steuerungsschnittstelle im setUserVisibleHint-Callback des Fragments auf und übergeben Sie die erforderlichen Parameter. @Override public void setUserVisibleHint(boolean isVisibleToUser) { String classname = this.getClass().getCanonicalName(); if (isVisibleToUser) { // application context übergeben MTPushPrivatesApi.onFragmentResumed(MyApplication.gContext, classname); } else { // verstecken MTPushPrivatesApi.onFragmentPause(MyApplication.gContext, classname); } super.setUserVisibleHint(isVisibleToUser); }Diesen Codeblock im schwebenden Fenster anzeigenreplace- oder attach/detach-Methoden
Rufen Sie die dynamische Seitenkonfiguration im Lebenszyklus-Callback des hinzugefügten Fragments auf. @Override public void onResume() { // application context übergeben String classname = this.getClass().getCanonicalName(); MTPushPrivatesApi.onFragmentResumed(MyApplication.gContext, classname); super.onResume(); } @Override public void onPause() { String classname = this.getClass().getCanonicalName(); MTPushPrivatesApi.onFragmentPause(MyApplication.gContext, classname); super.onPause(); }Rufen Sie die dynamische Seitenkonfiguration im Lebenszyklus-Callback des hinzugefügten Fragments auf. @Override public void onResume() { // application context übergeben String classname = this.getClass().getCanonicalName(); MTPushPrivatesApi.onFragmentResumed(MyApplication.gContext, classname); super.onResume(); } @Override public void onPause() { String classname = this.getClass().getCanonicalName(); MTPushPrivatesApi.onFragmentPause(MyApplication.gContext, classname); super.onPause(); }Diesen Codeblock im schwebenden Fenster anzeigen
MTCommonReceiver
- Wird hauptsächlich für Methoden-Callbacks verwendet.
- Alle Methoden-Callbacks in dieser Klasse laufen im Hauptprozess.
onNotificationStatus
- Nach jedem SDK-Start wird der aktuelle Benachrichtigungsschalter-Status per Callback übermittelt.
- Danach wird nur bei Änderung des Benachrichtigungsschalters ein Callback ausgelöst.
/**
* Callback für den Anwendungs-Benachrichtigungsschalter-Status
*
* @param context darf nicht leer sein
* @param enable ob der Benachrichtigungsschalter an ist, true = an, false = aus
*/
@Override
public void onNotificationStatus(Context context, boolean enable)
onConnectStatus
/**
* Ob die Langzeitverbindung erfolgreich hergestellt wurde
*
* Nach der Initialisierung wird die Langzeitverbindung aufgebaut; bei Erfolg oder Fehler wird diese Methode per Callback aufgerufen
*
* @param context darf nicht leer sein
* @param enable ob die Langzeitverbindung erfolgreich ist, true = erfolgreich; false = fehlgeschlagen
*/
public void onConnectStatus(Context context, boolean enable)
onNotificationArrived
- Engagelab-/Xiaomi-/Meizu-Kanal liefern diesen Methoden-Callback (Google-Kanal: App muss im Vordergrund sein, damit der Callback ausgelöst wird).
- Details zu notificationMessage siehe NotificationMessage
/**
* Benachrichtigungsnachricht zugestellt
*
* Wird per Callback aufgerufen, wenn eine Push-Benachrichtigung zugestellt wurde
*
* @param context darf nicht leer sein
* @param notificationMessage Benachrichtigungsnachricht
*/
public void onNotificationArrived(Context context, NotificationMessage notificationMessage)
onNotificationUnShow
- Wird aufgerufen, wenn eine Benachrichtigung im Hintergrund gesendet, im Vordergrund nicht angezeigt wird und die App im Vordergrund ist.
/**
* Benachrichtigungsnachricht wird im Vordergrund nicht angezeigt
*
* @param context darf nicht leer sein
* @param notificationMessage Benachrichtigungsnachricht
*/
@Override
public void onNotificationUnShow(Context context, NotificationMessage notificationMessage)
onNotificationClicked
- Details zu notificationMessage siehe NotificationMessage
/**
* Benachrichtigungsnachricht angeklickt
*
* Wird per Callback aufgerufen, wenn eine Push-Benachrichtigung angeklickt wurde
*
* @param context darf nicht leer sein
* @param notificationMessage Benachrichtigungsnachricht
*/
public void onNotificationClicked(Context context, NotificationMessage notificationMessage)
onNotificationDeleted
- Wird nur bei Löschung einer Engagelab-Kanal-Benachrichtigung ausgelöst.
- Details zu notificationMessage siehe NotificationMessage
- Kann nicht aufgerufen werden, wenn die App im beendeten Zustand ist.
/**
* Benachrichtigungsnachricht gelöscht
*
* Wird per Callback aufgerufen, wenn eine Push-Benachrichtigung gelöscht wurde
*
* @param context darf nicht leer sein
* @param notificationMessage Benachrichtigungsnachricht
*/
public void onNotificationDeleted(Context context, NotificationMessage notificationMessage)
onCustomMessage
- Benutzerdefinierte Nachrichten werden nicht in der Benachrichtigungsleiste angezeigt.
- Wird nur bei Löschung einer Engagelab-Kanal-Benachrichtigung ausgelöst.
- Details zu customMessage siehe CustomMessage
/**
* Benutzerdefinierte Nachricht zugestellt
*
* Wird per Callback aufgerufen, wenn eine benutzerdefinierte Nachricht zugestellt wurde
*
* @param context darf nicht leer sein
* @param customMessage Benutzerdefinierte Nachricht
*/
public void onCustomMessage(Context context, CustomMessage customMessage)
onTagMessage
- Details zu tagMessage siehe TagMessage
/**
* Tag-Operationsnachricht
*
* @param context darf nicht leer sein
* @param tagMessage Tag-Informationen
*/
public void onTagMessage(Context context, TagMessage tagMessage)
onAliasMessage
- Details zu aliasMessage siehe AliasMessage
/**
* Alias-Operationsnachricht
*
* @param context ApplicationContext-Objekt
* @param aliasMessage Alias-Nachricht
*/
public void onAliasMessage(Context context, AliasMessage aliasMessage)
onPlatformToken
- Callback für Hersteller-Token-Nachrichten
/**
* Hersteller-Operationsnachricht
*
* @param context ApplicationContext-Objekt
* @param platformMessage Hersteller-Token-Nachricht
*/
public void onPlatformToken(Context context, PlatformTokenMessage platformMessage)
onInAppMessageShow
- Callback bei Anzeige einer In-App-Nachricht
/**
*
*
* @param context ApplicationContext-Objekt
* @param inAppMessage In-App-Nachricht
*/
public void onInAppMessageShow(Context context, InAppMessage inAppMessage)
onInAppMessageClick
- Callback beim Klick auf eine In-App-Nachricht
/**
*
*
* @param context ApplicationContext-Objekt
* @param inAppMessage In-App-Nachricht
*/
public void onInAppMessageClick(Context context, InAppMessage inAppMessage)
NotificationChannel-Konfiguration
Unterstützte Version
Erste unterstützte Version: MTPush SDK v3.3.0
Funktionsbeschreibung
Ab Android 8.0 laufen alle Benachrichtigungen über NotificationChannel. Entwickler können NotificationChannel selbst definieren und bei API-Push die channelId angeben. Unter Android 8.0 und höher sucht das System zuerst den Channel zur channelId; Wichtigkeit, Sound, Vibration und LED werden durch den Channel bestimmt. Wird keine channelId gefunden oder befindet man sich in der Stillezeit, wird der Standard-Engagelab-Channel verwendet.
Beispiel für benutzerdefinierten NotificationChannel
Java:
private void initChannel() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
if (nm != null) {
NotificationChannelGroup notificationChannelGroup = new NotificationChannelGroup("MyGroupId", "Benutzerdefinierte Benachrichtigungsgruppe");
nm.createNotificationChannelGroup(notificationChannelGroup);
NotificationChannel notificationChannel = new NotificationChannel("MyChannelId", "Benutzerdefinierte Benachrichtigung", NotificationManager.IMPORTANCE_HIGH);
notificationChannel.setGroup("MyGroupId");
notificationChannel.enableLights(true);
notificationChannel.enableVibration(true);
notificationChannel.setSound("android.resource:// Paketname /raw/ Klingelton-Datei", null); // Benutzerdefinierten Klingelton setzen
nm.createNotificationChannel(notificationChannel);
}
}
}
Kotlin:
private fun initChannel() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
val nm = getSystemService(NOTIFICATION_SERVICE) as NotificationManager
if (nm != null) {
val notificationChannelGroup = NotificationChannelGroup("MyGroupId", "Benutzerdefinierte Benachrichtigungsgruppe")
nm.createNotificationChannelGroup(notificationChannelGroup)
val notificationChannel = NotificationChannel(
"MyChannelId",
"Benutzerdefinierte Benachrichtigung",
NotificationManager.IMPORTANCE_HIGH
)
notificationChannel.group = "MyGroupId"
notificationChannel.enableLights(true)
notificationChannel.enableVibration(true)
notificationChannel.setSound(
"android.resource:// Paketname /raw/ Klingelton-Datei",
null
) // Benutzerdefinierten Klingelton setzen
nm.createNotificationChannel(notificationChannel)
}
}
}
NotificationMessage
- Benachrichtigungsnachricht
| Attribut | Typ | Beschreibung |
|---|---|---|
| messageId | String | Pflicht, Engagelab messageId, für Nachverfolgung und Statistik, darf nicht leer sein; bei leerer Angabe wird keine Benachrichtigung angezeigt |
| overrideMessageId | String | Engagelab overrideMessageId, für Nachverfolgung und Statistik |
| platform | byte | Herstellertyp, Standard Engagelab, MTPushPrivatesApi.PLATFORM_DEFAULT: 0Xiaomi MTPushPrivatesApi.PLATFORM_XIAOMI: 1Huawei MTPushPrivatesApi.PLATFORM_HUAWEI: 2Meizu MTPushPrivatesApi.PLATFORM_MEIZU: 3Oppo MTPushPrivatesApi.PLATFORM_OPPO: 4Vivo MTPushPrivatesApi.PLATFORM_VIVO: 5Honor MTPushPrivatesApi.PLATFORM_HONOR: 7MTPushPrivatesApi.PLATFORM_GOOGLE: 8 |
| platformMessageId | String | Hersteller-messageId, für Hersteller-Nachverfolgung und Statistik |
| notificationId | int | Benachrichtigungs-ID, kann mit clearNotification aufgehoben werden |
| smallIcon | String | Kleines Icon, Standard drawable/mtpush_notification_icon.png |
| largeIcon | String | Großes Icon, in der Regel rechts neben der Benachrichtigung |
| title | String | Benachrichtigungstitel, bei leerer Angabe wird der Anwendungsname verwendet |
| content | String | Pflicht, Benachrichtigungsinhalt, darf nicht leer sein; bei leerer Angabe wird keine Benachrichtigung angezeigt |
| extras | Bundle | Zusätzliche Felder, key/value jeweils String |
| builderId | int | Benachrichtigungslayout-ID, kann mit setNotificationLayout gesetzt werden, Standard Systemlayout |
| style | int | Benachrichtigungsstil, Standard 0 Großtext NOTIFICATION_STYLE_BIG_TEXT: 1 Posteingang NOTIFICATION_STYLE_INBOX: 2 Großbild NOTIFICATION_STYLE_BIG_PICTURE: 3 |
| bigText | String | Großtext, wirksam wenn style NOTIFICATION_STYLE_BIG_TEXT |
| inbox | String[] | Posteingang, wirksam wenn style NOTIFICATION_STYLE_INBOX |
| bigPicture | String | Großbild, wirksam wenn style NOTIFICATION_STYLE_BIG_PICTURE |
| priority | int | Dringlichkeit der Benachrichtigung, Standard 0 Niedrig: keine LED, keine Vibration, kein Klingelton, Notification.PRIORITY_LOW: -1 Normal: LED, Vibration, Klingelton, Notification.PRIORITY_DEFAULT: 0 Hoch: LED, Vibration, Klingelton, Heads-up, Notification.PRIORITY_HIGH: 1 |
| defaults | int | Klingelton, Vibration, LED der Benachrichtigung, Standard Notification.DEFAULT_ALL: -1 Klingelton Notification.DEFAULT_SOUND: 1 Vibration Notification.DEFAULT_VIBRATE: 2 LED Notification.DEFAULT_LIGHTS: 4 Kombination möglich, z. B. 7 = Klingelton + Vibration + LED Ab Android 8.0 folgt dieses Attribut dem Channel |
| category | String | Benachrichtigungstyp, für Sortierung/Filterung in der Leiste, z. B. Notification.CATEGORY_ALARM, Notification#CATEGORY_CALL |
| sound | String | Klingelton der Benachrichtigung, Datei muss unter res/raw liegen Ab Android 8.0 folgt der Klingelton dem Channel; wenn der Channel keinen Klingelton hat, gilt der benutzerdefinierte Klingelton nicht Klingelton am besten im Channel setzen und bei Push mit channelId übereinstimmend halten |
| channelId | String | Ab Android 8.0 erforderlich; wenn nicht gesetzt, setzt das SDK es (nur Engagelab-Kanal und Google-Kanal bei App im Vordergrund) |
| intentUri | String | Ziel nach Klick auf die Benachrichtigung, derzeit nur Activity, Activity-Sprung per Intent.toURI() |
| badge | int | Badge-Zahl dieser Benachrichtigung (kumulativ), Wert > 0, sonst ungültig, empfohlen 1 Nur Huawei und Xiaomi Xiaomi: Badge nach Klick -1 Huawei: Badge nach Klick nicht -1, setNotificationBadge aufrufen |
CustomMessage
- Benutzerdefinierte Nachricht
| Attribut | Typ | Beschreibung |
|---|---|---|
| messageId | String | Pflicht, Engagelab messageId, für Nachverfolgung und Statistik, darf nicht leer sein |
| platform | byte | Herstellertyp, Standard Engagelab, MTPushPrivatesApi.PLATFORM_DEFAULT: 0Xiaomi MTPushPrivatesApi.PLATFORM_XIAOMI: 1Huawei MTPushPrivatesApi.PLATFORM_HUAWEI: 2Meizu MTPushPrivatesApi.PLATFORM_MEIZU: 3Oppo MTPushPrivatesApi.PLATFORM_OPPO: 4Vivo MTPushPrivatesApi.PLATFORM_VIVO: 5Honor MTPushPrivatesApi.PLATFORM_HONOR: 7MTPushPrivatesApi.PLATFORM_GOOGLE: 8 |
| platformMessageId | String | Hersteller-messageId, für Hersteller-Nachverfolgung und Statistik |
| title | String | Nachrichtentitel |
| content | String | Nachrichteninhalt |
| contentType | String | Nachrichtentyp |
| extras | Bundle | Zusätzliche Felder, key/value jeweils String |
TagMessage
- Tag-Nachricht
| Attribut | Typ | Beschreibung |
|---|---|---|
| sequence | int | Vom Nutzer definierte Operationssequenznummer, wird mit dem Ergebnis zurückgegeben, kennzeichnet die Eindeutigkeit einer Operation |
| code | int | Operationsergebnis, Details siehe code |
| tags | String[] | Tag-Array, wird zurückgegeben bei: addTag deleteTag updateTag queryAllTag |
| queryTag | String | Tag, wird zurückgegeben bei: queryTag |
| queryTagValid | boolean | Tag-Status, wird zurückgegeben bei: queryTag |
AliasMessage
- Alias-Nachricht
| Attribut | Typ | Beschreibung |
|---|---|---|
| sequence | int | Vom Nutzer definierte Operationssequenznummer, wird mit dem Ergebnis zurückgegeben |
| code | int | Operationsergebnis, Details siehe code |
| alias | String | Alias, wird zurückgegeben bei: setAlias getAlias |
PlatformTokenMessage
- Hersteller-Token-Nachricht
| Attribut | Typ | Beschreibung |
|---|---|---|
| platform | byte | Herstellertyp, Standard Engagelab, MTPushPrivatesApi.PLATFORM_DEFAULT: 0Xiaomi MTPushPrivatesApi.PLATFORM_XIAOMI: 1Huawei MTPushPrivatesApi.PLATFORM_HUAWEI: 2Meizu MTPushPrivatesApi.PLATFORM_MEIZU: 3Oppo MTPushPrivatesApi.PLATFORM_OPPO: 4Vivo MTPushPrivatesApi.PLATFORM_VIVO: 5Honor MTPushPrivatesApi.PLATFORM_HONOR: 7MTPushPrivatesApi.PLATFORM_GOOGLE: 8 |
| token | String | Vom Hersteller zurückgegebener Token |
InAppMessage
- In-App-Nachricht
| Attribut | Typ | Beschreibung |
|---|---|---|
| messageId | String | Pflicht, Engagelab messageId, für Nachverfolgung und Statistik, darf nicht leer sein |
| overrideMessageId | String | Engagelab overrideMessageId, für Nachverfolgung und Statistik |
| target | String | Zielseitenpfad für die Anzeige der In-App-Nachricht |
| imageUrl | String | Bild-URL der In-App-Nachricht |
| extras | String | Durchgereichte Zusatzinformationen |
| content | String | Inhalt der In-App-Nachricht |
| expired | long | Ablaufzeit |
| delay | long | Verzögerte Anzeigezeit |
| interval | long | Anzeigeintervall der In-App-Nachricht |
| duration | long | Anzeigedauer der In-App-Nachricht |
| msgTime | long | Zeitpunkt, zu dem das SDK die In-App-Nachricht empfängt |
Code
| code | int-Wert | Beschreibung |
|---|---|---|
| SUCCESS | 0 | Erfolg |
| NULL_TAG_AND_ALIAS | 6001 | Ungültige Einstellung |
| TIMEOUT | 6002 | Einstellungs-Timeout, erneuter Versuch empfohlen, z. B. bei schlechtem Netz oder unvollständiger Initialisierung |
| INVALID_ALIAS | 6003 | Alias-String ungültig; gültig: Buchstaben (case-sensitive), Ziffern, Unterstrich, CJK, Sonderzeichen (ab 2.1.6) @!#$&*+=.| |
| TOO_LONG_ALIAS | 6004 | Alias zu lang, max. 40 Bytes (CJK UTF-8 = 3 Bytes) |
| INVALID_TAGS | 6005 | Ein Tag-String ungültig; gültig: Buchstaben (case-sensitive), Ziffern, Unterstrich, CJK, Sonderzeichen (ab 2.1.6) @!#$&*+=.| |
| TOO_LONG_TAG | 6006 | Ein Tag zu lang, max. 40 Bytes pro Tag (CJK UTF-8 = 3 Bytes) |
| TOO_MANY_TAGS | 6007 | Anzahl der Tags pro Gerät überschreitet das Limit, max. 1000 pro Vorgang |
| TOO_LONG_TAGS | 6008 | Gesamtlänge der Tags pro Vorgang über 5000 |
| UNKNOWN_ERROR | 6009 | Unbekannter Fehler |
| INVALID_JSON | 6010 | Ungültiges JSON |
| INVOKE_TOO_SOON | 6012 | Tag-/Alias-Operationen zu häufig |
| CONNECT_NOT_ENABLE | 6013 | CONNECT_NOT_ENABLE |
| INVALID_MOBILE_NUMBER | 6023 | Ungültige Mobilnummer |
