सामग्री पर जाएं

Android SDK को कस्टमाइज़ करें

डीप लिंकिंग

Anchor link to

आपकी एक्टिविटी में जो डीप लिंक को हैंडल करेगी, उसमें स्कीम, होस्ट और पाथप्रीफिक्स पैरामीटर्स के साथ <data> टैग जोड़ें।

<activity
android:name=".PromoActivity"
android:label="PromoActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="com.pushwoosh"
android:host="promotion"
android:pathPrefix="" />
</intent-filter>
</activity>

ऊपर दिए गए उदाहरण में, डीप लिंक PromoActivity को खोलेगा। नीचे दिया गया बेसिक इम्प्लीमेंटेशन सरलता के लिए प्रोमो आईडी मान के साथ अलर्ट प्रदर्शित करता है। आपके एप्लिकेशन में यह निश्चित रूप से कुछ उपयोगी कर सकता है!

public class PromoActivity extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.deep_link);
setTitle("Deep link activity");
Intent intent = getIntent();
String action = intent.getAction();
Uri data = intent.getData();
if (TextUtils.equals(action, Intent.ACTION_VIEW))
{
openUrl(data);
}
}
private void openUrl(Uri uri)
{
String promoId = uri.getQueryParameter("id");
Toast.makeText(getApplicationContext(), promoId, Toast.LENGTH_LONG).show();
}
}

इन-ऐप खरीदारी ट्रैकिंग

Anchor link to

यदि आप Customer Journeys में इन-ऐप खरीदारी को ट्रैक करना चाहते हैं, तो इस मेथड को कॉल करके Pushwoosh को खरीदारी की जानकारी भेजने के लिए कॉन्फ़िगर करें:

Pushwoosh.getInstance().sendInappPurchase(@NonNull String sku, @NonNull BigDecimal price, @NonNull String currency);

जियोज़ोन पुश नोटिफिकेशन

Anchor link to

जियोज़ोन पुश का उपयोग करने के लिए, com.pushwoosh:pushwoosh-location लाइब्रेरी जोड़ें और कॉल करें:

PushwooshLocation.startLocationTracking();

अपने AndroidManifest.xml में, आवश्यक अनुमतियाँ शामिल करें:

<manifest ... >
<!-- Required for geolocation-based push notifications -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- Required for precise location tracking -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- Required for background location access on Android 10 (API level 29) and higher -->
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
</manifest>

Pushwoosh के साथ स्थानीय सूचनाओं का उपयोग करना

Anchor link to

यदि आप Pushwoosh लोकल नोटिफिकेशन्स API का उपयोग करते हैं, तो अपने AndroidManifest.xml में RECEIVE_BOOT_COMPLETED अनुमति जोड़ें:

AndroidManifest.xml
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>x

Android पर बैज नंबर का उपयोग करना

Anchor link to

Pushwoosh निम्नलिखित Android लॉन्चर्स के लिए ऐप आइकन शॉर्टकट पर बैज नंबर सेट करने का समर्थन करता है:
Sony, Samsung, LG, HTC, ASUS, ADW, APEX, NOVA, HUAWEI, ZUK, OPPO।
इस कार्यक्षमता का उपयोग करने के लिए, बस अपने एप्लिकेशन में com.pushwoosh:pushwoosh-badge लाइब्रेरी जोड़ें।

कस्टम गतिविधि खोलना

Anchor link to

यदि आप पुश नोटिफिकेशन के जवाब में कोई विशेष गतिविधि शुरू करना चाहते हैं, तो उस गतिविधि में निम्नलिखित इंटेंट-फ़िल्टर जोड़ें:

AndroidManifest.xml
<activity android:name="YourActivity">
<intent-filter>
<action android:name="${applicationId}.MESSAGE"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>

लॉग स्तर को नियंत्रित करना

Anchor link to

डीबगिंग और इंटीग्रेशन में सहायता के लिए, SDK डिफ़ॉल्ट रूप से कंसोल पर सभी अनुरोधों को प्रिंट करेगा। जब आप प्रोडक्शन बिल्ड के लिए तैयार हों, तो AndroidManifest.xml में “ERROR” मान के साथ com.pushwoosh.log_level मेटा-डेटा जोड़ें। इस तरह केवल त्रुटियों के बारे में जानकारी कंसोल पर जाएगी। अन्य विकल्प निम्नलिखित में से एक हो सकता है:

