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

Pushwoosh Android SDK पर अक्सर पूछे जाने वाले प्रश्न

Android पुश टोकन और HWID कैसा दिखता है?

Anchor link to

Android डिवाइस पुश टोकन की लंबाई अलग-अलग होती है (255 अक्षरों से कम) और यह APA91b से शुरू होता है, उदाहरण के लिए:

APA91bFoi3lMMre9G3XzR1LrF4ZT82_15MsMdEICogXSLB8-MrdkRuRQFwNI5u8Dh0cI90ABD3BOKnxkEla8cGdisbDHl5cVIkZah5QUhSAxzx4Roa7b4xy9tvx9iNSYw-eXBYYd8k1XKf8Q_Qq1X9-x-U-Y79vdPq

टोकन में अक्सर APA91b से पहले एक कोलन-पृथक उपसर्ग होता है, उदाहरण के लिए: eQnyCE6ULAQ:APA91bGrh4ya3b_owo9tshZNVAGhZdGMGb3sA5HbM...

Pushwoosh HWID के रूप में UUID का उपयोग करता है, यानी 32 अल्फान्यूमेरिकल अक्षरों की यादृच्छिक रूप से उत्पन्न स्ट्रिंग्स: 123e4567-e89b-12d3-a456-426655440000

मैं अपना Android डिवाइस पुश टोकन कैसे प्राप्त कर सकता हूँ?

Anchor link to

आप कंसोल लॉग में अपना Android डिवाइस पुश टोकन प्राप्त कर सकते हैं। Android Studio में logcat टूल का उपयोग करें।

%USERPROFILE%\AppData\Local\Android\sdk\tools\monitor.bat में monitor.bat खोलें, अपने डिवाइस को पीसी से कनेक्ट करें और Android सेटिंग्स में USB डिबगिंग की अनुमति दें। अपने डिवाइस पर अपना एप्लिकेशन चलाएं। /registerDevice का पता लगाएं, बाद में Test Devices में उपयोग करने के लिए अपने डिवाइस के लिए पुश टोकन ढूंढें।

Android Studio में पुश टोकन पंजीकरण जानकारी के साथ लॉगकैट आउटपुट दिखाने वाला स्क्रीनशॉट

कौन सी अनुमतियाँ आवश्यक हैं और कौन सी वैकल्पिक हैं?

Anchor link to

Android डिवाइस पर इंस्टॉल होने पर, एप्लिकेशन Pushwoosh SDK के संबंध में निम्नलिखित अनुमतियों के लिए पूछेगा:

<!-- FCM Firebase सेवाओं से जुड़ता है। -->
<uses-permission android:name="android.permission.INTERNET"/>
<!-- जब कोई संदेश प्राप्त होता है तो प्रोसेसर को सोने से रोकता है। -->
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<!-- इस अनुमति का उपयोग यह निर्धारित करने के लिए किया जाता है कि डिवाइस नेटवर्क तक पहुंच सकता है या नहीं। -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<!-- इस ऐप को डेटा संदेश पंजीकृत करने और प्राप्त करने की अनुमति है। -->
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />

हमारा SDK छवियों, डिवाइस संपर्कों आदि तक पहुंचने की अनुमति नहीं मांगता है।

मैं UserID कैसे सेट करूं?

Anchor link to

आप एक उपयोगकर्ता पहचानकर्ता (UserID) सेट कर सकते हैं, जो एक Facebook ID, उपयोगकर्ता नाम, ईमेल, या कोई अन्य अद्वितीय उपयोगकर्ता ID हो सकता है। यह आपको एक ही उपयोगकर्ता से जुड़े कई उपकरणों में डेटा और घटनाओं का मिलान करने की अनुमति देता है। UserID सेट करने के लिए, setUserId विधि को कॉल करें।

उदाहरण

Pushwoosh.getInstance().setUserId("testUser");

Android सब्सक्राइबर की कुल संख्या कितनी सटीक है?

Anchor link to

Pushwoosh FCM से “NotRegistered” प्रतिक्रिया प्राप्त होने पर डेटाबेस से अनसब्सक्राइब किए गए Android उपकरणों को साफ़ कर देता है, जो किसी विशिष्ट डिवाइस तक पहुंचने के दूसरे प्रयास के बाद वापस किया जा सकता है। इसका मतलब है कि आपको डेटाबेस से हटाने के लिए एक अनसब्सक्राइब किए गए डिवाइस पर 2 पुश भेजने होंगे।

