Zum Inhalt springen

Android SDK: Grundlegende Integrationsanleitung

Dieser Abschnitt enthält Informationen zur Integration des Pushwoosh SDK in Ihre Android-Anwendung.

Voraussetzungen

Anchor link to

Um das Pushwoosh Android SDK in Ihre App zu integrieren, benötigen Sie Folgendes:

Integrationsschritte

Anchor link to

1. Firebase Cloud Messaging einrichten

Anchor link to

Verbinden Sie zuerst Ihr Android-Projekt mit Firebase:

  • Öffnen Sie Ihr Projekt in Android Studio
  • Navigieren Sie zu Tools > Firebase > Cloud Messaging und klicken Sie auf „Set up Firebase Cloud Messaging“
  • Folgen Sie den Anweisungen des Assistenten. Im letzten Schritt fügt der Assistent die notwendigen Abhängigkeiten zu Ihren build.gradle-Dateien hinzu

2. Pushwoosh SDK hinzufügen

Anchor link to

Fügen Sie die Abhängigkeit der Pushwoosh-Bibliothek zur build.gradle-Datei Ihrer Anwendung hinzu:

build.gradle
implementation 'com.pushwoosh:pushwoosh-firebase:6.+'

Ersetzen Sie „+“ durch die aktuelle Version des Pushwoosh Android SDK

3. Pushwoosh-Metadaten zu AndroidManifest.xml hinzufügen

Anchor link to

Öffnen Sie Ihre AndroidManifest.xml-Datei und fügen Sie die folgenden Metadaten innerhalb des <application>-Tags hinzu:

<meta-data android:name="com.pushwoosh.appid" android:value="__YOUR_APP_CODE__" />
<meta-data android:name="com.pushwoosh.senderid" android:value="@string/fcm_sender_id" />
<meta-data android:name="com.pushwoosh.apitoken" android:value="__YOUR_DEVICE_API_TOKEN__" />

Wobei:

Wichtig: Stellen Sie sicher, dass Sie dem Token in Ihrem Pushwoosh Control Panel Zugriff auf die richtige App geben. Erfahren Sie mehr

Um com.pushwoosh.senderid festzulegen, fügen Sie fcm_sender_id zur Datei res/values/strings.xml Ihres Projekts hinzu:

res/values/strings.xml
<resources>
<string name="fcm_sender_id">__YOUR_FCM_SENDER_ID__</string>
</resources>

4. Initialisierungscode

Anchor link to

Registrieren Sie sich für Push-Benachrichtigungen, indem Sie diesen Code zu Ihrer Initialisierungslogik hinzufügen:

Pushwoosh.getInstance().registerForPushNotifications()

5. Projekt ausführen

Anchor link to
  1. Erstellen Sie das Projekt und führen Sie es aus.
  2. Gehen Sie zum Pushwoosh Control Panel und senden Sie eine Push-Benachrichtigung.
  3. Sie sollten die Benachrichtigung in der App sehen.

Erweiterte Integration

Anchor link to

In diesem Stadium haben Sie das SDK bereits integriert und können Push-Benachrichtigungen senden und empfangen. Lassen Sie uns nun die Kernfunktionalität erkunden.

Push-Benachrichtigungen

Anchor link to

Im Pushwoosh SDK gibt es zwei Callbacks, die für die Verarbeitung von Push-Benachrichtigungen konzipiert sind:

  • onMessageReceived: Diese Methode wird aufgerufen, wenn eine Push-Benachrichtigung empfangen wird.
  • onMessageOpened: Diese Methode wird aufgerufen, wenn der Benutzer mit der Benachrichtigung interagiert (sie öffnet).

Diese Callbacks ermöglichen es Entwicklern, den Empfang und die Benutzerinteraktion mit Push-Benachrichtigungen in ihren Anwendungen zu verwalten:

AndroidManifest.xml
<meta-data
android:name="com.pushwoosh.notification_service_extension"
android:value="com.your.package.YourNotificationServiceExtension" />
import android.util.Log
import com.pushwoosh.notification.NotificationServiceExtension
import com.pushwoosh.notification.PushMessage
class YourNotificationServiceExtension : NotificationServiceExtension() {
override fun onMessageReceived(data: PushMessage): Boolean {
Log.d("Pushwoosh", "onMessageReceived: ${data.toJson()}")
return false
}
override fun onMessageOpened(message: PushMessage) {
Log.d("Pushwoosh", "onMessageOpened: ${message.toJson()}")
}
}

Benutzerkonfiguration

Anchor link to

Indem Sie sich auf das individuelle Benutzerverhalten und die Vorlieben konzentrieren, können Sie personalisierte Inhalte bereitstellen, was zu einer erhöhten Benutzerzufriedenheit und -loyalität führt.

import com.pushwoosh.Pushwoosh
import com.pushwoosh.tags.TagsBundle
import java.util.Date
class Registration {
public void afterUserLogin(User user) {
Pushwoosh pushwoosh = Pushwoosh.getInstance()
// Set user ID
if (user.getUserId() != null) {
pushwoosh.setUserId(user.getUserId())
}
// Set user email
if (user.getEmail() != null) {
pushwoosh.setEmail(user.getEmail())
}
// Setting additional user information as tags for Pushwoosh
if (user.getUserDetails() != null) {
val details = user.getUserDetails()
val tagsBuilder = TagsBundle.Builder()
if (details.getAge() != null) {
tagsBuilder.putInt("age", details.getAge())
}
if (details.getUserName() != null) {
tagsBuilder.putString("name", details.getUserName())
}
if (details.lastLoginDate() != null) {
tagsBuilder.putDate("last_login", details.getLastLoginDate())
}
// Build and send tags
val tags = tagsBuilder.build()
if (!tags.isEmpty()) {
pushwoosh.setTags(tags)
}
}
}
}