NONE - SDK से कोई लॉग नहीं
ERROR - कंसोल में केवल त्रुटियाँ प्रदर्शित करें
WARN - चेतावनियाँ भी प्रदर्शित करें
INFO - सूचनात्मक संदेश प्रदर्शित करें
DEBUG - अब डीबग जानकारी भी प्रदर्शित होती है
NOISE - SDK जो कुछ भी प्रिंट कर सकता है और उससे भी अधिक

AndroidManifest.xml
<meta-data android:name="com.pushwoosh.log_level" android:value="ERROR" />

प्रोगार्ड का उपयोग करना

Anchor link to

प्रोगार्ड का उपयोग करते समय, निम्नलिखित विकल्प जोड़ें:

proguard-rules.pro
-keep class com.pushwoosh.** { *; }
-dontwarn com.pushwoosh.**

प्रोगार्ड के संबंध में Google Play Services लाइब्रेरी की आवश्यकताएं यहां देखें:
https://developers.google.com/android/guides/setup

अधिसूचना खोलने के व्यवहार को अनुकूलित करना

Anchor link to

यदि आपको पुश नोटिफिकेशन के परिणामस्वरूप प्रदर्शित होने वाली गतिविधि को प्रोग्रामेटिक रूप से चुनने की आवश्यकता है, तो आप कस्टम NotificationServiceExtension बना सकते हैं और अपने NotificationServiceExtension का पूरी तरह से योग्य क्लास नाम com.pushwoosh.notification_service_extension मान के तहत मेटाडेटा में शामिल कर सकते हैं।

AndroidManifest.xml
<meta-data
android:name="com.pushwoosh.notification_service_extension"
android:value="com.your.package.YourNotificationServiceExtension" />
YourNotificationServiceExtension.java
public class YourNotificationServiceExtension extends NotificationServiceExtension {
@Override
protected void startActivityForPushMessage(PushMessage message) {
// super.startActivityForPushMessage() starts default launcher activity
// or activity marked with ${applicationId}.MESSAGE action.
// Simply do not call it to override this behaviour.
// super.startActivityForPushMessage(message);
// start your activity instead:
Intent launchIntent = new Intent(getApplicationContext(), YourActivity.class);
launchIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
// (Optional) pass notification data to Activity
launchIntent.putExtra(Pushwoosh.PUSH_RECEIVE_EVENT, message.toJson().toString());
context.startActivity(launchIntent);
}
}

पुश नोटिफिकेशन को कस्टमाइज़ करना

Anchor link to

पुश नोटिफिकेशन के व्यू को कस्टमाइज़ करने के लिए, आपको एक कस्टम फैक्ट्री बनाने की आवश्यकता है, आप एक कस्टम NotificationFactory बना सकते हैं और अपने NotificationFactory का पूरी तरह से योग्य क्लास नाम com.pushwoosh.notification_factory मान के तहत मेटाडेटा में शामिल कर सकते हैं।

AndroidManifest.xml
<meta-data
android:name="com.pushwoosh.notification_factory"
android:value="com.your.package.YourNotificationFactory" />
YourNotificationFactory
public class YourNotificationFactory extends PushwooshNotificationFactory {
@Override
public Notification onGenerateNotification(@NonNull PushMessage pushMessage) {
if (customNotification) {
// TODO: generate and return custom notification
}
// return default Pushwoosh notification
return super.onGenerateNotification(pushMessage);
}
}

समूह सारांश को अनुकूलित करना

Anchor link to

समूह सारांश की उपस्थिति को अनुकूलित करने के लिए, एक कस्टम फ़ैक्टरी बनाएँ। आप कस्टम SummaryNotificationFactory बना सकते हैं और अपने SummaryNotificationFactory का पूरी तरह से योग्य क्लास नाम com.pushwoosh.summary_notification_factory मान के तहत मेटाडेटा में शामिल कर सकते हैं।

AndroidManifest.xml
<meta-data
android:name="com.pushwoosh.summary_notification_factory"
android:value="com.your.package.YourSummaryNotificationFactory" />
YourSummaryNotificationFactory
public class YourSummaryNotificationFactory extends PushwooshSummaryNotificationFactory {
@Override
public String summaryNotificationMessage(int notificationsAmount) {
// return the message you want
return super.summaryNotificationMessage(notificationsAmount);
}
@Override
public int summaryNotificationIconResId() {
// return the icon resource id you want
return super.summaryNotificationIconResId();
}
}

निजी एंडपॉइंट URL

Anchor link to

Pushwoosh कस्टम प्लान सब्सक्रिप्शन वाले ग्राहकों के लिए निजी एंडपॉइंट प्रदान करता है। Android SDK के लिए निजी एंडपॉइंट सेट करने के लिए, आपको अपनी AndroidManifest.xml फ़ाइल में निम्नलिखित जोड़ना होगा:

