OneSignal তাদের Free plan-এ একটি কঠোর সীমা বসাচ্ছে। শীঘ্রই, ১,০০০ monthly active user (MAU)-এর বেশি হলে মোবাইল পুশ নোটিফিকেশন ও in-app মেসেজিং আর ফ্রি থাকবে না। নতুন অ্যাকাউন্টে এই সীমা কার্যকর হবে ১ সেপ্টেম্বর ২০২৬ থেকে, বিদ্যমান অ্যাকাউন্টে ১ অক্টোবর থেকে। আপনার অ্যাপে যদি মাসে হাজারের বেশি অ্যাক্টিভ ইউজার থাকে, তাহলে আপনার সামনে এখন ৩টি পথ: থেকে যান ও পে করুন, ইউজার সংখ্যা কমান, অথবা মাইগ্রেট করুন।

কী বদলাচ্ছে এবং কখন

OneSignal Growth plan কস্ট ক্যালকুলেটর দেখাচ্ছে ১,০০০ মোবাইল অ্যাক্টিভ ইউজারে মাসে $৩১
Source: OneSignal
  • Free plan ১,০০০ MAU-এর নিচে আগের মতোই কাজ করবে। এর বেশি হলে, মোবাইল পুশ ও in-app মেসেজিং একটি পেইড টিয়ারে চলে যায়।
  • তারিখ: OneSignal-এর billing FAQ অনুযায়ী, এই সীমা নতুন অ্যাকাউন্টে ১ সেপ্টেম্বর ২০২৬ থেকে এবং বিদ্যমান অ্যাকাউন্টে ১ অক্টোবর ২০২৬ থেকে কার্যকর হবে।
  • সীমা: মোবাইল পুশ ও in-app-এর জন্য ১,০০০-এর কম MAU। এই সীমা পার হলে, আপগ্রেড না করা পর্যন্ত এই চ্যানেলগুলো পাঠানো বন্ধ হয়ে যায়।
  • যা অপরিবর্তিত থাকছে: ওয়েব পুশ, ইমেইল ও SMS আগের মতোই একই প্ল্যান সীমার মধ্যে কাজ করতে থাকে। এই পরিবর্তন শুধু মোবাইলের জন্য প্রযোজ্য।
  • Journey-ও প্রভাবিত হয়: কোনো journey ধাপ পুশ বা in-app মেসেজ পাঠালে, সেটি মোবাইল সাবস্ক্রিপশন এড়িয়ে যায়।
  • সাবস্ক্রাইবার ডিলিট করা কোনো সমাধান নয়। গত ৩০ দিনে সক্রিয় থাকা মোবাইল সাবস্ক্রিপশন ডিলিট করলে, আপনার প্ল্যান শুধুমাত্র ডিলিটের ৩০ দিন পরেই আবার সক্রিয় হতে পারে, আর তা-ও কেবল যদি পুরো সময়টায় আপনি সীমার নিচে থাকেন।

মাইগ্রেশন কীভাবে কাজ করে

মাইগ্রেট করার সিদ্ধান্ত নিলে, একটা বিষয় আপনার পরিকল্পনা বদলে দেয়: মাইগ্রেশন আমরা নিজেরাই চালাই। আপনার অংশে থাকছে মাত্র তিনটি জিনিস: একটি এক্সপোর্ট ফাইল, আপনার পুশ ক্রেডেনশিয়াল, এবং পরবর্তী অ্যাপ রিলিজে SDK পরিবর্তন। বাকি সব কিছু — ডেটা পরিষ্কার করা, প্ল্যাটফর্ম ম্যাপিং, ট্যাগ পুনরায় তৈরি করা, অডিয়েন্স ইমপোর্ট করা, ডেলিভারেবিলিটি ভেরিফাই করা — আমাদের দায়িত্ব।

এই সুইচ একই সাথে দুটো ট্র্যাকে চলে। একটি ওয়ান-টাইম ইমপোর্ট আপনার বিদ্যমান বেস সরিয়ে নেয়, ফলে একজন ইউজারও অ্যাপ আপডেট করার আগেই আপনার অডিয়েন্স প্রথম দিন থেকে রিচেবল থাকে। এরপর SDK প্রতিটি ডিভাইসের দায়িত্ব নেয়, যতই তার মালিক নতুন বিল্ড ইনস্টল করেন। দুটোই দরকার, আর একটি অন্যটির জন্য থেমে থাকে না।

১. আমরা কী মাইগ্রেট করতে পারি এবং কী পারি না

এটা নিজে অডিট করতে হবে না। মাইগ্রেশনের মাঝপথে যাতে কিছু অবাক না করে, তাই পুরো ছবিটা আগেই দেখিয়ে দিচ্ছি।