Tags sind Schlüssel-Wert-Paare, die Benutzern oder Geräten zugewiesen werden. Sie ermöglichen eine Segmentierung basierend auf Attributen wie Vorlieben oder Verhalten und ermöglichen so gezielte Nachrichten.

import com.pushwoosh.Pushwoosh
import com.pushwoosh.tags.TagsBundle
import java.util.List
class UpdateUser {
public void afterUserUpdateProfile(User user) {
val pushwoosh = Pushwoosh.getInstance()
val tagsBuilder = TagsBundle.Builder()
// Set list of favorite categories
if (user.favoriteCategories != null && user.favoriteCategories.isNotEmpty()) {
tagsBuilder.putList("favorite_categories", user.getFavoriteCategories())
}
// Set payment information
tagsBuilder.putBoolean("is_subscribed", user.isSubscribed())
tagsBuilder.putString("payment_status", user.getPaymentStatus())
tagsBuilder.putString("billing_address", user.getBillingAddress())
// Build and send tags
pushwoosh.setTags(tagsBuilder.build())
}
}

Events sind spezifische Benutzeraktionen oder Vorkommnisse innerhalb der App, die verfolgt werden können, um das Verhalten zu analysieren und entsprechende Nachrichten oder Aktionen auszulösen.

import com.pushwoosh.Pushwoosh
import com.pushwoosh.inapp.InAppManager
import com.pushwoosh.tags.TagsBundle
import java.util.Date
class Registration {
public void afterUserLogin(User user) {
if (user.getUserName() != null && user.getLastLoginDate() != null) {
val attributes = TagsBundle.Builder()
.putString("name", user.getUserName())
.putDate("last_login", user.getLastLoginDate())
.build()
InAppManager.getInstance().postEvent("login", attributes)
}
}
public void afterUserPurchase(User user, Product product) {
Pushwoosh pushwoosh = Pushwoosh.getInstance()
// Track purchase event
val purchaseAttributes = TagsBundle.Builder()
.putString("product_id", product.getId())
.putString("product_name", product.getName())
.putDouble("price", product.getPrice())
.putInt("quantity", product.getQuantity())
.build()
InAppManager.getInstance().postEvent("purchase", purchaseAttributes)
// Set user tags
val tagsBuilder = TagsBundle.Builder()
tagsBuilder.putDate("last_purchase_date", Date())
val lifetimeSpend = getCurrentLifetimeSpend() + product.getPrice()
tagsBuilder.putDouble("lifetime_spend", getCurrentLifetimeSpend())
pushwoosh.setTags(tagsBuilder.build())
}
}

Rich Media

Anchor link to

Rich Media bezieht sich auf interaktive und multimediale Inhalte wie Bilder, Videos oder HTML, die in Benachrichtigungen und In-App-Nachrichten verwendet werden, um das Engagement der Benutzer zu erhöhen.

Um die Funktion Modal Rich Media zu aktivieren, müssen Sie sie in der AndroidManifest.xml-Datei Ihrer Anwendung konfigurieren, indem Sie den folgenden Metadaten-Eintrag hinzufügen:

AndroidManifest.xml
<meta-data
android:name="com.pushwoosh.rich_media_type"
android:value="Modal" />
import android.util.Log
import com.pushwoosh.richmedia.RichMedia
import com.pushwoosh.richmedia.RichMediaManager
import com.pushwoosh.richmedia.RichMediaPresentingDelegate
import com.pushwoosh.inapp.view.config.ModalRichmediaConfig
import com.pushwoosh.inapp.view.config.enums.*
class MainActivity : AppCompatActivity(), RichMediaPresentingDelegate {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
RichMediaManager.setDelegate(this)
// Configure the modal rich media
val config = ModalRichmediaConfig()
.setViewPosition(ModalRichMediaViewPosition.BOTTOM)
.setPresentAnimationType(ModalRichMediaPresentAnimationType.SLIDE_UP)
.setDismissAnimationType(ModalRichMediaDismissAnimationType.SLIDE_DOWN)
// Apply the configuration
RichMediaManager.setDefaultRichMediaConfig(config)
}
override fun shouldPresent(richMedia: RichMedia): Boolean {
Log.d("Pushwoosh", "Rich media will be presented with: ${richMedia.content}")
return true
}
override fun onPresent(richMedia: RichMedia) {
Log.d("Pushwoosh", "Rich media has been presented: ${richMedia.content}")
}
override fun onClose(richMedia: RichMedia) {
Log.d("Pushwoosh", "Rich media has been closed: ${richMedia.content}")
}
override fun onError(richMedia: RichMedia, pushwooshException: PushwooshException) {
Log.e("Pushwoosh", "Failed to present rich media: ${richMedia.content}. Error: ${pushwooshException.message}")
}
}

Fehlerbehebung

Anchor link to

Sollten während des Integrationsprozesses Probleme auftreten, lesen Sie bitte den Abschnitt Support und Community.