বিষয়বস্তুতে যান

iOS SDK 7.0+ বেসিক ইন্টিগ্রেশন গাইড

এই বিভাগে আপনার iOS অ্যাপ্লিকেশনে Pushwoosh SDK কীভাবে ইন্টিগ্রেট করবেন সে সম্পর্কে তথ্য রয়েছে।

পূর্বশর্ত

Anchor link to

আপনার অ্যাপে Pushwoosh iOS SDK ইন্টিগ্রেট করার জন্য, আপনার নিম্নলিখিত জিনিসগুলির প্রয়োজন হবে:

ইন্টিগ্রেশন ধাপ

Anchor link to

১. ইনস্টলেশন

Anchor link to

আপনি সুইফট প্যাকেজ ম্যানেজার বা কোকোপডস ব্যবহার করে আপনার অ্যাপ্লিকেশনে Pushwoosh SDK ইন্টিগ্রেট করতে পারেন।

সুইফট প্যাকেজ ম্যানেজার

Anchor link to

প্যাকেজ ডিপেন্ডেন্সি বিভাগে, নিম্নলিখিত প্যাকেজটি যোগ করুন:

https://github.com/Pushwoosh/Pushwoosh-XCFramework

Pushwoosh iOS SDK ব্যবহার করার জন্য, সুইফট প্যাকেজ ম্যানেজারের মাধ্যমে ইন্টিগ্রেট করার সময় আপনার অ্যাপ টার্গেটে নিম্নলিখিত তিনটি ফ্রেমওয়ার্ক যোগ করতে ভুলবেন না:

  • PushwooshFramework
  • PushwooshCore
  • PushwooshBridge

কোকোপডস

Anchor link to

আপনার Podfile খুলুন এবং ডিপেন্ডেন্সি যোগ করুন:

Terminal window
# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'
target 'MyApp' do
# Comment the next line if you don't want to use dynamic frameworks
use_frameworks!
pod 'PushwooshXCFramework'
end

তারপর, টার্মিনালে, ডিপেন্ডেন্সি ইনস্টল করার জন্য নিম্নলিখিত কমান্ডটি চালান:

Terminal window
pod install

২. ক্যাপাবিলিটিস

Anchor link to

আপনার প্রজেক্টে পুশ নোটিফিকেশন সক্রিয় করতে, আপনাকে কিছু ক্যাপাবিলিটিস যোগ করতে হবে।

সাইনিং এবং ক্যাপাবিলিটিস বিভাগে, নিম্নলিখিত ক্যাপাবিলিটিস যোগ করুন:

  • Push Notifications
  • Background Modes। এই ক্যাপাবিলিটি যোগ করার পরে, Remote notifications-এর জন্য বক্সটি চেক করুন।

আপনি যদি টাইম সেনসিটিভ নোটিফিকেশন (iOS 15+) ব্যবহার করতে চান, তাহলে Time Sensitive Notifications ক্যাপাবিলিটিটিও যোগ করুন।

৩. ইনিশিয়ালাইজেশন কোড

Anchor link to

AppDelegate

Anchor link to

আপনার AppDelegate ক্লাসে নিম্নলিখিত কোডটি যোগ করুন:

import SwiftUI
import PushwooshFramework
@main
struct MyApp: App {
// AppDelegate-কে UIApplicationDelegate হিসেবে রেজিস্টার করুন
@UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
class AppDelegate: NSObject, UIApplicationDelegate, PWMessagingDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// ইনিশিয়ালাইজেশন কোড
// পুশ হ্যান্ডলিংয়ের জন্য কাস্টম ডেলিগেট সেট করুন
Pushwoosh.configure.delegate = self
// পুশ নোটিফিকেশনের জন্য রেজিস্টার করুন
Pushwoosh.configure.registerForPushNotifications()
return true
}
// APNS থেকে প্রাপ্ত টোকেন হ্যান্ডেল করুন
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
Pushwoosh.configure.handlePushRegistration(deviceToken)
}
// টোকেন প্রাপ্তির ত্রুটি হ্যান্ডেল করুন
func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) {
Pushwoosh.configure.handlePushRegistrationFailure(error)
}
// সাইলেন্ট পুশ নোটিফিকেশনের জন্য
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
Pushwoosh.configure.handlePushReceived(userInfo)
completionHandler(.noData)
}
// যখন একটি পুশ পাওয়া যায় তখন ফায়ার হয়
func pushwoosh(_ pushwoosh: Pushwoosh, onMessageReceived message: PWMessage) {
print("onMessageReceived: ", message.payload!.description)
}
// যখন একজন ব্যবহারকারী নোটিফিকেশনে ট্যাপ করে তখন ফায়ার হয়
func pushwoosh(_ pushwoosh: Pushwoosh, onMessageOpened message: PWMessage) {
print("onMessageOpened: ", message.payload!.description)
}
}
struct ContentView: View {
var body: some View {
Text("Pushwoosh with SwiftUI")
.padding()
}
}

Info.plist

Anchor link to

আপনার Info.plist-এ:

৪. মেসেজ ডেলিভারি ট্র্যাকিং

Anchor link to

Pushwoosh নোটিফিকেশন সার্ভিস এক্সটেনশনের মাধ্যমে পুশ নোটিফিকেশনের জন্য ডেলিভারি ইভেন্ট ট্র্যাকিং সমর্থন করে।

নোটিফিকেশন সার্ভিস এক্সটেনশন যোগ করুন

Anchor link to

১. Xcode-এ, ফাইল > নতুন > টার্গেট… নির্বাচন করুন। ২. নোটিফিকেশন সার্ভিস এক্সটেনশন বেছে নিন এবং পরবর্তী চাপুন। ৩. টার্গেটের নাম লিখুন এবং শেষ চাপুন। ৪. অ্যাক্টিভেশনের জন্য জিজ্ঞাসা করা হলে, বাতিল চাপুন।

নোটিফিকেশন সার্ভিস এক্সটেনশনের জন্য ডিপেন্ডেন্সি (শুধুমাত্র CocoaPods)

Anchor link to

দ্রষ্টব্য: আপনি যদি ডিপেন্ডেন্সি পরিচালনা করার জন্য সুইফট প্যাকেজ ম্যানেজার ব্যবহার করেন, তাহলে আপনি এই ধাপটি এড়িয়ে যেতে পারেন, কারণ ডিপেন্ডেন্সিগুলি স্বয়ংক্রিয়ভাবে যোগ হয়ে যায়।

আপনার Podfile খুলুন এবং টার্গেটের জন্য ডিপেন্ডেন্সি যোগ করুন:

Podfile
# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'
target 'MyApp' do
# Comment the next line if you don't want to use dynamic frameworks
use_frameworks!
pod 'PushwooshXCFramework'
end
target 'MyAppNotificationExtension' do
use_frameworks!
pod 'PushwooshXCFramework'
end

ডিপেন্ডেন্সি আপডেট করার জন্য টার্মিনালে নিম্নলিখিত কমান্ডটি চালান:

Terminal window
pod update

নোটিফিকেশন সার্ভিস এক্সটেনশনে Pushwoosh SDK যোগ করুন

Anchor link to

এই কোডটি আপনাকে আপনার নোটিফিকেশন এক্সটেনশনের মধ্যে নোটিফিকেশন আটকাতে এবং প্রক্রিয়া করতে দেয়।