চ্যানেলমাইগ্রেট হয়?কীভাবে
iOS পুশ (APNs)হ্যাঁআপনার বিদ্যমান ডিভাইস টোকেন আমরা ইমপোর্ট করি। এগুলো কাজ করতে থাকে, কারণ টোকেন আপনার অ্যাপ ও APNs key-এর, OneSignal-এর নয়।
Android পুশ (FCM)হ্যাঁএকই ব্যাপার: টোকেন আপনার Firebase প্রজেক্টের।
Huawei পুশ (HMS)হ্যাঁএকই রকম, আপনার HMS ক্রেডেনশিয়াল দিয়ে।
ইমেইল ও SMS সাবস্ক্রাইবারহ্যাঁ, চ্যানেল সেটআপ সহঠিকানা ও ফোন নম্বর ইমপোর্ট হয়। পাঠানোর জন্য আমাদের পক্ষেও চ্যানেল কনফিগার করতে হয়: ইমেইলের জন্য DKIM-সহ একটি ভেরিফায়েড সেন্ডিং ডোমেইন, SMS-এর জন্য একটি sender বা provider। প্রথম সেন্ডের আগেই আমরা আপনার সাথে মিলে এটা সেট করি।
ওয়েব পুশনা, তার বদলে re-subscriptionব্রাউজার সাবস্ক্রিপশন ক্রিপ্টোগ্রাফিকভাবে OneSignal-এর key-এর সাথে বাঁধা, কোনো provider-ই সেটা ট্রান্সফার করতে পারে না। আপনার সাবস্ক্রাইবাররা নিঃশব্দে ফিরে আসেন: দেখুন ওয়েব পুশ সেকশনে।
মেসেজ হিস্ট্রি, ডেলিভারি স্ট্যাটস, journeyনাহিস্টোরিক্যাল ডেটা OneSignal-এই থেকে যায়। অ্যাকাউন্ট বন্ধ করার আগে যে রিপোর্ট রাখতে চান, সেটা এক্সপোর্ট করে নিন।
সেগমেন্ট ডেফিনিশনপুনর্গঠিত হয়, ইমপোর্ট হয় নাOneSignal-এর API সেগমেন্টের নাম ও সংখ্যা দেয়, কিন্তু তাদের ফিল্টার দেয় না, তাই ইমপোর্ট করার মতো কিছু নেই। আমরা সেগুলো Pushwoosh-এ নতুন করে তৈরি করি।
চ্যানেল
1 / 7
iOS পুশ (APNs)
মাইগ্রেট হয়?
হ্যাঁ
কীভাবে
আপনার বিদ্যমান ডিভাইস টোকেন আমরা ইমপোর্ট করি। এগুলো কাজ করতে থাকে, কারণ টোকেন আপনার অ্যাপ ও APNs key-এর, OneSignal-এর নয়।
চ্যানেল
2 / 7
Android পুশ (FCM)
মাইগ্রেট হয়?
হ্যাঁ
কীভাবে
একই ব্যাপার: টোকেন আপনার Firebase প্রজেক্টের।
চ্যানেল
3 / 7
Huawei পুশ (HMS)
মাইগ্রেট হয়?
হ্যাঁ
কীভাবে
একই রকম, আপনার HMS ক্রেডেনশিয়াল দিয়ে।
চ্যানেল
4 / 7
ইমেইল ও SMS সাবস্ক্রাইবার
মাইগ্রেট হয়?
হ্যাঁ, চ্যানেল সেটআপ সহ
কীভাবে
ঠিকানা ও ফোন নম্বর ইমপোর্ট হয়। পাঠানোর জন্য আমাদের পক্ষেও চ্যানেল কনফিগার করতে হয়: ইমেইলের জন্য DKIM-সহ একটি ভেরিফায়েড সেন্ডিং ডোমেইন, SMS-এর জন্য একটি sender বা provider। প্রথম সেন্ডের আগেই আমরা আপনার সাথে মিলে এটা সেট করি।
চ্যানেল
5 / 7
ওয়েব পুশ
মাইগ্রেট হয়?
না, তার বদলে re-subscription
কীভাবে
ব্রাউজার সাবস্ক্রিপশন ক্রিপ্টোগ্রাফিকভাবে OneSignal-এর key-এর সাথে বাঁধা, কোনো provider-ই সেটা ট্রান্সফার করতে পারে না। আপনার সাবস্ক্রাইবাররা নিঃশব্দে ফিরে আসেন: দেখুন ওয়েব পুশ সেকশনে।
চ্যানেল
6 / 7
মেসেজ হিস্ট্রি, ডেলিভারি স্ট্যাটস, journey
মাইগ্রেট হয়?
না
কীভাবে
হিস্টোরিক্যাল ডেটা OneSignal-এই থেকে যায়। অ্যাকাউন্ট বন্ধ করার আগে যে রিপোর্ট রাখতে চান, সেটা এক্সপোর্ট করে নিন।
চ্যানেল
7 / 7
সেগমেন্ট ডেফিনিশন
মাইগ্রেট হয়?
পুনর্গঠিত হয়, ইমপোর্ট হয় না
কীভাবে
OneSignal-এর API সেগমেন্টের নাম ও সংখ্যা দেয়, কিন্তু তাদের ফিল্টার দেয় না, তাই ইমপোর্ট করার মতো কিছু নেই। আমরা সেগুলো Pushwoosh-এ নতুন করে তৈরি করি।

কত সময় লাগে

SDK পরিবর্তন আর একটি ক্লিন টেস্ট সেন্ড একজন ডেভেলপারের এক দিনের কাজ। ইমপোর্ট চলে আমাদের পক্ষ থেকে প্যারালালে, আর এটাই প্রথম দিন থেকে আপনার রিচ অক্ষত রাখে: কেউ অ্যাপ আপডেট করার আগেই ইমপোর্ট করা ডিভাইসগুলো ডেলিভারেবল হয়ে যায়। এরপর আপনার অ্যাপের নিজস্ব অডিয়েন্স ধীরে ধীরে Pushwoosh SDK-তে চলে আসে, ইউজাররা যে গতিতে নতুন বিল্ড ইনস্টল করেন সেই গতিতে — যা সপ্তাহের ব্যাপার, এবং কখনোই একেবারে শেষ ডিভাইস পর্যন্ত পৌঁছায় না। ঠিক এই কারণেই ইমপোর্ট থাকে।