AndroidManifest.xml
<meta-data android:name="com.pushwoosh.base_url" android:value="PUSHWOOSH_PRIVATE_ENDPOINT_URL_PROVIDED" />

एक रिच मीडिया कतार बनाना

Anchor link to

यदि एक साथ कई रिच मीडिया पेजों को प्रदर्शित करना है (उदाहरण के लिए, दो या दो से अधिक इन-ऐप्स के लिए ट्रिगर इवेंट एक ही समय में होते हैं, या एक रिच मीडिया पेज पहले से ही प्रदर्शित हो रहा है जब एक अलग ट्रिगर इवेंट होता है), तो आप रिच मीडिया पेजों को प्रदर्शित करने के लिए एक कतार सेट कर सकते हैं। एक कतार बनाने के लिए, अपने प्रोजेक्ट में निम्नलिखित कोड जोड़ें:

Application.java
package com.pushwoosh.testingapp;
import com.pushwoosh.RichMediaManager;
import com.pushwoosh.exception.PushwooshException;
import com.pushwoosh.richmedia.RichMediaPresentingDelegate;
import com.pushwoosh.richmedia.RichMedia;
import com.pushwoosh.internal.utils.PWLog;
import java.util.ArrayDeque;
import java.util.concurrent.locks.ReentrantLock;
public class DefaultRichMediaPresentingDelegate implements RichMediaPresentingDelegate {
private final String TAG = DefaultRichMediaPresentingDelegate.class.getSimpleName();
private ArrayDeque<RichMedia> richMediaQueue = new ArrayDeque<>();
private RichMedia currentRichMedia = null;
private ReentrantLock reentrantLock;
public DefaultRichMediaPresentingDelegate() {
PWLog.noise(TAG, "new DefaultRichMediaPresentingDelegate:" + this);
reentrantLock = new ReentrantLock();
}
@Override
public boolean shouldPresent(RichMedia richMedia) {
PWLog.noise(TAG, "shouldPresent:" + richMedia);
if (currentRichMedia == null) {
PWLog.noise(TAG, "currentRichMedia is null");
}
if (richMedia.isLockScreen()) {
PWLog.noise(TAG, "isLockScreen is true");
return true;
}
try {
reentrantLock.lock();
if (currentRichMedia == null) {
PWLog.noise(TAG, "show:" + richMedia);
currentRichMedia = richMedia;
return true;
} else {
PWLog.noise(TAG, "add to queue:" + richMedia);
richMediaQueue.add(richMedia);
return false;
}
} finally {
reentrantLock.unlock();
}
}
@Override
public void onPresent(RichMedia richMedia) {
PWLog.noise(TAG, "onPresent" + richMedia);
}
@Override
public void onError(RichMedia richMedia, PushwooshException pushwooshException) {
PWLog.error(TAG, pushwooshException + " richMedia:"+richMedia.toString());
tryShowNextRichMediaThreadSafety();
}
@Override
public void onClose(RichMedia richMedia) {
PWLog.noise(TAG, "onClose:" + richMedia);
tryShowNextRichMediaThreadSafety();
}
private void tryShowNextRichMediaThreadSafety() {
try {
reentrantLock.lock();
tryShowNextRichMedia();
} finally {
reentrantLock.unlock();
}
}
private void tryShowNextRichMedia() {
if (!richMediaQueue.isEmpty()) {
currentRichMedia = richMediaQueue.poll();
PWLog.noise(TAG, "try manual show:" + currentRichMedia);
RichMediaManager.present(currentRichMedia);
} else {
PWLog.noise(TAG, "richMediaQueue is empty");
currentRichMedia = null;
}
}
}

कस्टम साउंड पुश

Anchor link to
  1. अपनी ऑडियो फ़ाइल को उचित फ़ोल्डर में रखें। नेटिव Android फ्रेमवर्क के लिए, आपकी फ़ाइलें /app/src/main/res/raw फ़ोल्डर में रखी जानी चाहिए।

2. एक नोटिफिकेशन चैनल बनाएँ।

3. पुश संदेश कॉन्फ़िगर करते समय एक ध्वनि चुनें।

4. उस नोटिफिकेशन चैनल को सेट करें जिससे संदेश संबंधित होगा। ऐसा करने के लिए, “Android root params” फ़ील्ड में निम्नलिखित निर्दिष्ट करें: {"pw_channel": "PUSH NOTIFICATION CHANNEL NAME"} // _यहाँ आपको कस्टम ध्वनि वाले अपने चैनल के लिए नाम निर्दिष्ट करना होगा_