import UserNotifications
import PushwooshFramework
class NotificationService: UNNotificationServiceExtension {
var contentHandler: ((UNNotificationContent) -> Void)?
var bestAttemptContent: UNMutableNotificationContent?
override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
// Pushwoosh **********
PWNotificationExtensionManager.shared().handle(request, contentHandler: contentHandler)
// ********************
self.contentHandler = contentHandler
bestAttemptContent = (request.content.mutableCopy() as? UNMutableNotificationContent)
if let bestAttemptContent = bestAttemptContent {
// এখানে নোটিফিকেশন কন্টেন্ট পরিবর্তন করুন...
contentHandler(bestAttemptContent)
}
}
override func serviceExtensionTimeWillExpire() {
// সিস্টেম দ্বারা এক্সটেনশনটি বন্ধ করার ঠিক আগে কল করা হয়।
// পরিবর্তিত কন্টেন্টের "সেরা প্রচেষ্টা" প্রদান করার সুযোগ হিসেবে এটি ব্যবহার করুন, অন্যথায় মূল পুশ পেলোড ব্যবহার করা হবে।
if let contentHandler = contentHandler, let bestAttemptContent = bestAttemptContent {
contentHandler(bestAttemptContent)
}
}
}

Info.plist

Anchor link to

আপনার নোটিফিকেশন সার্ভিস এক্সটেনশনের Info.plist-এ যোগ করুন:

  • Pushwoosh_APPID - আপনার অ্যাপ্লিকেশন কোড।

৫. প্রজেক্ট চালান

Anchor link to

১. প্রজেক্টটি বিল্ড করুন এবং চালান। ২. Pushwoosh কন্ট্রোল প্যানেলে যান এবং একটি পুশ নোটিফিকেশন পাঠান। ৩. আপনার অ্যাপে নোটিফিকেশনটি দেখতে পাওয়া উচিত।

বর্ধিত Pushwoosh iOS ইন্টিগ্রেশন

Anchor link to

এই পর্যায়ে, আপনি ইতিমধ্যে SDK ইন্টিগ্রেট করেছেন এবং পুশ নোটিফিকেশন পাঠাতে ও গ্রহণ করতে পারেন। এখন, আসুন মূল কার্যকারিতা অন্বেষণ করি।

পুশ নোটিফিকেশন

Anchor link to

Pushwoosh SDK-তে, পুশ নোটিফিকেশন হ্যান্ডেল করার জন্য দুটি কলব্যাক ডিজাইন করা হয়েছে:

  • onMessageReceived: এই মেথডটি কল করা হয় যখন একটি পুশ নোটিফিকেশন পাওয়া যায়।
  • onMessageOpened: এই মেথডটি কল করা হয় যখন ব্যবহারকারী নোটিফিকেশনের সাথে ইন্টারঅ্যাক্ট করে (খোলে)।

এই কলব্যাকগুলি ডেভেলপারদের তাদের অ্যাপ্লিকেশনের মধ্যে পুশ নোটিফিকেশন গ্রহণ এবং ব্যবহারকারীর ইন্টারঅ্যাকশন পরিচালনা করতে সক্ষম করে।

import PushwooshFramework
class AppDelegate: NSObject, UIApplicationDelegate, PWMessagingDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
Pushwoosh.configure.delegate = self;
}
func pushwoosh(_ pushwoosh: Pushwoosh, onMessageOpened message: PWMessage) {
if let payload = message.payload {
print("onMessageOpened: \(payload)")
}
}
func pushwoosh(_ pushwoosh: Pushwoosh, onMessageReceived message: PWMessage) {
if let payload = message.payload {
print("onMessageReceived: \(payload)")
}
}
}

ব্যবহারকারী কনফিগারেশন

Anchor link to

ব্যক্তিগত ব্যবহারকারীর আচরণ এবং পছন্দের উপর ফোকাস করে, আপনি ব্যক্তিগতকৃত সামগ্রী সরবরাহ করতে পারেন, যা ব্যবহারকারীর সন্তুষ্টি এবং আনুগত্য বৃদ্ধি করে।