ক্রম গুরুত্বপূর্ণ:

  1. আপনার অডিয়েন্স এক্সপোর্ট করুন। আমাদের আপনার OneSignal app_id এবং একটি App API key পাঠান, আমরা নিজেরাই এক্সপোর্ট টেনে আনব, অথবা নিজে CSV এক্সপোর্ট করুন। বিস্তারিত নিচে।
  2. আপনার পুশ ক্রেডেনশিয়াল পাঠান। যে key দিয়ে OneSignal ইতিমধ্যে পাঠাচ্ছে, ঠিক সেই key। ইমপোর্টের আগে আমরা সেগুলো আপলোড করি, যাতে ইমপোর্ট হওয়া প্রতিটি ডিভাইস ডেলিভারেবল হয়।
  3. SDK পরিবর্তন করুন। OneSignal SDK সরিয়ে Pushwoosh SDK যোগ করুন, আপনার Pushwoosh application code ও device API token দিয়ে ইনিশিয়ালাইজ করুন। প্ল্যাটফর্ম-ভিত্তিক ধাপ আছে Version A থেকে C-তে।
  4. ডেলিভারি ভেরিফাই করুন। প্রোডাকশন ট্র্যাফিক ছোঁয়ার আগে একটা টেস্ট ডিভাইস রেজিস্টার করে নিজেকে একটা পুশ পাঠান।
  5. ট্যাগ শিট অ্যাপ্রুভ করুন। আপনার এক্সপোর্ট থেকে আমরা এটা তৈরি করি; আপনি অব্যবহৃত ট্যাগ কেটে দেন আর মাল্টি-ভ্যালু ট্যাগ চিহ্নিত করেন। আমরা ইমপোর্ট করে আপনার সেগমেন্ট পুনরায় তৈরি করি।
  6. সেন্ডিং সুইচ করুন। টেস্ট ডেলিভারি ক্লিন হলে এবং ইমপোর্ট কনফার্ম হলে, আপনার ক্যাম্পেইন Pushwoosh-এর দিকে নিয়ে যান আর OneSignal থেকে পাঠানো বন্ধ করুন।

২. আপনার অডিয়েন্স এক্সপোর্ট করুন

অপশন A (সুপারিশকৃত): আমরা করে দিই। আমাদের আপনার OneSignal app_id এবং একটি App API key পাঠান, আমরা নিজেরাই এক্সপোর্ট টেনে আনব। এখানেই আপনার অংশ শেষ।

অপশন B: নিজে করুন। OneSignal-এ, Audience > Subscriptions-এ গিয়ে CSV এক্সপোর্ট করুন, অথবা এক্সপোর্ট এন্ডপয়েন্ট কল করুন:

Terminal window
curl -X POST 'https://api.onesignal.com/players/csv_export?app_id=YOUR_APP_ID' \
-H 'Authorization: Key YOUR_APP_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"extra_fields":["external_user_id","timezone_id","notification_types"]}'

রেসপন্সে csv_file_url পাওয়া যায়, একটি gzip-compressed CSV যা তিন দিন পর্যন্ত ডাউনলোডযোগ্য থাকে।

OneSignal Subscription Records স্ক্রিন, উপরে ডানদিকে Export বাটন হাইলাইট করা
Source: OneSignal

এই কলামগুলো ফাইলে থাকতে হবে। বাকি সবকিছু ঐচ্ছিক, আমরা সেগুলো উপেক্ষা করি।

কলামকেন দরকার
identifierপুশ টোকেন নিজেই। এটা ছাড়া কোনো row মাইগ্রেট করা যায় না।
idOneSignal subscription id। আমাদের পক্ষে এটাই device identifier হয়ে যায়।
device_typeপ্ল্যাটফর্ম বলে দেয়: iOS, Android, Huawei, email, SMS।
invalid_identifierআনসাবস্ক্রাইব করা row চিহ্নিত করে, যাতে আমরা সেগুলো বাদ দিই।
tagsআপনার কাস্টম ট্যাগ। আমরা এগুলো Pushwoosh-এ নতুন করে তৈরি করি।
external_user_idআপনার নিজের user id। আমাদের SDK রেজিস্টার করার পরও এটা কোনো ডিভাইসকে ডুপ্লিকেট হতে দেয় না।
timezone_idPushwoosh-এ Send by Timezone চালু করে।
কলাম
1 / 7
identifier
কেন দরকার
পুশ টোকেন নিজেই। এটা ছাড়া কোনো row মাইগ্রেট করা যায় না।
কলাম
2 / 7
id
কেন দরকার
OneSignal subscription id। আমাদের পক্ষে এটাই device identifier হয়ে যায়।
কলাম
3 / 7
device_type
কেন দরকার
প্ল্যাটফর্ম বলে দেয়: iOS, Android, Huawei, email, SMS।
কলাম
4 / 7
invalid_identifier
কেন দরকার
আনসাবস্ক্রাইব করা row চিহ্নিত করে, যাতে আমরা সেগুলো বাদ দিই।
কলাম
5 / 7
tags
কেন দরকার
আপনার কাস্টম ট্যাগ। আমরা এগুলো Pushwoosh-এ নতুন করে তৈরি করি।
কলাম
6 / 7
external_user_id
কেন দরকার
আপনার নিজের user id। আমাদের SDK রেজিস্টার করার পরও এটা কোনো ডিভাইসকে ডুপ্লিকেট হতে দেয় না।
কলাম
7 / 7
timezone_id
কেন দরকার
Pushwoosh-এ Send by Timezone চালু করে।

