iOS संदेश डिलीवरी ट्रैकिंग
Pushwoosh में एक API मेथड है जो पुश नोटिफिकेशन की डिलीवरी को ट्रैक करता है। iOS ऐप्स इस मेथड को आउट ऑफ द बॉक्स सपोर्ट नहीं करते हैं, क्योंकि iOS पर पुश नोटिफिकेशन OS द्वारा हैंडल किए जाते हैं, Pushwoosh SDK द्वारा नहीं। आप अपने प्रोजेक्ट में एक नोटिफिकेशन सर्विस एक्सटेंशन जोड़कर डिलीवरी ट्रैकिंग जोड़ सकते हैं। यह पेज दिखाता है कि iOS ऐप्स के लिए संदेश डिलीवरी ट्रैकिंग कैसे लागू करें।
नोटिफिकेशन सर्विस एक्सटेंशन जोड़ें
Anchor link to-
Xcode में, File > New > Target… चुनें।
-
Notification Service Extension चुनें और Next दबाएँ।
- उत्पाद का नाम दर्ज करें और Finish दबाएँ।
- Activate scheme प्रॉम्प्ट पर Cancel दबाएँ।
कैंसिल करके, आप Xcode को आपके द्वारा बनाए गए एक्सटेंशन के बजाय आपके ऐप को डीबग करने देते हैं। यदि आपने गलती से इसे सक्रिय कर दिया है, तो आप Xcode के भीतर अपने ऐप को डीबग करने के लिए वापस स्विच कर सकते हैं।
नोटिफिकेशन सर्विस एक्सटेंशन के लिए निर्भरताएँ (केवल CocoaPods)
Anchor link toयदि आप निर्भरताओं को प्रबंधित करने के लिए स्विफ्ट पैकेज मैनेजर का उपयोग करते हैं, तो आप इस चरण को छोड़ सकते हैं, क्योंकि निर्भरताएँ स्वचालित रूप से जुड़ जाती हैं।
अपनी Podfile खोलें और टारगेट के लिए निर्भरता जोड़ें:
target 'NotificationServiceExtension' do use_frameworks! pod 'PushwooshXCFramework'endनिर्भरताओं को स्थापित करने के लिए टर्मिनल में निम्नलिखित कमांड चलाएँ:
rm -rf Podfile.lockpod deintegratepod setuppod repo updatepod installसंदेश डिलीवरी इवेंट्स को ट्रैक करने के लिए कोड जोड़ें
Anchor link toअपने एक्सटेंशन को PushwooshNotificationServiceExtension का एक सबक्लास बनाएँ। एक खाली सबक्लास पर्याप्त है: Pushwoosh संदेश डिलीवरी इवेंट भेजता है, बैज सेट करता है, मीडिया अटैचमेंट डाउनलोड करता है, और टाइमआउट फॉलबैक को स्वचालित रूप से हैंडल करता है।
अपनी NotificationService फ़ाइल की उत्पन्न सामग्री को बदलें:
import UserNotificationsimport PushwooshFramework
class NotificationService: PushwooshNotificationServiceExtension {}#import <PushwooshFramework/PushwooshNotificationServiceExtension.h>
@interface NotificationService : PushwooshNotificationServiceExtension
@end
@implementation NotificationService
@endऐप आईडी
Anchor link to7.1.0 से एक्सटेंशन होस्ट ऐप की Info.plist से Pushwoosh_APPID (और अन्य Pushwoosh_* कुंजियाँ) विरासत में लेता है, इसलिए आपको इसे एक्सटेंशन में डुप्लिकेट करने की आवश्यकता नहीं है। एक्सटेंशन Info.plist में Pushwoosh_APPID केवल तभी जोड़ें जब आप होस्ट मान को ओवरराइड करना चाहते हैं:
<key>Pushwoosh_APPID</key><string>XXXXX-XXXXX</string>ऐप ग्रुप (बैज और रिवर्स प्रॉक्सी)
Anchor link toऐप और एक्सटेंशन के बीच साझा किया गया एक ऐप ग्रुप बैज काउंट को सिंक करने और होस्ट ऐप द्वारा संग्रहीत रिवर्स-प्रॉक्सी सेटिंग्स को पढ़ने के लिए आवश्यक है।
-
एक्सटेंशन टारगेट में App Groups क्षमता जोड़ें और वहां उसी ग्रुप को सक्षम करें जैसा कि होस्ट ऐप में है। यह आवश्यक है — साझा कंटेनर के बिना बैज काउंट और रिवर्स-प्रॉक्सी सेटिंग्स सिंक नहीं की जा सकती हैं।
-
ऐप ग्रुप का नाम प्रदान करें।
Pushwoosh_APPIDकी तरह, एक्सटेंशन 7.1.0 से होस्ट ऐप की Info.plist सेPW_APP_GROUPS_NAMEविरासत में लेता है, इसलिए यदि आपने इसे पहले से ही बैज के लिए सेट किया है तो आपको इसे एक्सटेंशन में जोड़ने की आवश्यकता नहीं है। इसे एक्सटेंशन Info.plist में केवल होस्ट मान को ओवरराइड करने के लिए सेट करें, या इसेpushwooshAppGroupsNameको ओवरराइड करके प्रोग्रामेटिक रूप से प्रदान करें।
<key>PW_APP_GROUPS_NAME</key><string>group.com.example.app</string>नोटिफिकेशन को कस्टमाइज़ करें (वैकल्पिक)
Anchor link toबेस क्लास कुछ ओवरराइड पॉइंट उजागर करता है, कम से कम से लेकर सबसे अधिक नियंत्रण तक। Pushwoosh अभी भी हर मामले में डिलीवरी इवेंट, बैज, अटैचमेंट और टाइमआउट फॉलबैक चलाता है।
Info.plist कुंजी का उपयोग करने के बजाय ऐप ग्रुप को प्रोग्रामेटिक रूप से सेट करें:
override func pushwooshAppGroupsName() -> String? { "group.com.example.app"}Pushwoosh द्वारा पुश को प्रोसेस करने से पहले एसिंक्रोनस तैयारी चलाएँ — उदाहरण के लिए, पुश स्टोरीज़ मीडिया को प्रीफ़ेच करना — मानक didReceive को ओवरराइड किए बिना। completion को मुख्य थ्रेड पर ठीक एक बार कॉल करें:
override func pushwooshPrepare(for request: UNNotificationRequest, completion: @escaping () -> Void) { // async work here completion()}didReceive को ओवरराइड करके सामग्री को दिखाए जाने से पहले संशोधित करें। अपने स्वयं के सामग्री हैंडलर के साथ super को कॉल करें, इसके अंदर सामग्री को म्यूटेट करें, फिर इसे मूल हैंडलर को फॉरवर्ड करें:
override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) { super.didReceive(request) { content in let mutable = (content.mutableCopy() as? UNMutableNotificationContent) ?? content // customize `mutable` here contentHandler(mutable) }}लिगेसी इंटीग्रेशन
Anchor link toयह निम्न-स्तरीय API एक सादे UNNotificationServiceExtension से समान प्रसंस्करण (डिलीवरी इवेंट, बैज, अटैचमेंट) को संचालित करता है:
import UserNotificationsimport PushwooshFramework
class NotificationService: UNNotificationServiceExtension {
override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) { PWNotificationExtensionManager.sharedManager() .handleNotificationRequest(request, contentHandler: contentHandler) }}#import "PWNotificationExtensionManager.h"
@interface NotificationService : UNNotificationServiceExtension
@end
@implementation NotificationService
- (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent *))contentHandler { [[PWNotificationExtensionManager sharedManager] handleNotificationRequest:request contentHandler:contentHandler];}
@endहमारे साथ अपनी प्रतिक्रिया साझा करें
Anchor link toआपकी प्रतिक्रिया हमें एक बेहतर अनुभव बनाने में मदद करती है, इसलिए यदि आपको SDK इंटीग्रेशन प्रक्रिया के दौरान कोई समस्या आती है तो हम आपसे सुनना पसंद करेंगे। यदि आपको कोई कठिनाई आती है, तो कृपया इस फ़ॉर्म के माध्यम से हमारे साथ अपने विचार साझा करने में संकोच न करें।