रिमोट API का उपयोग करने के मामले में, अपने /createMessage API अनुरोध के भीतर पैरामीटर निम्नानुसार सेट करें:

"android_root_params": {"pw_channel": "push"} // यहां आपको कस्टम साउंड वाले अपने चैनल का नाम निर्दिष्ट करना होगा, उदाहरण के लिए, push.wav साउंड वाली सूचनाओं के लिए "push"।
"android_sound": "push" // यहां आपको एक्सटेंशन के बिना फ़ाइल का नाम निर्दिष्ट करना चाहिए

एक बार जब आप उन पैरामीटर्स के साथ पुश भेजते हैं, तो चयनित ध्वनि के साथ नोटिफिकेशन चैनल Android 8+ वाले सभी उपकरणों के लिए बनाया जाता है।

अब, कस्टम ध्वनि के साथ पुश भेजने के लिए, आपको केवल उस ध्वनि से जुड़े चैनल को निर्दिष्ट करना होगा।

कस्टम नोटिफिकेशन ध्वनियों के लिए प्रोगार्ड नियम

Anchor link to

यदि आपका ऐप कोड और संसाधन सिकोड़ने के लिए प्रोगार्ड का उपयोग करता है, तो अपनी ध्वनि फ़ाइलों को बरकरार रखना और बाहरी पुस्तकालयों के लिए उपलब्ध रखना महत्वपूर्ण है। यदि आप अपने build.gradle में minifyEnabled = true गुण का उपयोग करते हैं, तो अपने proguard-rules.pro में निम्नलिखित नियम जोड़ें:

-keep public class your.package.name.R$raw {
*;
}

यदि आप shrinkResources=true गुण का उपयोग करके कोड सिकोड़ने के अलावा अपने ऐप के संसाधनों को सिकोड़ते हैं, तो आपको अतिरिक्त रूप से यह निर्दिष्ट करना चाहिए कि आप कौन से संसाधन रखना चाहते हैं। ऐसा करने के लिए, किसी भी नाम से एक नई XML फ़ाइल बनाएँ, इसे अपने प्रोजेक्ट में कहीं सहेजें (उदाहरण के लिए, res/xml में), और resources टैग में tools:keep पैरामीटर के तहत संसाधन नाम निर्दिष्ट करें:

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
tools:keep="@raw/*"
/>

Android SDK मेटा-डेटा फ्लैग्स की पूरी सूची

Anchor link to

एक फ्लैग सेट करने के लिए, आपको application टैग के अंदर अपनी AndroidManifest.xml फ़ाइल में मेटा-डेटा ब्लॉक जोड़ना होगा। उदाहरण के लिए, यदि आप Pushwoosh एप्लिकेशन आईडी सेट करना चाहते हैं, तो अपनी AndroidManifest.xml फ़ाइल में निम्नलिखित कोड जोड़ें:

AndroidManifest.xml
<meta-data
android:name="com.pushwoosh.appid"
android:value="XXXXX-XXXXX" />
फ्लैगविवरणसंभावित मान
com.pushwoosh.appidPushwoosh एप्लिकेशन आईडी सेट करता है।XXXXX-XXXXX
com.pushwoosh.senderidFirebase प्रोजेक्ट सेंडर आईडी सेट करता है।123456789000
com.pushwoosh.log_levelलॉगिंग स्तर सेट करता है। विवरण के लिए, लॉग स्तर को नियंत्रित करना देखें।NONE / ERROR / WARN / INFO / DEBUG (default) / NOISE
com.pushwoosh.base_urlPushwoosh सर्वर बेस यूआरएल को ओवरराइड करता है।https://cp.pushwoosh.com/json/1.3/ (default)
com.pushwoosh.notification_service_extensionकस्टम NotificationServiceExtension। विवरण के लिए, अधिसूचना खोलने के व्यवहार को अनुकूलित करना देखें।com.myapp.MyNotificationServiceExtension
com.pushwoosh.notification_factory

कस्टम NotificationFactory।

विवरण के लिए, पुश नोटिफिकेशन को कस्टमाइज़ करना देखें।