লক্ষ্য করুন: external_user_id এবং timezone_id ডিফল্ট এক্সপোর্টের অংশ নয়। উপরের extra_fields প্যারামিটার দিয়ে, অথবা ড্যাশবোর্ডের column picker দিয়ে, এগুলো স্পষ্টভাবে অনুরোধ করুন।

৩. আপনার পুশ ক্রেডেনশিয়াল পাঠান

এগুলো একই ক্রেডেনশিয়াল যা দিয়ে OneSignal ইতিমধ্যে আপনার হয়ে পাঠাচ্ছে, তাই নতুন কিছু তৈরি করতে হবে না। আমরা নিজেরা এগুলো OneSignal থেকে টেনে আনতে পারি না: একবার আপলোড করা key আর কখনো ডাউনলোড করা যায় না, তাই এই ধাপটা আপনার।

প্ল্যাটফর্মযা দরকারকোথায় পাবেন
iOSAPNs Auth Key (.p8), Key ID, Team ID, app bundle idApple Developer > Certificates, Identifiers & Profiles > Keys। OneSignal যে key ব্যবহার করছে সেটা রিভোক করবেন না; একটা key দুটোকেই সার্ভ করতে পারে।
AndroidFirebase service account JSON (FCM v1)Firebase Console > Project settings > Service accounts। এটা অবশ্যই সেই একই Firebase প্রজেক্ট হতে হবে যা আপনার অ্যাপ ইতিমধ্যে ব্যবহার করছে।
HuaweiApp ID ও App SecretAppGallery Connect > your project > App information।
প্ল্যাটফর্ম
1 / 3
iOS
যা দরকার
APNs Auth Key (.p8), Key ID, Team ID, app bundle id
কোথায় পাবেন
Apple Developer > Certificates, Identifiers & Profiles > Keys। OneSignal যে key ব্যবহার করছে সেটা রিভোক করবেন না; একটা key দুটোকেই সার্ভ করতে পারে।
প্ল্যাটফর্ম
2 / 3
Android
যা দরকার
Firebase service account JSON (FCM v1)
কোথায় পাবেন
Firebase Console > Project settings > Service accounts। এটা অবশ্যই সেই একই Firebase প্রজেক্ট হতে হবে যা আপনার অ্যাপ ইতিমধ্যে ব্যবহার করছে।
প্ল্যাটফর্ম
3 / 3
Huawei
যা দরকার
App ID ও App Secret
কোথায় পাবেন
AppGallery Connect > your project > App information।

ইমপোর্ট শুরুর আগেই আমরা এই ক্রেডেনশিয়ালগুলো আপনার Pushwoosh অ্যাপ্লিকেশনে আপলোড করে দিই। এই ক্রম গুরুত্বপূর্ণ: ক্রেডেনশিয়াল ছাড়া ইমপোর্ট করলে এমন একটা ডেটাবেস তৈরি হয় যেখানকার কোনো ডিভাইসেই কিছু ডেলিভার করা যায় না।

৪. আপনার ট্যাগ ও সেগমেন্ট রিভিউ করুন

OneSignal Segment Editor, ১৬৮ ঘণ্টার কম Last Session ফিল্টারের উপর তৈরি একটা সেগমেন্ট দেখাচ্ছে
Source: OneSignal

ট্যাগ মাইগ্রেট হয়, আর সেগুলোর ইনভেন্টরি আপনাকে নিজে করতে হয় না। OneSignal-এ একটা ট্যাগ মানে সাদামাটা key/value স্ট্রিং, কোনো ঘোষিত টাইপ ছাড়াই। Pushwoosh-এ প্রতিটা ট্যাগ প্রতি অ্যাপ্লিকেশনে একবার একটা টাইপ (String, Integer, Boolean, Date, List বা Price) সহ ঘোষণা করা হয়, আর তারপরই সেটা ভ্যালু ধারণ করে।

আপনার এক্সপোর্ট হাতে পাওয়ার সাথে সাথে, আমরা সেই ফাইল থেকেই তৈরি একটা ট্যাগ রিভিউ শিট পাঠাই। এতে আমরা খুঁজে পাওয়া প্রতিটা ট্যাগ থাকে, ডেটা ভরা অবস্থায়: স্যাম্পল ভ্যালু, কতগুলো ডিভাইসে সেটার একটা ভ্যালু আছে, আর আমরা যে টাইপ প্রস্তাব করছি। আপনার অংশ মাত্র দুটো কলাম: যেসব ট্যাগ আর ব্যবহার করেন না সেগুলো কেটে দিন, আর যেগুলো একসাথে একাধিক ভ্যালু ধারণ করতে পারে সেগুলো চিহ্নিত করুন। বাকি সবকিছু একটা প্রস্তাব, যা আপনি যেমন আছে তেমনই অ্যাপ্রুভ করতে পারেন।