import PushwooshFramework
class Registration {
func afterUserLogin(user: User) {
let pushwoosh = Pushwoosh.configure
// ব্যবহারকারী আইডি সেট করুন
if let userId = user.userId {
pushwoosh.setUserId(userId)
}
// ব্যবহারকারী ইমেল সেট করুন
if let userEmail = user.email {
pushwoosh.setEmail(userEmail)
}
// ব্যবহারকারী এসএমএস নম্বর সেট করুন
if let userSmsNumber = user.SmsNumber {
pushwoosh.registerSmsNumber(userSmsNumber)
}
// ব্যবহারকারী হোয়াটসঅ্যাপ নম্বর সেট করুন
if let userWhatsAppNumber = user.WhatsAppNumber {
pushwoosh.registerSmsNumber(userWhatsAppNumber)
}
// Pushwoosh-এর জন্য ট্যাগ হিসেবে অতিরিক্ত ব্যবহারকারী তথ্য সেট করা হচ্ছে
if let age = user.userDetails.age,
let name = user.userDetails.userName,
let lastLogin = user.userDetails.lastLoginDate {
pushwoosh.setTags([
"age": age,
"name": name,
"last_login": lastLogin
])
}
}
}

ট্যাগ

Anchor link to

ট্যাগ হলো ব্যবহারকারী বা ডিভাইসের জন্য নির্ধারিত কী-ভ্যালু পেয়ার, যা পছন্দ বা আচরণের মতো অ্যাট্রিবিউটের উপর ভিত্তি করে সেগমেন্টেশন করতে দেয়, যার ফলে টার্গেটেড মেসেজিং সম্ভব হয়।

import PushwooshFramework
class UpdateUser {
func afterUserUpdateProfile(user: User) {
let pushwoosh = Pushwoosh.configure
// প্রিয় ক্যাটাগরির তালিকা সেট করুন
pushwoosh.setTags(["favorite_categories" : user.getFavoriteCategories()])
// পেমেন্টের তথ্য সেট করুন
pushwoosh.setTags([
"is_subscribed": user.isSubscribed(),
"payment_status": user.getPaymentStatus(),
"billing_address": user.getBillingAddress()
])
}
}

ইভেন্টস

Anchor link to

ইভেন্ট হলো অ্যাপের মধ্যে নির্দিষ্ট ব্যবহারকারীর ক্রিয়া বা ঘটনা যা আচরণ বিশ্লেষণ করতে এবং সংশ্লিষ্ট বার্তা বা ক্রিয়া ট্রিগার করতে ট্র্যাক করা যায়।

import PushwooshFramework
class Registration {
func afterUserLogin(user: User) {
if let userName = user.getUserName(), let lastLogin = user.getLastLoginDate() {
PWInAppManager.shared().postEvent("login", withAttributes: [
"name": userName,
"last_login": lastLogin
])
}
}
func afterUserPurchase(user: User, product: Product) {
let pushwoosh = Pushwoosh.configure
// ক্রয় ইভেন্ট ট্র্যাক করুন
PWInAppManager.shared().postEvent("purchase", withAttributes: [
"product_id": product.getId(),
"product_name": product.getName(),
"price": product.getPrice(),
"quantity": product.getQuantity()
])
// ব্যবহারকারী ট্যাগ সেট করুন
let lastPurchaseDate = Date().timeIntervalSince1970
let lifetimeSpend = getCurrentLifetimeSpend() + product.getPrice()
pushwoosh.setTags([
"last_purchase_date": lastPurchaseDate,
"lifetime_spend": lifetimeSpend
])
}
}

রিচ মিডিয়া

Anchor link to

রিচ মিডিয়া বলতে ইন্টারেক্টিভ এবং মাল্টিমিডিয়া সামগ্রী বোঝায়, যেমন ছবি, ভিডিও বা HTML, যা ব্যবহারকারীর সম্পৃক্ততা বাড়ানোর জন্য নোটিফিকেশন এবং ইন-অ্যাপ মেসেজে ব্যবহৃত হয়।

