एंड्रॉइड SDK बेसिक इंटीग्रेशन गाइड
इस सेक्शन में यह जानकारी है कि अपने एंड्रॉइड एप्लिकेशन में Pushwoosh SDK को कैसे इंटीग्रेट करें।
पूर्वापेक्षाएँ
Anchor link toअपने ऐप में Pushwoosh एंड्रॉइड SDK को इंटीग्रेट करने के लिए, आपको निम्नलिखित की आवश्यकता होगी:
इंटीग्रेशन के स्टेप्स
Anchor link to1. फायरबेस क्लाउड मैसेजिंग सेट अप करें
Anchor link toसबसे पहले, अपने एंड्रॉइड प्रोजेक्ट को फायरबेस से कनेक्ट करें:
- एंड्रॉइड स्टूडियो में अपना प्रोजेक्ट खोलें
- Tools > Firebase > Cloud Messaging पर नेविगेट करें और “Set up Firebase Cloud Messaging” पर क्लिक करें
- विज़ार्ड के निर्देशों का पालन करें। अंतिम स्टेप में, विज़ार्ड आपकी
build.gradleफ़ाइलों में आवश्यक डिपेंडेंसी जोड़ देगा
2. Pushwoosh SDK जोड़ें
Anchor link toअपने एप्लिकेशन के build.gradle में pushwoosh लाइब्रेरी डिपेंडेंसी जोड़ें:
implementation 'com.pushwoosh:pushwoosh-firebase:6.+'”+” को Pushwoosh Android SDK के वर्तमान संस्करण से बदलें
3. AndroidManifest.xml में Pushwoosh मेटाडेटा जोड़ें
Anchor link toअपनी AndroidManifest.xml फ़ाइल खोलें और <application> टैग के अंदर निम्नलिखित मेटाडेटा जोड़ें:
<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__" />जहाँ:
com.pushwoosh.appidआपका Pushwoosh एप्लिकेशन कोड हैcom.pushwoosh.apitokenआपका Pushwoosh डिवाइस API टोकन है
महत्वपूर्ण: सुनिश्चित करें कि आप अपने Pushwoosh कंट्रोल पैनल में सही ऐप को टोकन एक्सेस दें। और जानें
com.pushwoosh.senderid सेट करने के लिए, अपने प्रोजेक्ट की res/values/strings.xml फ़ाइल में fcm_sender_id जोड़ें:
<resources> <string name="fcm_sender_id">__YOUR_FCM_SENDER_ID__</string></resources>4. इनिशियलाइज़ेशन कोड
Anchor link toपुश नोटिफिकेशन के लिए रजिस्टर करने के लिए, इस कोड को अपने इनिशियलाइज़ेशन लॉजिक में जोड़ें:
Pushwoosh.getInstance().registerForPushNotifications()5. प्रोजेक्ट चलाएँ
Anchor link to- प्रोजेक्ट को बिल्ड और रन करें।
- Pushwoosh कंट्रोल पैनल पर जाएँ और एक पुश नोटिफिकेशन भेजें।
- आपको ऐप में नोटिफिकेशन दिखना चाहिए।
एक्सटेंडेड इंटीग्रेशन
Anchor link toइस स्तर पर, आपने SDK को पहले ही इंटीग्रेट कर लिया है और पुश नोटिफिकेशन भेज और प्राप्त कर सकते हैं। अब, आइए मुख्य कार्यक्षमता का पता लगाएँ
पुश नोटिफिकेशन
Anchor link toPushwoosh SDK में, पुश नोटिफिकेशन को संभालने के लिए दो कॉलबैक डिज़ाइन किए गए हैं:
onMessageReceived: यह मेथड तब कॉल किया जाता है जब कोई पुश नोटिफिकेशन प्राप्त होता है।onMessageOpened: यह मेथड तब कॉल किया जाता है जब उपयोगकर्ता नोटिफिकेशन के साथ इंटरैक्ट करता है (खोलता है)
ये कॉलबैक डेवलपर्स को अपने एप्लिकेशन के भीतर पुश नोटिफिकेशन की प्राप्ति और उपयोगकर्ता इंटरैक्शन को प्रबंधित करने में सक्षम बनाते हैं:
<meta-data android:name="com.pushwoosh.notification_service_extension" android:value="com.your.package.YourNotificationServiceExtension" />import android.util.Logimport com.pushwoosh.notification.NotificationServiceExtensionimport 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()}") }
}import android.util.Log;import com.pushwoosh.notification.NotificationServiceExtension;import com.pushwoosh.notification.PushMessage;
public class YourNotificationServiceExtensionJava extends NotificationServiceExtension {
@Override public boolean onMessageReceived(PushMessage data) { Log.d("Pushwoosh", "onMessageReceived: " + data.toJson()); return false; }
@Override public void onMessageOpened(PushMessage message) { Log.d("Pushwoosh", "onMessageOpened: " + message.toJson()); }}उपयोगकर्ता कॉन्फ़िगरेशन
Anchor link toव्यक्तिगत उपयोगकर्ता के व्यवहार और वरीयताओं पर ध्यान केंद्रित करके, आप व्यक्तिगत सामग्री प्रदान कर सकते हैं, जिससे उपयोगकर्ता की संतुष्टि और वफादारी में वृद्धि होती है
import com.pushwoosh.Pushwooshimport com.pushwoosh.tags.TagsBundleimport 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) } } }}import com.pushwoosh.Pushwoosh;import com.pushwoosh.tags.TagsBundle;import java.util.Date;
public 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()); }
// Set user SMS number if (user.getSmsNumber() != null) { pushwoosh.registerSMSNumber(user.getSmsNumber()); }
// Set user WhatsApp number if (user.getWhatsAppNumber() != null) { pushwoosh.registerWhatsappNumber(user.getWhatsAppNumber()); }
// Setting additional user information as tags for Pushwoosh if (user.getUserDetails() != null) { UserDetails details = user.getUserDetails(); TagsBundle.Builder tagsBuilder = new TagsBundle.Builder();
if (details.getAge() != null) { tagsBuilder.putInt("age", details.getAge()); }
if (details.getUserName() != null) { tagsBuilder.putString("name", details.getUserName()); }
if (details.getLastLoginDate() != null) { tagsBuilder.putDate("last_login", details.getLastLoginDate()); }
// Build and send tags TagsBundle tags = tagsBuilder.build(); if (!tags.isEmpty()) { pushwoosh.setTags(tags); } } }}टैग्स
Anchor link toटैग्स उपयोगकर्ताओं या डिवाइसों को असाइन किए गए की-वैल्यू पेयर होते हैं, जो वरीयताओं या व्यवहार जैसे एट्रिब्यूट्स के आधार पर सेगमेंटेशन की अनुमति देते हैं, जिससे लक्षित मैसेजिंग सक्षम होती है।
import com.pushwoosh.Pushwooshimport com.pushwoosh.tags.TagsBundleimport 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()) }}import com.pushwoosh.Pushwoosh;import com.pushwoosh.tags.TagsBundle;import java.util.List;
public class UpdateUser { public void afterUserUpdateProfile(User user) { Pushwoosh pushwoosh = Pushwoosh.getInstance(); TagsBundle.Builder tagsBuilder = TagsBundle.Builder();
// Set list of favorite categories if (user.getFavoriteCategories() != null && !user.getFavoriteCategories().isEmpty()) { 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()); }}इवेंट्स
Anchor link toइवेंट्स ऐप के भीतर विशिष्ट उपयोगकर्ता क्रियाएं या घटनाएं होती हैं जिन्हें व्यवहार का विश्लेषण करने और संबंधित संदेशों या क्रियाओं को ट्रिगर करने के लिए ट्रैक किया जा सकता है
import com.pushwoosh.Pushwooshimport com.pushwoosh.inapp.InAppManagerimport com.pushwoosh.tags.TagsBundleimport 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()) }}import com.pushwoosh.Pushwoosh;import com.pushwoosh.tags.TagsBundle;import java.util.Date;
public class Registration {
public void afterUserLogin(User user) { if (user.getUserName() != null && user.getLastLoginDate() != null) { TagsBundle attributes = new TagsBundle.Builder() .putString("name", user.getUserName()) .putDate("last_login", user.getLastLoginDate()) .build();
Pushwoosh.getInstance().postEvent("login", attributes); } }
public void afterUserPurchase(User user, Product product) { Pushwoosh pushwoosh = Pushwoosh.getInstance();
// Track purchase event TagsBundle purchaseAttributes = new TagsBundle.Builder() .putString("product_id", product.getId()) .putString("product_name", product.getName()) .putDouble("price", product.getPrice()) .putInt("quantity", product.getQuantity()) .build();
Pushwoosh.getInstance().postEvent("purchase", purchaseAttributes);
// Set user tags TagsBundle.Builder tagsBuilder = new TagsBundle.Builder(); tagsBuilder.putDate("last_purchase_date", new Date()); double lifetimeSpend = getCurrentLifetimeSpend() + product.getPrice(); tagsBuilder.putDouble("lifetime_spend", getCurrentLifetimeSpend()); pushwoosh.setTags(tagsBuilder.build()); }}रिच मीडिया
Anchor link toरिच मीडिया इंटरैक्टिव और मल्टीमीडिया सामग्री को संदर्भित करता है, जैसे कि चित्र, वीडियो, या HTML, जिसका उपयोग उपयोगकर्ता की सहभागिता को बढ़ाने के लिए नोटिफिकेशन और इन-ऐप संदेशों में किया जाता है
मोडल रिच मीडिया सुविधा को सक्षम करने के लिए, आपको इसे अपने एप्लिकेशन की AndroidManifest.xml फ़ाइल में निम्नलिखित मेटाडेटा एंट्री जोड़कर कॉन्फ़िगर करना होगा:
<meta-data android:name="com.pushwoosh.rich_media_type" android:value="Modal" />import android.util.Logimport com.pushwoosh.richmedia.RichMediaimport com.pushwoosh.richmedia.RichMediaManagerimport com.pushwoosh.richmedia.RichMediaPresentingDelegateimport com.pushwoosh.inapp.view.config.ModalRichmediaConfigimport 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}") }}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.*;
public class MainActivity extends AppCompatActivity implements RichMediaPresentingDelegate {
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); RichMediaManager.setDelegate(this);
// Configure the modal rich media ModalRichmediaConfig config = new ModalRichmediaConfig() .setViewPosition(ModalRichMediaViewPosition.BOTTOM) .setPresentAnimationType(ModalRichMediaPresentAnimationType.SLIDE_UP) .setDismissAnimationType(ModalRichMediaDismissAnimationType.SLIDE_DOWN);
// Apply the configuration RichMediaManager.setDefaultRichMediaConfig(config); }
@Override public boolean shouldPresent(RichMedia richMedia) { Log.d("Pushwoosh", "Rich media will be presented with: " + richMedia.getContent()); return true; }
@Override public void onPresent(RichMedia richMedia) { Log.d("Pushwoosh", "Rich media has been presented: " + richMedia.getContent()); }
@Override public void onClose(RichMedia richMedia) { Log.d("Pushwoosh", "Rich media has been closed: " + richMedia.getContent()); }
@Override public void onError(RichMedia richMedia, PushwooshException pushwooshException) { Log.e("Pushwoosh", "Failed to present rich media: " + richMedia.getContent() + ". Error: " + pushwooshException.getMessage()); }}समस्या निवारण
Anchor link toयदि आपको इंटीग्रेशन प्रक्रिया के दौरान कोई समस्या आती है, तो कृपया समर्थन और समुदाय सेक्शन देखें।