অনুমান না করে কেন জিজ্ঞেস করি: একবার তৈরি হয়ে গেলে ট্যাগের টাইপ স্থির হয়ে যায়, তাই কোনো মাল্টি-ভ্যালু ট্যাগ যদি আমরা প্লেইন String হিসেবে তৈরি করে ফেলি, সেটা ডিলিট করে আবার ইমপোর্ট করতে হয়। এক্সপোর্টে যে ট্যাগ দেখতে single-value মনে হয়, ঠিক সেই কেসটাই আমরা ডেটা থেকে ধরতে পারি না। যদি কোনো উত্তর না পাই, আমরা আমাদের অনুমান করা টাইপ দিয়েই প্রতিটা ট্যাগ ইমপোর্ট করি, আর কোনগুলো অনুমান করেছি তা আপনাকে জানিয়ে দিই।

সেগমেন্ট পুনর্গঠিত হয়। OneSignal-এর API একটা এক্সপোর্টকে সেগমেন্ট দিয়ে ফিল্টার করতে পারে আর আপনার সেগমেন্টের নাম তালিকাভুক্ত করতে পারে, কিন্তু এর পেছনের ফিল্টার ফেরত দেয় না, তাই ইমপোর্ট করার মতো কিছু নেই। এগোনোর দুটো পথ আছে:

  1. কন্ডিশন পুনর্গঠন করুন (সুপারিশকৃত)। আপনার সেগমেন্ট লিস্ট তাদের ফিল্টারসহ আমাদের পাঠান; স্ক্রিনশট হলেও চলবে। ইমপোর্ট করা ট্যাগের উপর ভিত্তি করে আমরা সেগুলো নতুন করে তৈরি করি। পুনর্গঠিত সেগমেন্ট ডাইনামিক: আপনার অডিয়েন্স বদলালে সেগুলোও আপডেট হতে থাকে।
  2. মেম্বারশিপ ফ্রিজ করুন। আমরা প্রতিটা সেগমেন্টের জন্য একটা করে এক্সপোর্ট নিই আর প্রতিটা ফাইলে একটা মার্কার ট্যাগ বসিয়ে দিই, যেমন os_segment = vip_users। দ্রুত, কিন্তু ফলাফল একটা স্ন্যাপশট যা নিজে থেকে আপডেট হয় না।

OneSignal-এর নিজস্ব বিহেভিয়ারাল ডেটার (সেশন কাউন্ট, প্লেটাইম, “Active Users”, “Engaged Users”) উপর তৈরি সেগমেন্ট ইমপোর্টের সময় পুনরুৎপাদন করা যায় না, কারণ সেই হিস্ট্রি OneSignal-এই থেকে যায়। আপনার অ্যাপে আমাদের SDK চালু হওয়ার সাথে সাথেই তাদের Pushwoosh সমতুল্যগুলো ভরতে শুরু করে।

৫. আমরা আমাদের পক্ষ থেকে যা করি

  1. আপনার Pushwoosh অ্যাপ্লিকেশন তৈরি ও কনফিগার করি এবং ধাপ ৩ থেকে ক্রেডেনশিয়াল আপলোড করি।
  2. এক্সপোর্ট পরিষ্কার করি: আনসাবস্ক্রাইব করা row ও খালি টোকেনের row বাদ দিই, OneSignal-এর প্ল্যাটফর্ম কোড আমাদেরটার সাথে ম্যাপ করি, ট্যাগ কনভার্ট করি, আর আপনার external_user_id আমাদের User ID-এর সাথে ম্যাপ করি।
  3. ট্যাগ স্কিমা তৈরি করি, তারপর অডিয়েন্স ব্যাচে ব্যাচে ইমপোর্ট করি, প্রতিটা ব্যাচ ভেরিফাই করে।
  4. একটা ছোট কন্ট্রোল গ্রুপে টেস্ট পুশ পাঠাই এবং ফলাফল আপনার প্রত্যাশার সাথে তুলনা করি।
  5. ফলাফল জানাই: ফাইলে কতগুলো সাবস্ক্রিপশন ছিল, কতগুলো ইমপোর্ট হয়েছে, এবং যে row বাদ পড়েছে প্রতিটার কারণ।

৬. আপনার পরবর্তী অ্যাপ রিলিজে Pushwoosh SDK যোগ করুন

ইমপোর্ট আপনার বিদ্যমান অডিয়েন্সকে তৎক্ষণাৎ রিচেবল করে দেয়, কিন্তু এটা একটা সেতু, গন্তব্য নয়। আপনার অ্যাপের ভেতরের Pushwoosh SDK-ই একমাত্র জিনিস যা OS টোকেন বদলালে (রিইনস্টল, রিস্টোর, OS আপগ্রেড) নতুন টোকেন তুলে নিতে পারে, মাইগ্রেশনের পর যারা ইনস্টল করেন তাদের রেজিস্টার করতে পারে, আর ওপেন, in-app মেসেজ ও আনইনস্টল রিপোর্ট করতে পারে।

একই রিলিজে OneSignal SDK সরিয়ে ফেলুন। একটা বিল্ডে দুটো পুশ SDK একই নোটিফিকেশন কলব্যাকের জন্য প্রতিযোগিতা করে, আর আমরা এই কম্বিনেশন টেস্ট করি না। নতুন বিল্ড রোলআউট হওয়ার সময় OneSignal থেকে পাঠানো চালু রাখা ঠিক আছে এবং প্রত্যাশিত; কিন্তু একই বিল্ডের ভেতরে দুটো SDK রাখা ঠিক নয়। প্ল্যাটফর্ম-ভিত্তিক ধাপ নিচে Version A থেকে C-তে আছে।

৭. ওয়েব পুশ: আপনার সাবস্ক্রাইবাররা কীভাবে ফিরে আসেন

