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

iOS पुश कस्टमाइज़ेशन

जब कोई iOS डिवाइस अलर्ट वाला नोटिफिकेशन प्राप्त करता है, तो सिस्टम अलर्ट की सामग्री को दो चरणों में प्रदर्शित करता है। शुरुआत में, यह नोटिफिकेशन से शीर्षक, उपशीर्षक और बॉडी टेक्स्ट की दो से चार पंक्तियों के साथ एक संक्षिप्त बैनर प्रदर्शित करता है। यदि उपयोगकर्ता संक्षिप्त बैनर दबाता है, तो iOS किसी भी नोटिफिकेशन-संबंधित कार्यों सहित पूर्ण नोटिफिकेशन इंटरफ़ेस प्रदर्शित करता है। सिस्टम संक्षिप्त बैनर के लिए इंटरफ़ेस प्रदान करता है, लेकिन आप एक नोटिफिकेशन कंटेंट ऐप एक्सटेंशन का उपयोग करके पूर्ण इंटरफ़ेस को कस्टमाइज़ कर सकते हैं।

नोटिफिकेशन कंटेंट ऐप एक्सटेंशन एक व्यू कंट्रोलर को मैनेज करता है जो आपके कस्टम नोटिफिकेशन इंटरफ़ेस को प्रदर्शित करता है। यह व्यू कंट्रोलर आपके नोटिफिकेशन के लिए डिफ़ॉल्ट सिस्टम इंटरफ़ेस को पूरक या प्रतिस्थापित कर सकता है। आप अपने व्यू कंट्रोलर का उपयोग कर सकते हैं:

  • अलर्ट के शीर्षक, उपशीर्षक और बॉडी टेक्स्ट सहित आइटमों के प्लेसमेंट को कस्टमाइज़ करें।
  • इंटरफ़ेस तत्वों के लिए अलग-अलग फ़ॉन्ट या स्टाइलिंग को प्रतिस्थापित करें।
  • ऐप-विशिष्ट डेटा प्रदर्शित करें—उदाहरण के लिए, नोटिफिकेशन के पेलोड की ऐप-विशिष्ट कुंजियों में संग्रहीत डेटा।
  • कस्टम चित्र या ब्रांडिंग शामिल करें।

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

अपने प्रोजेक्ट में नोटिफिकेशन कंटेंट ऐप एक्सटेंशन जोड़ें

Anchor link to

अपने iOS ऐप में एक नोटिफिकेशन कंटेंट ऐप एक्सटेंशन जोड़ने के लिए:

  1. Xcode में File > New > Target चुनें।
  2. iOS एप्लीकेशन एक्सटेंशन से Notification Content Extension चुनें।
  3. Next पर क्लिक करें।
  4. अपने ऐप एक्सटेंशन के लिए एक नाम प्रदान करें।
  5. Finish पर क्लिक करें।

अपने व्यू कंट्रोलर में व्यू जोड़ें

Anchor link to

Xcode द्वारा प्रदान किए गए टेम्पलेट में आपके कॉन्फ़िगर करने के लिए एक स्टोरीबोर्ड और एक व्यू कंट्रोलर शामिल है। अपने व्यू कंट्रोलर में व्यू जोड़कर अपना कस्टम नोटिफिकेशन इंटरफ़ेस बनाएं। उदाहरण के लिए, नोटिफिकेशन के शीर्षक, उपशीर्षक और बॉडी टेक्स्ट को प्रदर्शित करने के लिए लेबल का उपयोग करें। आप इमेज व्यू और व्यू भी जोड़ सकते हैं जो गैर-इंटरैक्टिव सामग्री प्रदर्शित करते हैं। आपको अपने व्यू के लिए कोई प्रारंभिक सामग्री प्रदान करने की आवश्यकता नहीं है।

आप iOS 12 और बाद के संस्करणों में इंटरैक्टिव कंट्रोल (उदाहरण के लिए, बटन या स्विच) जोड़ सकते हैं। अधिक जानकारी के लिए, सपोर्ट इंटरैक्टिव कंट्रोल देखें।

अपने व्यू कंट्रोलर को कॉन्फ़िगर करें

Anchor link to

अपने लेबल और अन्य व्यू को अपडेट करने के लिए अपने व्यू कंट्रोलर के didReceive(_:) मेथड का उपयोग करें। नोटिफिकेशन पेलोड में आपके व्यू कंट्रोलर को कॉन्फ़िगर करते समय उपयोग करने के लिए डेटा होता है। आप अपने ऐप एक्सटेंशन की अन्य फाइलों से भी डेटा का उपयोग कर सकते हैं। लिस्टिंग 1 इस मेथड का एक संस्करण दिखाता है जो नोटिफिकेशन पेलोड से शीर्षक और बॉडी टेक्स्ट को पुनः प्राप्त करता है और स्ट्रिंग्स को दो UILabel कंट्रोल को असाइन करता है, जो व्यू कंट्रोलर पर आउटलेट के रूप में संग्रहीत होते हैं।