com.myapp.MyNotificationFactory
com.pushwoosh.summary_notification_factoryकस्टम SummaryNotificationFactory।com.myapp.MySummaryNotificationFactory
com.pushwoosh.multi_notification_modeयदि सत्य है, तो अधिसूचना समूहीकृत की जाएगी। यदि असत्य है, तो केवल अंतिम प्राप्त अधिसूचना प्रदर्शित की जाएगी।true / false (default)
com.pushwoosh.allow_server_communicationयदि सत्य है, तो SDK को Pushwoosh सर्वर पर नेटवर्क अनुरोध भेजने की अनुमति है।true (default) / false
com.pushwoosh.handle_notifications_using_workmanagerयदि सत्य है, तो WorkManager को सूचनाओं को संभालने के लिए सेट किया गया है।true / false (default)
com.pushwoosh.notification_iconकस्टम अधिसूचना (छोटा) आइकन संसाधन नाम। यदि शून्य है, तो डिफ़ॉल्ट एप्लिकेशन आइकन का उपयोग किया जाएगा।res/drawable-xxhdpi-v11/notification_small_icon.png / null
com.pushwoosh.notification_icon_colorअधिसूचना (छोटा) आइकन पृष्ठभूमि रंग।#FFFFFF
com.pushwoosh.allow_collecting_device_dataयदि सत्य है, तो SDK को डिवाइस डेटा एकत्र करने और Pushwoosh को भेजने की अनुमति है।true (default) / false
com.pushwoosh.allow_collecting_device_os_versionयदि सत्य है, तो SDK को डिवाइस OS संस्करण एकत्र करने और Pushwoosh को भेजने की अनुमति है।true (default) / false
com.pushwoosh.allow_collecting_device_localeयदि सत्य है, तो SDK को डिवाइस लोकेल एकत्र करने और Pushwoosh को भेजने की अनुमति है।true (default) / false
com.pushwoosh.allow_collecting_device_modelयदि सत्य है, तो SDK को डिवाइस मॉडल एकत्र करने और Pushwoosh को भेजने की अनुमति है।true (default) / false
com.pushwoosh.in_app_business_solutions_cappingpush-unregister इन-ऐप को एक दिन में कितनी बार दिखाया जा सकता है, इसकी संख्या को सीमित करता है।1 (default), 2, …, n
com.pushwoosh.start_foreground_serviceयदि सत्य है, तो PushwooshLocation.startLocationTracking() कॉल के साथ फोरग्राउंड सेवा शुरू की जाती हैtrue / false (default)
com.pushwoosh.foreground_service_notification_text”com.pushwoosh.start_foreground_service” कुंजी के लिए फोरग्राउंड सेवा शुरू होने पर बनाई गई अधिसूचना का पाठ सेट करता है।Work in progress (default)
com.pushwoosh.foreground_service_notification_channel_name”com.pushwoosh.start_foreground_service” कुंजी के लिए फोरग्राउंड सेवा शुरू होने पर बनाई गई अधिसूचना के लिए चैनल का नाम सेट करता है।Foreground service (default)
com.pushwoosh.trusted_package_namesनिर्दिष्ट पैकेज के साथ Pushwoosh HWID साझा करने की अनुमति देता है”com.mycompany.myapp1, com.mycompany.myapp2”

TTL (टाइम-टू-लिव) के माध्यम से पुश नोटिफिकेशन हटाना

Anchor link to

TTL (टाइम-टू-लिव) का उपयोग करके एक निर्दिष्ट समय अवधि के बाद पुश नोटिफिकेशन को स्वचालित रूप से हटाने के लिए, इन चरणों का पालन करें:

  1. एक कस्टम NotificationFactory बनाएँ। और जानें

  2. onGenerateNotification() विधि में, Notification.Builder या NotificationCompat.Builder क्लास का उपयोग करके एक अधिसूचना बनाएँ और setTimeoutAfter विधि को कॉल करें:

public class YourNotificationFactory extends PushwooshNotificationFactory {
@Override
public Notification onGenerateNotification(@NonNull PushMessage pushMessage) {
Notification.Builder builder = new Notification.Builder(getApplicationContext(), addChannel(pushData));
Notification notification = builder.setContentText(pushData.getMessage())
.setContentTitle(title)
.setContentText(text)
// rest of your notification creation code
.setTimeoutAfter(timeout) // time in milliseconds before the notification is canceled
.build();
}
}

अपनी प्रतिक्रिया हमारे साथ साझा करें

Anchor link to

आपकी प्रतिक्रिया हमें एक बेहतर अनुभव बनाने में मदद करती है, इसलिए यदि आपको SDK इंटीग्रेशन प्रक्रिया के दौरान कोई समस्या आती है तो हम आपसे सुनना पसंद करेंगे। यदि आपको कोई कठिनाई आती है, तो कृपया इस फ़ॉर्म के माध्यम से अपने विचार हमारे साथ साझा करने में संकोच न करें।