ওয়েব পুশ ইমপোর্ট হয় না, আর এটা একটা কঠোর টেকনিক্যাল সীমাবদ্ধতা, Pushwoosh-এর পছন্দ নয়। একটা ওয়েব পুশ সাবস্ক্রিপশন সাইন করা থাকে যে তৈরি করেছে তার VAPID key pair দিয়ে, আর OneSignal-এর প্রাইভেট key কখনো OneSignal ছেড়ে যায় না — তাদের নিজস্ব ডকুমেন্টেশনেই ওয়েব সাবস্ক্রিপশন key শুধু OneSignal SDK-এর জন্য উপলব্ধ বলে চিহ্নিত করা আছে। কোনো provider-ই আরেকটা provider-এর ওয়েব সাবস্ক্রিপশন ইমপোর্ট করতে পারে না। এর বদলে যা কাজ করে তা হলো নিঃশব্দ re-subscription:

  1. OneSignal-এর স্নিপেট সরিয়ে ফেলুন আর স্পষ্টভাবে তার service worker আনরেজিস্টার করুন। পুরনো worker রেখে দিলে একই ডোমেইনে দুটো worker প্রতিযোগিতা করে।
  2. Pushwoosh Web Push SDK ইনস্টল করুন, আমাদের service worker আপনার ডোমেইনের root-এ রেখে।
  3. আপনার application code এবং device API token (apiToken) দিয়ে এটা ইনিশিয়ালাইজ করুন, তারপর অটোমেটিক সাবস্ক্রিপশন চালু করুন (autoSubscribe: true, অথবা Pushwoosh.subscribe() কল করুন)। token ছাড়া SDK-এর কল 401 হিসেবে ফিরে আসে।

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

মাথায় রাখার মতো তিনটি ব্যাপার:

  • যেসব ভিজিটর নোটিফিকেশন ব্লক করেছেন তাদের পুনরায় সাবস্ক্রাইব করা যায় না। ব্রাউজার তা প্রত্যাখ্যান করে আর তাদের আর কখনো প্রম্পট দেখাবে না। তারা বাইরেই থেকে যান, যেটাই সঠিক ফলাফল।
  • যেসব ভিজিটর আপনার সাইটে অপ্ট-আউট করেছিলেন কিন্তু ব্রাউজার পারমিশন এখনও দেওয়া আছে, তারা নিঃশব্দে পুনরায় সাবস্ক্রাইব হয়ে যাবেন। টেকনিক্যালি বৈধ, কিন্তু এতে এমন মানুষ ফিরে আসেন যারা ইচ্ছাকৃতভাবে চলে গিয়েছিলেন। যদি আপনার কাছে একটা suppression list থাকে (নিজের user id বা ইমেইল দিয়ে), সেটা আমাদের পাঠান আর আমরা সেই ইউজারদের প্রতিটা ক্যাম্পেইন থেকে বাদ দেব। না থাকলে, আমরা সুপারিশ করি অটোমেটিক না করে একটা স্পষ্ট ক্লিকের (একটা bell বা প্রম্পট) মাধ্যমে সাবস্ক্রাইব করাতে।
  • যদি আপনার ওয়েব পুশ নিজের ডোমেইনের বদলে আপনার আগের vendor-এর দেওয়া একটা সাবডোমেইনে চলত, তাহলে পারমিশনটা সেই সাবডোমেইনের। সেই সাবস্ক্রাইবারদের ফিরে পাওয়া যায় না, তাদের আপনার সাইটে আবার opt-in করতে হবে। সুইচ প্ল্যান করার আগে দেখে নিন আপনার সেটআপ কোনটা।

৮. ইমপোর্টের পরে কী আশা করবেন

  • কিছু সময়ের জন্য একটা ডিভাইস দুইবার দেখা যেতে পারে। ইমপোর্ট করা রেকর্ডে OneSignal identifier থাকে; আমাদের SDK একই ডিভাইসে চলা শুরু করলে, সেটা নিজের identifier দিয়ে রেজিস্টার করে। পুরনো রেকর্ড আনইনস্টল ট্র্যাকিং বা স্বয়ংক্রিয় ৯০ দিনের নিষ্ক্রিয়তা cleanup দিয়ে সরানো হয়। ততক্ষণ external_user_id দিলে দুটো রেকর্ডই এক ইউজার প্রোফাইলের অধীনে থাকে।
  • মৃত টোকেন আপনার প্রথম ক্যাম্পেইনেই চলে যায়। Apple ও Google একটা টোকেন অবৈধ কিনা তা তখনই জানায় যখন সত্যিই একটা মেসেজ পাঠানো হয়, তাই মাইগ্রেশনের পর প্রথম সেন্ডই আপনার বেস পরিষ্কার করে দেয়।
  • আপনার ইমপোর্ট করা সংখ্যা OneSignal-এর কাউন্টারের চেয়ে কম হবে। আনসাবস্ক্রাইব করা row, খালি টোকেনের row আর ওয়েব পুশ row ইচ্ছাকৃতভাবে বাদ দেওয়া হয়। প্রতিটা গ্রুপে ঠিক কতগুলো পড়েছে তা আমাদের রিপোর্টে বলা থাকে।

৯. কোথায় ক্লিক করবেন

আপনার অংশের কাজগুলোর জন্য সঠিক পথ, যাতে কাউকে ড্যাশবোর্ডে খুঁজে বেড়াতে না হয়।