// Configuring the notification interface at runtime
func didReceive(_ notification: UNNotification) {
self.bodyText?.text = notification.request.content.body
self.headlineText?.text = notification.request.content.title
}

यदि आपका व्यू कंट्रोलर पहले से ही दिखाई दे रहा है और दूसरा नोटिफिकेशन आता है, तो सिस्टम नए नोटिफिकेशन पेलोड के साथ didReceive(_:) मेथड को फिर से कॉल करता है।

इंटरैक्टिव कंट्रोल का समर्थन करें

Anchor link to

iOS 12 और बाद के संस्करणों में आप अपने कस्टम नोटिफिकेशन में उपयोगकर्ता इंटरैक्शन को सक्षम कर सकते हैं। यह आपको अपने कस्टम इंटरफ़ेस में बटन और स्विच जैसे इंटरैक्टिव कंट्रोल जोड़ने की सुविधा देता है।

उपयोगकर्ता इंटरैक्शन को सक्षम करने के लिए:

  1. अपने नोटिफिकेशन कंटेंट एक्सटेंशन की info.plist फ़ाइल खोलें।
  2. अपने एक्सटेंशन विशेषताओं में UNNotificationExtensionUserInteractionEnabled कुंजी जोड़ें। इसे एक बूलियन मान दें, जिसे YES पर सेट किया गया हो।
नोटिफिकेशन एक्सटेंशन की info.plist फ़ाइल में उपयोगकर्ता इंटरैक्शन को सक्षम करना

अपने पुश नोटिफिकेशन एक्सटेंशन में Apple Pay जोड़ें (उदाहरण व्यू)

Anchor link to

पुश नोटिफिकेशन एक्सटेंशन में Apple Pay बटन के साथ कोड ब्लॉक उदाहरण

Anchor link to
import UIKit
import Foundation
import UserNotifications
import UserNotificationsUI
import PassKit
class NotificationViewController: UIViewController, UNNotificationContentExtension, PKPaymentAuthorizationViewControllerDelegate {
func paymentAuthorizationViewControllerDidFinish(_ controller: PKPaymentAuthorizationViewController) {
controller.dismiss(animated: true, completion: nil)
}
@IBOutlet weak var buyWithApplePayButton: UIButton!
@IBOutlet weak var containerView: UIView!
@IBOutlet weak var payInAppButton: UIButton!
@IBOutlet weak var segmentCustom: UISegmentedControl!
private var amount: NSDecimalNumber = 0;
override func viewDidLoad() {
super.viewDidLoad()
buttonCustomisation()
amount = NSDecimalNumber.init(value: 5)
}
func buttonCustomisation () {
self.buyWithApplePayButton.layer.masksToBounds = true
self.buyWithApplePayButton.layer.cornerRadius = 10
self.payInAppButton.layer.masksToBounds = true
self.payInAppButton.layer.cornerRadius = 10
self.containerView.layer.borderColor = UIColor.gray.cgColor
self.containerView.layer.borderWidth = 0.7
self.containerView.layer.masksToBounds = true
self.containerView.layer.cornerRadius = 20
}
func didReceive(_ notification: UNNotification) {
// Configuring the notification interface at runtime
}
@IBAction func buyWithApplePayAction(_ sender: Any) {
let request = PKPaymentRequest()
request.merchantIdentifier = "merchant.com.sample.ApplePayAction"
request.supportedNetworks = [PKPaymentNetwork.visa, PKPaymentNetwork.masterCard, PKPaymentNetwork.amex]
request.merchantCapabilities = PKMerchantCapability.capability3DS
request.countryCode = "US"
request.currencyCode = "USD"
request.paymentSummaryItems = [
PKPaymentSummaryItem(label: "Some Product", amount: amount)
]
let applePayController = PKPaymentAuthorizationViewController(paymentRequest: request)
applePayController?.delegate = self
self.present(applePayController!, animated: true, completion: nil)
}
@IBAction func payInAppButtonAction(_ sender: Any) {
print("pay in app button tapped")
}
@IBAction func segmentAction(_ sender: Any) {
switch segmentCustom.selectedSegmentIndex {
case 0:
amount = NSDecimalNumber.init(value: 5)
break
case 1:
amount = NSDecimalNumber.init(value: 10)
break
case 2:
amount = NSDecimalNumber.init(value: 20)
break
default:
amount = NSDecimalNumber.init(value: 5)
break
}
}
}