# iOS রিচ নোটিফিকেশন ইন্টিগ্রেশন

iOS 10 থেকে, আপনি পুশ নোটিফিকেশনে একটি স্ট্যাটিক বা অ্যানিমেটেড ছবি বা এমনকি একটি ভিডিও সংযুক্ত করতে পারেন। ব্যবহারকারী যখন নোটিফিকেশনে ফোর্স-ট্যাপ করবে তখন এটি সরাসরি নোটিফিকেশনে প্রদর্শিত হবে।

এই কার্যকারিতা সক্রিয় করা খুব সহজ, এতে খুব কম কোডিং জড়িত। চলুন শুরু করা যাক!

## ১. নোটিফিকেশন সার্ভিস এক্সটেনশন তৈরি করা

প্রথমে একটি [Notification Service Extension](https://developer.apple.com/reference/usernotifications/unnotificationserviceextension) তৈরি করুন। এই এক্সটেনশনটি ব্যবহারকারীকে দেখানো বিষয়বস্তু ডাউনলোড করে।

আপনার প্রজেক্টে নতুন টার্গেট যোগ করুন (File -> New -> Target) এবং _Notification Service Extension_ তৈরি করুন।

<img src="/ios-rich-notification-1.webp" alt="নোটিফিকেশন সার্ভিস এক্সটেনশন তৈরি করা হচ্ছে"/>

<Aside type="caution">
নোটিফিকেশন সার্ভিস এক্সটেনশনের একটি আলাদা Apple App ID এবং Provisioning profile থাকে!

মনে রাখবেন যে নোটিফিকেশন এক্সটেনশনের নিজস্ব বান্ডেল আইডি (_যেমন:_`com.pushwoosh.example.NotificationService`) এবং নিজস্ব **Apple App ID** ও **Provisioning profile** থাকে যা Apple Developer Portal-এ আলাদাভাবে সেটআপ করতে হবে।
</Aside>

## ২. নোটিফিকেশন সার্ভিস এক্সটেনশন কোড

কোডটি অ্যাটাচমেন্ট ডাউনলোড করে এবং নোটিফিকেশন কন্টেন্ট হ্যান্ডলারকে কল করে।\
শুধু এটি আপনার এক্সটেনশনে কপি এবং পেস্ট করুন।

<Tabs syncKey="code-example">
<TabItem label="Swift">
```swift
import UserNotifications
import PushwooshFramework

class NotificationService: UNNotificationServiceExtension {

    var contentHandler: ((UNNotificationContent) -> Void)?
    var bestAttemptContent: UNMutableNotificationContent?

    override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
        PWNotificationExtensionManager.shared().handle(request, contentHandler: contentHandler)
    }
}
```
</TabItem>

<TabItem label="Objective-C">
```objective-c
#import "PWNotificationExtensionManager.h"

@interface NotificationService : UNNotificationServiceExtension

@end

@implementation NotificationService

- (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler {
    [[PWNotificationExtensionManager sharedManager] handleNotificationRequest:request contentHandler:contentHandler];
}

@end
```
</TabItem>
</Tabs>

## ৩. নন-সিকিওর অ্যাটাচমেন্ট URL-এর অনুমতি দেওয়া

নোটিফিকেশন সার্ভিস এক্সটেনশন একটি আলাদা বাইনারি এবং **এর নিজস্ব Info.plist** ফাইল আছে।\
**এক্সটেনশনের Info.plist** ফাইলে **App Transport Security Settings** যোগ করুন এবং **Allow Arbitrary Loads** ফ্ল্যাগটি ```true``` তে সেট করুন।

**Info.plist**:
```xml
<key>NSAppTransportSecurity</key>
<dict>
	<key>NSAllowsArbitraryLoads</key>
	<true/>
</dict>
```

## ৪. একটি রিচ নোটিফিকেশন পাঠানো

একটি রিচ নোটিফিকেশন পাঠানোর জন্য শুধু **BANNER URL** ফিল্ডে ফাইলের URL উল্লেখ করুন।

<img src="/ios-rich-notification-2.webp" alt=""/>

উশ! নোটিফিকেশনটি ফোর্স-ট্যাপ করুন এবং আপনার কাজ শেষ!

<video src="/ios-rich-notification-3.webm" title="উদাহরণ" autoplay loop muted playsinline />

<Aside type="tip">
শিখুন কিভাবে [আপনার iOS রিচ পুশ নোটিফিকেশনে ভিডিও ফোর্স টাচ দিয়ে অটো-প্লে করাবেন](/bn/developer/pushwoosh-sdk/ios-sdk/customizing-ios-sdk/#autoplay-a-video-sent-in-a-rich-notification-with-force-touch)
</Aside>

## আমাদের সাথে আপনার মতামত শেয়ার করুন

আপনার মতামত আমাদের একটি উন্নত অভিজ্ঞতা তৈরি করতে সাহায্য করে, তাই SDK ইন্টিগ্রেশন প্রক্রিয়ার সময় আপনার কোনো সমস্যা হলে আমরা আপনার কাছ থেকে শুনতে চাই। আপনি যদি কোনো অসুবিধার সম্মুখীন হন, তাহলে অনুগ্রহ করে [এই ফর্মের মাধ্যমে](https://docs.google.com/forms/d/e/1FAIpQLSd_0b8jwn-V_JmoPLIxIFYbHACCQhrzidOZV3ELywoQPXRSxw/viewform) আমাদের সাথে আপনার মতামত শেয়ার করতে দ্বিধা করবেন না।