কাজক্লিক পাথ
OneSignal: অডিয়েন্স এক্সপোর্ট করুনAudience > Subscriptions > ঐচ্ছিক segment filter > column picker > Export
OneSignal: App ID ও API keySettings > Keys & IDs। App ID আর একটা App API key নিন; এক্সপোর্ট রিকোয়েস্টে এটা পাঠানো হয় Authorization: Key <App API key> হিসেবে
Apple: APNs Auth Keydeveloper.apple.com > Certificates, Identifiers & Profiles > Keys > + > Apple Push Notification service (APNs) > Continue > Register > Download। .p8 ফাইলটা মাত্র একবারই ডাউনলোড হয়; Key ID একই স্ক্রিনে থাকে, আর Team ID থাকে Membership details-এর নিচে।
Firebase: service account JSONconsole.firebase.google.com > your project > gear icon > Project settings > Service accounts > Generate new private key
Huawei: App ID ও App SecretAppGallery Connect > My projects > your project > your app > Project settings > App information
Pushwoosh: application code ও device API tokenControl Panel > your application > Settings > API Access। token-টার সেই অ্যাপ্লিকেশনের জন্য permission থাকা দরকার।
আপনার ওয়েবসাইট: পুরনো worker সরানআপনার সাইটের root থেকে OneSignal-এর service worker ফাইল ডিলিট করুন, আর চলমান worker আনরেজিস্টার করুন: navigator.serviceWorker.getRegistrations().then(rs => rs.forEach(r => r.unregister()))
কাজ
1 / 7
OneSignal: অডিয়েন্স এক্সপোর্ট করুন
ক্লিক পাথ
Audience > Subscriptions > ঐচ্ছিক segment filter > column picker > Export
কাজ
2 / 7
OneSignal: App ID ও API key
ক্লিক পাথ
Settings > Keys & IDs। App ID আর একটা App API key নিন; এক্সপোর্ট রিকোয়েস্টে এটা পাঠানো হয় Authorization: Key <App API key> হিসেবে
কাজ
3 / 7
Apple: APNs Auth Key
ক্লিক পাথ
developer.apple.com > Certificates, Identifiers & Profiles > Keys > + > Apple Push Notification service (APNs) > Continue > Register > Download। .p8 ফাইলটা মাত্র একবারই ডাউনলোড হয়; Key ID একই স্ক্রিনে থাকে, আর Team ID থাকে Membership details-এর নিচে।
কাজ
4 / 7
Firebase: service account JSON
ক্লিক পাথ
console.firebase.google.com > your project > gear icon > Project settings > Service accounts > Generate new private key
কাজ
5 / 7
Huawei: App ID ও App Secret
ক্লিক পাথ
AppGallery Connect > My projects > your project > your app > Project settings > App information
কাজ
6 / 7
Pushwoosh: application code ও device API token
ক্লিক পাথ
Control Panel > your application > Settings > API Access। token-টার সেই অ্যাপ্লিকেশনের জন্য permission থাকা দরকার।
কাজ
7 / 7
আপনার ওয়েবসাইট: পুরনো worker সরান
ক্লিক পাথ
আপনার সাইটের root থেকে OneSignal-এর service worker ফাইল ডিলিট করুন, আর চলমান worker আনরেজিস্টার করুন: navigator.serviceWorker.getRegistrations().then(rs => rs.forEach(r => r.unregister()))

১ অক্টোবরের আগের চেকলিস্ট

কাজ করতে করতে এটা খোলা রাখুন। এখানে কোনো কিছুর জন্যই কোনো ফর্ম ডাউনলোড করার দরকার নেই।

  • এক্সপোর্ট আমাদের পাঠানো হয়েছে, অথবা app_id ও একটা App API key দেওয়া হয়েছে যাতে আমরা টেনে আনতে পারি
  • পুশ ক্রেডেনশিয়াল পাঠানো হয়েছে: APNs key, FCM service account JSON, ব্যবহৃত হলে HMS key
  • ইমেইল ও SMS চ্যানেল আমাদের সাথে কনফিগার করা হয়েছে, যদি সেই সাবস্ক্রাইবারও মাইগ্রেট করেন
  • ট্যাগ রিভিউ শিট ফেরত দেওয়া হয়েছে, মৃত ট্যাগ সরানো হয়েছে, মাল্টি-ভ্যালু ট্যাগ চিহ্নিত করা হয়েছে
  • পুনর্গঠনের জন্য সেগমেন্ট ফিল্টার আমাদের পাঠানো হয়েছে (স্ক্রিনশট হলেও চলবে)
  • টেস্ট বিল্ডে Pushwoosh SDK ইন্টিগ্রেট করা হয়েছে, টেস্ট পুশ পাওয়া গেছে
  • ইমপোর্ট সম্পন্ন হয়েছে, আমাদের ইমপোর্টেড ও স্কিপড রিপোর্ট রিভিউ করা হয়েছে
  • ওয়েব পুশ ব্যবহার করলে, ওয়েব পুশ SDK লাইভ আছে আর পুরনো service worker আনরেজিস্টার করা হয়েছে
  • প্রোডাকশন বিল্ডে টেস্ট ডেলিভারি ক্লিন
  • সেন্ডিং Pushwoosh-এ সুইচ করা হয়েছে, OneSignal থেকে পাঠানো বন্ধ হয়েছে

Version A: নেটিভ iOS ও Android

