iOS অ্যাপ ক্লিপস
অ্যাপ ক্লিপস ব্যবহারকারীদের আপনার সম্পূর্ণ অ্যাপ ডাউনলোড না করেই দ্রুত একটি কাজ সম্পন্ন করতে দেয়। Pushwoosh-এর সাহায্যে, আপনি অ্যাপ ক্লিপ ব্যবহারকারীদের পুশ নোটিফিকেশন পাঠাতে পারেন — অ্যাপ ক্লিপ খোলার সময় iOS স্বয়ংক্রিয়ভাবে ৮-ঘন্টার নোটিফিকেশন অ্যাক্সেস প্রদান করে।
আপনার যা প্রয়োজন
Anchor link to- Pushwoosh iOS SDK 7.0.33+
- Xcode 15+
- আপনার অ্যাপ ক্লিপের জন্য একটি আলাদা Pushwoosh অ্যাপ্লিকেশন (ভিন্ন বান্ডেল আইডি = আলাদা অ্যাপ)
- পরীক্ষার জন্য একটি আসল ডিভাইস (পুশ টোকেন সিমুলেটরে কাজ করে না)
১. একটি Pushwoosh অ্যাপ্লিকেশন তৈরি করুন
Anchor link toআপনার অ্যাপ ক্লিপের একটি ভিন্ন বান্ডেল আইডি আছে (যেমন com.yourapp.Clip), তাই এটির নিজস্ব APNs কী সহ একটি আলাদা Pushwoosh অ্যাপ প্রয়োজন।
- Pushwoosh কন্ট্রোল প্যানেল-এ যান
- অ্যাপ ক্লিপ বান্ডেল আইডি দিয়ে একটি নতুন অ্যাপ্লিকেশন তৈরি করুন
- আপনার APNs প্রমাণীকরণ কী আপলোড করুন
- অ্যাপ্লিকেশন কোড এবং API টোকেন কপি করুন
২. একটি অ্যাপ ক্লিপ টার্গেট তৈরি করুন
Anchor link to- Xcode-এ: File → New → Target → App Clip
- অ্যাপ ক্লিপ টার্গেটে Push Notifications ক্যাপাবিলিটি যোগ করুন
ক্যাপাবিলিটি যোগ করার বিস্তারিত স্ক্রিনশটের জন্য, বেসিক ইন্টিগ্রেশন গাইড দেখুন।
৩. Pushwoosh ফ্রেমওয়ার্ক যোগ করুন
Anchor link toঅ্যাপ ক্লিপ টার্গেটের Build Phases → Link Binary With Libraries-এ, যোগ করুন:
PushwooshFramework.frameworkPushwooshCore.frameworkPushwooshBridge.framework
৪. Info.plist কনফিগার করুন
Anchor link to<!-- Pushwoosh --><key>Pushwoosh_APPID</key><string>XXXXX-XXXXX</string><key>Pushwoosh_API_TOKEN</key><string>YOUR_API_TOKEN</string>
<!-- Ephemeral push (8-hour auto-grant, no dialog) --><key>NSAppClip</key><dict> <key>NSAppClipRequestEphemeralUserNotification</key> <true/> <key>NSAppClipRequestLocationConfirmation</key> <false/></dict>
<key>UIBackgroundModes</key><array> <string>remote-notification</string></array>৫. SDK ইনিশিয়ালাইজ করুন
Anchor link toimport SwiftUIimport PushwooshFramework
class AppClipDelegate: NSObject, UIApplicationDelegate, PWMessagingDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil) -> Bool { Pushwoosh.configure.delegate = self Pushwoosh.configure.registerForPushNotifications() return true }
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { Pushwoosh.configure.handlePushRegistration(deviceToken) }
func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) { Pushwoosh.configure.handlePushRegistrationFailure(error as NSError) }
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) { Pushwoosh.configure.handlePushReceived(userInfo) completionHandler(.noData) }
func pushwoosh(_ pushwoosh: Pushwoosh, onMessageOpened message: PWMessage) { print("Push opened: \(message.payload ?? [:])") }}
@mainstruct YourAppClip: App { @UIApplicationDelegateAdaptor(AppClipDelegate.self) var appDelegate
var body: some Scene { WindowGroup { ContentView() } }}import UIKitimport PushwooshFramework
@mainclass AppDelegate: UIResponder, UIApplicationDelegate, PWMessagingDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { Pushwoosh.configure.delegate = self Pushwoosh.configure.registerForPushNotifications() return true }
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { Pushwoosh.configure.handlePushRegistration(deviceToken) }
func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) { Pushwoosh.configure.handlePushRegistrationFailure(error as NSError) }
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) { Pushwoosh.configure.handlePushReceived(userInfo) completionHandler(.noData) }
func pushwoosh(_ pushwoosh: Pushwoosh, onMessageOpened message: PWMessage) { print("Push opened: \(message.payload ?? [:])") }}ক্ষণস্থায়ী অনুমতিসহ, iOS স্বয়ংক্রিয়ভাবে ৮ ঘন্টার জন্য পুশ অ্যাক্সেস প্রদান করে। আপনি যদি অনুমতি ডায়ালগ না দেখিয়ে ক্ষণস্থায়ী মোড ব্যবহার করতে চান, তাহলে Pushwoosh.configure.registerForPushNotifications() এর পরিবর্তে সরাসরি UIApplication.shared.registerForRemoteNotifications() কল করুন।
স্থায়ী পুশ অনুমতির (স্ট্যান্ডার্ড ডায়ালগ) অনুরোধ করতে, উপরে দেখানো হিসাবে Pushwoosh.configure.registerForPushNotifications() ব্যবহার করুন।
ক্ষণস্থায়ী পুশ অনুমতি
Anchor link toযখন একজন ব্যবহারকারী আপনার অ্যাপ ক্লিপ খোলে, iOS জিজ্ঞাসা না করেই ৮ ঘন্টার জন্য পুশ নোটিফিকেশন অ্যাক্সেস প্রদান করে। ৮ ঘন্টা পরে, অনুমতির মেয়াদ শেষ হয়ে যায়। আরও ৮ ঘন্টা পেতে ব্যবহারকারীকে অবশ্যই অ্যাপ ক্লিপটি পুনরায় খুলতে হবে।
অনুমতি ডায়ালগ না দেখিয়ে ৮ ঘন্টার জন্য একটি পুশ টোকেন পেতে:
UIApplication.shared.registerForRemoteNotifications()একটি স্থায়ী পুশ টোকেন পেতে (স্ট্যান্ডার্ড অনুমতি ডায়ালগ দেখায়):
Pushwoosh.configure.registerForPushNotifications()সীমাবদ্ধতা
Anchor link to| সীমাবদ্ধতা | বিবরণ |
|---|---|
| কোনো রিচ নোটিফিকেশন নেই | অ্যাপ ক্লিপে নোটিফিকেশন সার্ভিস এক্সটেনশন অন্তর্ভুক্ত করা যায় না — কোনো ছবি নেই, কোনো কমিউনিকেশন নোটিফিকেশন নেই |
| আকারের সীমাবদ্ধতা | ১৫ এমবি (iOS 16) / ৫০ এমবি (iOS 17+) |
| ৮-ঘন্টার পুশ উইন্ডো | ক্ষণস্থায়ী অনুমতির মেয়াদ ৮ ঘন্টা পরে শেষ হয়ে যায় |
| কোনো ব্যাকগ্রাউন্ড প্রসেসিং নেই | সাইলেন্ট পুশের কার্যকারিতা সীমিত |
| ডিভাইস আইডি | identifierForVendor শূন্য রিটার্ন করে — SDK এটি স্বয়ংক্রিয়ভাবে পরিচালনা করে (7.0.33+) |
এটি দেখতে কেমন
Anchor link to
ক্ষণস্থায়ী অনুমতিসহ একটি অ্যাপ ক্লিপে প্রাপ্ত পুশ নোটিফিকেশন