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

iOS পুশ প্রাইমার

পুশ প্রাইমার হলো একটি সফট অপ্ট-ইন ডায়ালগ যা আপনি iOS সিস্টেম পুশ পারমিশন প্রম্পটের আগে দেখান। iOS প্রতি ইনস্টলে মাত্র একবার সিস্টেম প্রম্পট দেখায় — যদি ব্যবহারকারী Don’t Allow ট্যাপ করে, তাহলে পুশ নোটিফিকেশন বন্ধ হয়ে যায় যতক্ষণ না তারা Settings থেকে এটি আবার চালু করে। প্রাইমার আপনাকে প্রথমে এর সুবিধা ব্যাখ্যা করতে এবং সঠিক মুহূর্তে জিজ্ঞাসা করার সুযোগ দেয়, যাতে আপনি সেইসব ব্যবহারকারীদের জন্য ওয়ান-শট সিস্টেম প্রম্পটটি ব্যবহার করতে পারেন যারা ইতিমধ্যেই হ্যাঁ বলেছে।

সংস্করণ 7.1.1 থেকে উপলব্ধ। প্রাইমারটি PushwooshFramework-এর একটি অংশ; কোনো অতিরিক্ত মডিউলের প্রয়োজন নেই।

সিস্টেম পারমিশন প্রম্পটের আগে দেখানো পুশ প্রাইমার ডায়ালগ
iOS সিস্টেম পারমিশন প্রম্পটের আগে দেখানো পুশ প্রাইমার

এটি কিভাবে কাজ করে

Anchor link to

প্রাইমারটি সম্পূর্ণভাবে স্টেট-অ্যাওয়ার। এটি বর্তমান নোটিফিকেশন অথরাইজেশন স্ট্যাটাস পড়ে এবং কী করতে হবে তা নির্ধারণ করে, তাই প্রতিটি লঞ্চে এটি কল করা নিরাপদ:

  • Not determined — প্রাইমার দেখায়; গ্রহণ করলে এটি সিস্টেম পারমিশন প্রম্পট ট্রিগার করে।
  • Authorized or provisional — প্রাইমারটি নিঃশব্দে দমন করে (কিছুই দেখানো হয় না)।
  • Denied — প্রাইমার দেখায়; গ্রহণ করলে এটি ব্যবহারকারীকে অ্যাপের নোটিফিকেশন সেটিংসে নিয়ে যায় (যখন fallbackToSettings সক্রিয় থাকে)।

আপনি সিদ্ধান্ত নেন কখন প্রাইমার কল করবেন (উদাহরণস্বরূপ অনবোর্ডিংয়ের পরে বা কোনো মূল অ্যাকশনের পরে)। SDK নিজে থেকে কোনো টাইমিং আরোপ করে না, নীচে বর্ণিত ঐচ্ছিক minInterval থ্রটল ছাড়া।

বেসিক ব্যবহার

Anchor link to

একটি ফ্লুয়েন্ট বিল্ডার দিয়ে প্রাইমার কনফিগার করুন এবং present কল করুন। ন্যূনতম সেটআপের জন্য একটি টাইটেল, একটি মেসেজ এবং দুটি বাটনের টাইটেল প্রয়োজন।

import PushwooshFramework
Pushwoosh.configure.pushPrimer
.title("Stay in the loop")
.message("Get notified about deals and order updates first")
.acceptButton("Enable notifications")
.declineButton("Not now")
.present()

স্টাইল এবং পজিশন

Anchor link to

সিস্টেম অ্যালার্ট এবং কাস্টম শীটের মধ্যে বেছে নিতে style ব্যবহার করুন, এবং কাস্টম শীট স্থাপন করতে position ব্যবহার করুন। প্রতিটি পজিশনের নিজস্ব ডিফল্ট ডিজাইন রয়েছে।

ValueDescription
.alertসিস্টেম UIAlertController। পজিশন উপেক্ষা করা হয়।
.sheet + .bottomবটম শীট যা উপরে স্লাইড করে, একটি গ্র্যাবার এবং ফুল-উইডথ বাটন সহ (ডিফল্ট)।
.sheet + .topকমপ্যাক্ট ব্যানার যা উপর থেকে নোটিফিকেশনের মতো নেমে আসে।
.sheet + .centerকেন্দ্রীয় ডায়ালগ যা স্কেল এবং ফেইড ইন হয়।
Pushwoosh.configure.pushPrimer
.style(.sheet)
.position(.top)
.title("Stay in the loop")
.message("Get notified about deals and order updates first")
.acceptButton("Enable notifications")
.declineButton("Not now")
.present()
পুশ প্রাইমার বটম, টপ এবং সেন্টার পজিশনে

কাস্টমাইজেশন

Anchor link to

সমস্ত ভিজ্যুয়াল সেটিংস ঐচ্ছিক — লাইট এবং ডার্ক মোডের সাথে খাপ খাইয়ে নেওয়া নেটিভ ডিফল্টগুলি ব্যবহার করতে এগুলি বাদ দিন।