iOS। Pushwoosh iOS SDK যোগ করুন, তারপর Info.plist-এ দুটো key সেট করুন: আপনার Pushwoosh application code সহ Pushwoosh_APPID এবং আপনার device API token সহ PW_API_TOKEN। যেখানে এখন OneSignal প্রম্পট ট্রিগার করেন সেখানে registerForPushNotifications() কল করুন, আর আপনার SDK ভার্সনের জন্য সঠিক ইনিশিয়ালাইজেশন স্নিপেটের জন্য iOS quick start অনুসরণ করুন। OneSignal SDK ও তার রেজিস্ট্রেশন কল সরিয়ে ফেলুন, যাতে দুটোই একসাথে টোকেন না চায়।

Android। com.pushwoosh:pushwoosh-firebase dependency যোগ করুন, তারপর AndroidManifest.xml-এর <application> ট্যাগের ভেতরে দুটো meta-data এন্ট্রি যোগ করুন: আপনার application code সহ com.pushwoosh.appid আর আপনার device API token সহ com.pushwoosh.apitoken। আপনার ইনিশিয়ালাইজেশন লজিক থেকে Pushwoosh.getInstance().registerForPushNotifications() কল করুন। আপনার Firebase কনফিগারেশন যেমন আছে তেমনই থাকে, প্রজেক্টে google-services.json সহ; FCM ক্রেডেনশিয়াল যায় Control Panel-এ, আপনার Android প্ল্যাটফর্ম কনফিগারেশনের অধীনে।

যেখানে আগে OneSignal-এর সমতুল্য কল করতেন ঠিক সেই একই জায়গায় setTags() দিয়ে আপনার ট্যাগ আর setUserId() দিয়ে আপনার user identifier সেট করুন, যাতে সুইচের পরও সেগমেন্টেশন কাজ করতে থাকে।

Version B: Flutter ও FlutterFlow

FlutterFlow Pushwoosh Flutter SDK-কে wrap করে রাখে, তাই এই মাইগ্রেশন বেশিরভাগই কোডের বদলে কনফিগারেশনের ব্যাপার।

  1. আপনার প্রজেক্টে Pushwoosh Flutter প্যাকেজ একটা কাস্টম dependency হিসেবে যোগ করুন।
  2. একটা কাস্টম action-এ, আপনার application code দিয়ে SDK ইনিশিয়ালাইজ করুন আর পুশ নোটিফিকেশনের জন্য রেজিস্টার করুন, বর্তমান ইনিশিয়ালাইজেশন API-এর জন্য Flutter quick start অনুসরণ করে।
  3. যেকোনো Flutter অ্যাপ যেভাবে করে সেভাবেই নেটিভ ক্রেডেনশিয়াল সেট করুন: iOS-এর জন্য Info.plist-এ Pushwoosh_APPIDPW_API_TOKEN, Android-এর জন্য AndroidManifest.xml-এ com.pushwoosh.appidcom.pushwoosh.apitoken
  4. OneSignal ইন্টিগ্রেশন সরিয়ে ফেলুন, যাতে দুটো SDK একসাথে রেজিস্টার না করে।
  5. আপনার কাস্টম action-এ setTags()setUserId() দিয়ে ট্যাগ ও user id ম্যাপ করুন।

Version C: React Native

  1. প্লাগইন ইনস্টল করুন: npm install pushwoosh-react-native-plugin --save, তারপর iOS-এর জন্য pod install
  2. আপনার root component-এ ইনিশিয়ালাইজ ও রেজিস্টার করুন:
import Pushwoosh from 'pushwoosh-react-native-plugin';
Pushwoosh.init({ pw_appid: "YOUR_APPLICATION_CODE" });
Pushwoosh.register();
  1. নেটিভভাবে device API token যোগ করুন: iOS-এর জন্য Info.plist-এ PW_API_TOKEN, Android-এর জন্য AndroidManifest.xml-এ meta-data হিসেবে com.pushwoosh.apitoken। Android-এ প্রজেক্টে google-services.json রেখে দিন — FCM ক্রেডেনশিয়াল নিজেই থাকে Control Panel-এ।
  2. OneSignal React Native প্যাকেজ আর তার init কল সরিয়ে ফেলুন।
  3. প্লাগইন API থেকে setTags()setUserId() দিয়ে আপনার ট্যাগ ও user id নিয়ে আসুন।
OneSignal থেকে সরে আসার পরিকল্পনা করছেন?

সাহায্যের জন্য আমাদের টিমের সাথে যোগাযোগ করুন।

কল বুক করুন

সাধারণ জিজ্ঞাসা (FAQ)

SDK পরিবর্তন আর একটা ক্লিন টেস্ট সেন্ড একজন ডেভেলপারের এক দিনের কাজ। আপনার বিদ্যমান বেসের ইমপোর্ট আমাদের পক্ষ থেকে প্যারালালে চলে আর প্রথম দিন থেকেই আপনার অডিয়েন্স রিচেবল রাখে, তাই কিছুই app-store রিভিউ বা ইউজার আপডেটের অপেক্ষায় থাকে না। আমরা যাতে শুরু করতে পারি, তাড়াতাড়ি এক্সপোর্ট বা API key পাঠান।

যেকোনো সময় প্রশ্ন থাকলে আপনার Pushwoosh অনবোর্ডিং কন্টাক্টের কাছে যান। ইমপোর্টের পরে সংখ্যা মেলানোর চেয়ে আমরা ইমপোর্টের আগেই উত্তর দিতে চাই।


Pushwoosh Team
Content Team এ Pushwoosh
শেয়ার করুন

সম্পর্কিত আর্টিকেল

সব দেখুন