import PushwooshFramework
class ViewController: UIViewController, PWRichMediaPresentingDelegate {
override func viewDidLoad() {
super.viewDidLoad()
let richMediaConfiguration = PWModalWindowConfiguration.shared()
PWRichMediaManager.shared().delegate = self
richMediaConfiguration.configureModalWindow(with: .PWModalWindowPositionBottom,
present: .PWAnimationPresentFromBottom,
dismiss: .PWAnimationDismissDown)
}
func richMediaManager(_ richMediaManager: PWRichMediaManager!, shouldPresent richMedia: PWRichMedia!) -> Bool {
print("Rich media will be presented with: \(richMedia.pushPayload!)")
return true
}
func richMediaManager(_ richMediaManager: PWRichMediaManager!, didPresent richMedia: PWRichMedia!) {
print("Rich media has been presented with: \(richMedia.pushPayload!)")
}
func richMediaManager(_ richMediaManager: PWRichMediaManager!, didClose richMedia: PWRichMedia!) {
print("Rich media has been closed with: \(richMedia.pushPayload!)")
}
func richMediaManager(_ richMediaManager: PWRichMediaManager!, presentingDidFailFor richMedia: PWRichMedia!, withError error: (any Error)!) {
print("Failed to present rich media with: \(richMedia.pushPayload!). Error: \(error.localizedDescription)")
}
}

ট্রাবলশুটিং

Anchor link to

’PushwooshFramework’ মডিউল বিল্ড করতে ব্যর্থ

Anchor link to

আপনার প্রজেক্ট বিল্ড করার সময়, আপনি নিম্নলিখিত ধরনের একটি ত্রুটির সম্মুখীন হতে পারেন:

Failed to build module 'PushwooshFramework'; this SDK is not supported by the compiler
(the SDK is built with 'Apple Swift version 5.10 (swiftlang-5.10.0.13 clang-1500.3.9.4)',
while this compiler is 'Apple Swift version 6.1.2 effective-5.10 (swiftlang-6.1.2.1.2 clang-1700.0.13.5)')

কারণ: এই ত্রুটিটি সুইফট কম্পাইলার ভার্সন অসঙ্গতির সাথে সম্পর্কিত নয়। Pushwoosh iOS SDK সংস্করণ 6.8.0 থেকে, SDK-কে কয়েকটি মডিউলে ভাগ করা হয়েছে যা একে অপরের সাথে ইন্টারঅ্যাক্ট করে। যখন আপনার প্রজেক্টে সমস্ত প্রয়োজনীয় ফ্রেমওয়ার্ক যোগ করা হয় না তখন এই ত্রুটিটি ঘটে।

সমাধান: সুইফট প্যাকেজ ম্যানেজারের মাধ্যমে ইন্টিগ্রেট করার সময় আপনার অ্যাপ টার্গেটে চারটি প্রয়োজনীয় ফ্রেমওয়ার্ক যোগ করা হয়েছে কিনা তা নিশ্চিত করুন:

  • PushwooshFramework
  • PushwooshCore
  • PushwooshBridge
  • PushwooshLiveActivities

Xcode-এ এটি যাচাই করতে: ১. প্রজেক্ট নেভিগেটরে আপনার প্রজেক্ট নির্বাচন করুন ২. আপনার অ্যাপ টার্গেট নির্বাচন করুন ৩. সাধারণ > ফ্রেমওয়ার্ক, লাইব্রেরি, এবং এমবেডেড কন্টেন্ট-এ যান ৪. নিশ্চিত করুন যে চারটি ফ্রেমওয়ার্কই তালিকাভুক্ত আছে


ইন্টিগ্রেশন প্রক্রিয়ার সময় আপনি যদি কোনো সমস্যার সম্মুখীন হন, তাহলে অনুগ্রহ করে সাপোর্ট এবং কমিউনিটি বিভাগটি দেখুন।