Pushwoosh.configure.pushPrimer
.style(.sheet)
.position(.center)
.title("Stay in the loop")
.message("Get notified about deals and order updates first")
.acceptButton("Enable notifications")
.declineButton("Not now")
.image(UIImage(named: "PrimerHero")) // local image, or .imageURL("https://…")
.backgroundColor(.systemBackground)
.titleColor(.label)
.messageColor(.secondaryLabel)
.acceptButtonColor(.systemBlue)
.acceptButtonTextColor(.white)
.declineButtonColor(.clear)
.declineButtonTextColor(.secondaryLabel)
.cornerRadius(24)
.buttonCornerRadius(14)
.buttonBorderColor(.separator)
.present()

কাস্টমাইজেশন রেফারেন্স:

SetterDescription
image / imageURLএকটি লোকাল UIImage বা একটি রিমোট URL। সেন্টার এবং বটম লেআউটে একটি বৃত্ত হিসাবে এবং টপ ব্যানারে আইকন হিসাবে রেন্ডার করা হয়। একটি লোকাল ইমেজ URL-এর চেয়ে অগ্রাধিকার পায়।
backgroundColorকার্ডের সলিড ব্যাকগ্রাউন্ড রঙ।
backgroundGradientরঙের একটি অ্যারে যা একটি সফট মাল্টি-কালার গ্রেডিয়েন্ট হিসাবে রেন্ডার করা হয়। backgroundColor-কে ওভাররাইড করে।
titleColor / messageColorটাইটেল এবং মেসেজের টেক্সট রঙ।
acceptButtonColor / acceptButtonTextColorঅ্যাক্সেপ্ট বাটনের ব্যাকগ্রাউন্ড এবং টেক্সট রঙ। অ্যাক্সেপ্ট রঙটি ডিফল্ট আইকনকেও রঙিন করে।
declineButtonColor / declineButtonTextColorডিক্লাইন বাটনের ব্যাকগ্রাউন্ড এবং টেক্সট রঙ।
cornerRadiusকার্ডের কর্নার রেডিয়াস।
buttonCornerRadius / buttonBorderColorউভয় বাটনের কর্নার রেডিয়াস এবং বর্ডার রঙ।

আচরণগত সেটিংস

Anchor link to

সেটিংস ফলব্যাক

Anchor link to

ডিফল্টরূপে, যখন নোটিফিকেশনগুলি ইতিমধ্যে ডিনাই করা থাকে, তখন প্রাইমারটি দেখানো হয় এবং অ্যাক্সেপ্ট বাটনটি ব্যবহারকারীকে অ্যাপের নোটিফিকেশন সেটিংসে নিয়ে যায়। ডিনাইড স্টেটে প্রাইমারটি সম্পূর্ণরূপে দমন করতে false পাস করুন।

.fallbackToSettings(false)

প্রদর্শনের ফ্রিকোয়েন্সি

Anchor link to

ডিফল্টরূপে প্রাইমারের কোনো বিল্ট-ইন থ্রটলিং নেই — আপনি যখনই present কল করেন তখনই এটি দেখায় (এবং নোটিফিকেশন অথরাইজড হয়ে গেলে এটি স্বয়ংক্রিয়ভাবে দমন করা হয়)। প্রাইমারটি কত ঘন ঘন পুনরায় প্রদর্শিত হবে তা সীমাবদ্ধ করতে minInterval ব্যবহার করুন। শেষ প্রদর্শনের সময়টি লঞ্চ জুড়ে সংরক্ষিত থাকে।

.minInterval(7 * 24 * 60 * 60) // show at most once a week

ফলাফল হ্যান্ডলিং

Anchor link to

ফলাফলের উপর প্রতিক্রিয়া জানাতে present-এ একটি কমপ্লিশন পাস করুন।

Pushwoosh.configure.pushPrimer
.title("Stay in the loop")
.message("Get notified about deals and order updates first")
.acceptButton("Enable notifications")
.declineButton("Not now")
.present { outcome in
switch outcome {
case .accepted: break // দেখানো হয়েছে, ব্যবহারকারী গ্রহণ করেছে, সিস্টেম প্রম্পটের জন্য অনুরোধ করা হয়েছে
case .declined: break // দেখানো হয়েছে, ব্যবহারকারী প্রত্যাখ্যান করেছে
case .suppressed: break // দেখানো হয়নি (ইতিমধ্যে অনুমোদিত, বা থ্রটল করা হয়েছে)
case .redirectedToSettings: break // ডিনাইড স্টেট, ব্যবহারকারীকে সেটিংসে পাঠানো হয়েছে
@unknown default: break
}
}

চূড়ান্ত সিস্টেম-প্রম্পটের ফলাফল (গ্রান্টেড/ডিনাইড স্টেট এবং ডিভাইস টোকেন) নিয়মিত রেজিস্ট্রেশন কলব্যাকের মাধ্যমে আসে — প্রাইমারটি অ্যাক্সেপ্ট করার সময় registerForPushNotifications পুনরায় ব্যবহার করে এবং সেই চেইনটি ডুপ্লিকেট করে না।

রেফারেন্স

Anchor link to