निम्नलिखित सबसे आम परिदृश्य है जिसका वर्णन FCM दस्तावेज़ीकरण में किया गया है:

  1. आपका सब्सक्राइबर ऐप को अनइंस्टॉल कर देता है।
  2. Pushwoosh FCM सर्वर को एक संदेश भेजता है।
  3. FCM सर्वर आपके उपयोगकर्ता के डिवाइस पर संदेश भेजता है।
  4. डिवाइस पर FCM क्लाइंट संदेश प्राप्त करता है और पता लगाता है कि आपका एप्लिकेशन अनइंस्टॉल कर दिया गया है; पता लगाने का विवरण उस प्लेटफ़ॉर्म पर निर्भर करता है जिस पर ऐप चल रहा है।
  5. डिवाइस पर FCM क्लाइंट FCM सर्वर को सूचित करता है कि ऐप अनइंस्टॉल कर दिया गया था।
  6. FCM सर्वर पंजीकरण आईडी को हटाने के लिए चिह्नित करता है।
  7. Pushwoosh FCM को एक और संदेश भेजता है।
  8. FCM एक NotRegistered संदेश लौटाता है।
  9. Pushwoosh आपके उपयोगकर्ता आधार से पुश टोकन हटा देता है।

FCM से पंजीकरण आईडी को पूरी तरह से हटाने में कुछ समय लग सकता है। इस प्रकार यह संभव है कि उपरोक्त चरण 7 में भेजे गए संदेश को प्रतिक्रिया के रूप में एक वैध संदेश आईडी मिले, भले ही संदेश क्लाइंट ऐप को वितरित नहीं किया जाएगा।

क्या मैं Android पर भेजे गए पुश में HTML टैग का उपयोग कर सकता हूँ?

Anchor link to

हाँ, Android में आप पुश की उपस्थिति को संशोधित करने के लिए निम्नलिखित HTML टैग का उपयोग कर सकते हैं:

<span style="color: green;"><b><i><span style="text-decoration: underline;">Hello world!
Hello hi hey</span></i></b></span>

इन HTML टैग को Message इनपुट फ़ील्ड में रखें, और उन्हें API अनुरोध में भी उपयोग करें। कुछ Android डिवाइस इन HTML टैग को ठीक से संसाधित करने में विफल हो सकते हैं, लेकिन अधिकांश डिवाइस स्वरूपण को सही ढंग से प्रदर्शित करते हैं।

Android Lollipop (और बाद के संस्करणों) में नोटिफिकेशन आइकन कैसे सेट करें?

Anchor link to

Android Lollipop में आइकन केवल सफेद होने के लिए बदल दिए गए थे। इसलिए, यदि आप अपनी AndroidManifest.xml फ़ाइल में targetSdkVersion >= 21 चुनते हैं, तो Android केवल आइकन के अल्फा-चैनल का उपयोग करेगा।
Android दस्तावेज़ीकरण में व्यवहार पर अधिक देखें।

सिस्टम एक्शन आइकन और मुख्य नोटिफिकेशन आइकन में सभी गैर-अल्फा चैनलों को अनदेखा करता है। मान लें कि ये आइकन केवल-अल्फा होंगे। सिस्टम नोटिफिकेशन आइकन को सफेद और एक्शन आइकन को गहरे भूरे रंग में खींचता है। यह Pushwoosh SDK नियंत्रण से परे है

1. Android दिशानिर्देशों के अनुसार नोटिफिकेशन आइकन बनाएं। दस्तावेज़ीकरण के अनुसार, सिस्टम सभी रंगों को अनदेखा कर देगा।

2. आइकन का नाम pw_notification.png रखें और इसे res/drawable फ़ोल्डर में डालें। Pushwoosh SDK इस आइकन को नोटिफिकेशन के लिए डिफ़ॉल्ट के रूप में उपयोग करेगा।

3. वैकल्पिक रूप से, आप Remote API का उपयोग कर सकते हैं और "android_icon" पैरामीटर मान को आइकन छवि (बिना फ़ाइल एक्सटेंशन के) पर सेट कर सकते हैं।

अन्य FCM सेवाओं के साथ Pushwoosh SDK का उपयोग करना

Anchor link to

