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

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 // shown, user accepted, system prompt requested
case .declined: break // shown, user declined
case .suppressed: break // not shown (already authorized, or throttled)
case .redirectedToSettings: break // denied state, user sent to Settings
@unknown default: break
}
}

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

রেফারেন্স

Anchor link to