आप Pushwoosh का उपयोग अन्य SDK के साथ कर सकते हैं जो पुश मैसेजिंग के लिए FCM का उपयोग करते हैं। ऐसा करने के लिए, सेवाओं के बीच घटनाओं को वितरित करने के लिए एक राउटर सेवा बनाएं। सबसे पहले, मुख्य Pushwoosh मॉड्यूल के साथ pushwoosh-firebase निर्भरता जोड़ें:

build.gradle
implementation 'com.pushwoosh:pushwoosh-firebase:6.0.3'

रूटिंग क्लास बनाएं:

import com.pushwoosh.firebase.PushwooshFcmHelper;
class FirebaseMessagingRouterService : FirebaseMessagingService() {
override fun onNewToken(token: String?) {
super.onNewToken(token)
PushwooshFcmHelper.onTokenRefresh(token)
sendTokenToAnotherService(token)
}
override fun onMessageReceived(remoteMessage: RemoteMessage) {
if (PushwooshFcmHelper.isPushwooshMessage(remoteMessage)) {
//this is a Pushwoosh push, SDK will handle it automatically
PushwooshFcmHelper.onMessageReceived(this, remoteMessage)
} else {
//this is not a Pushwoosh push, you should handle it by yourself
dispatchNonPushwooshMessage(remoteMessage);
}
}
private fun dispatchNonPushwooshMessage(remoteMessage: RemoteMessage) {
// Implement your push handling logics here
}
}

अपने AndroidManifest.xml में राउटर पंजीकृत करें:

AndroidManifest.xml
<service
android:name=".FirebaseMessagingRouterService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>

LeakCanary या AppMetrica लाइब्रेरी के साथ Pushwoosh का उपयोग करना

Anchor link to

जब आप LeakCanary, AppMetrica या अन्य जैसे एनालिटिक्स टूल को एकीकृत करते हैं, तो ये लाइब्रेरी एक नई प्रक्रिया शुरू करती हैं, जिससे ऐप का नया इंस्टेंस बनता है। चूंकि आप किसी अन्य प्रक्रिया में पुश नोटिफिकेशन नहीं सुन सकते हैं, इसके परिणामस्वरूप java.lang.NullPointerException फेंका जाता है।

यदि आप Application.onCreate() के अंदर registerForPushNotifications को कॉल करते हैं, तो आपको जांचना चाहिए कि क्या आप एप्लिकेशन की मुख्य प्रक्रिया में हैं। इस जांच को करने के लिए निम्नलिखित कोड का उपयोग करें:

List<ActivityManager.RunningAppProcessInfo> runningAppProcesses = ((ActivityManager) getSystemService(Context.ACTIVITY_SERVICE)).getRunningAppProcesses();
if (runningAppProcesses != null && runningAppProcesses.size() != 0) {
for (ActivityManager.RunningAppProcessInfo runningAppProcessInfo : runningAppProcesses) {
boolean isCurrentProcess = runningAppProcessInfo.pid == android.os.Process.myPid();
boolean isMainProcessName = getPackageName().equals(runningAppProcessInfo.processName);
if (isCurrentProcess && isMainProcessName) {
Pushwoosh.getInstance().registerForPushNotifications(...);
break;
}
}
}

किसी डिवाइस से स्थानीय रूप से प्राप्त विशेष नोटिफिकेशन को हटाना

Anchor link to

यदि आप अपने एप्लिकेशन के अंदर कोई विशिष्ट कार्रवाई करते समय एक गैर-प्रासंगिक पुश को हटाना चाहते हैं, तो आप निम्नलिखित दृष्टिकोण का उपयोग कर सकते हैं:

MainActivity.java
public class MainActivity extends AppCompatActivity {
List<NotificationCreatedEvent> savedPushes = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Pushwoosh.getInstance().registerForPushNotifications();
PushwooshNotificationSettings.setMultiNotificationMode(true);
findViewById(R.id.clear_button).setOnClickListener( v -> {
cancelPushes();
});
EventBus.subscribe(NotificationCreatedEvent.class, event -> {
try {
if (event.getMessage().getCustomData() == null)
return;
//cancel pushes only with a specific flag
if (new JSONObject(event.getMessage().getCustomData()).getBoolean("cancel")) {
savedPushes.add(event);
}
} catch (JSONException e) {
}
});
}
private void cancelPushes() {
NotificationManager manager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
if (manager == null) {
return;
}
for (NotificationCreatedEvent event : savedPushes) {
manager.cancel(event.getMessageTag(), event.getMessageId());
}
}
}

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

Anchor link to

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