চলমান বার্তা বিতরণ ব্যর্থতার সমস্যা সমাধানের জন্য, FCM সমস্যা সমাধানকারী ব্যবহার করুন এবং আপনি কেন আপনার বার্তা দেখতে পাচ্ছেন না তার বিভিন্ন কারণ বুঝতে এই ব্লগ পোস্টটি দেখুন। আপনি FCM স্থিতি ড্যাশবোর্ড পরিদর্শন করতে পারেন যদি কোনো চলমান পরিষেবা বাধা FCM প্রভাবিত করে কিনা তা সনাক্ত করতে পারেন।
FCM আপনাকে মেসেজিং সাফল্য এবং কৌশলের বিস্তৃত মূল্যায়নের অন্তর্দৃষ্টি পেতে সহায়তা করার জন্য তিনটি সেট টুল সরবরাহ করে:
- Firebase কনসোল মেসেজ ডেলিভারি রিপোর্ট
- Firebase Cloud Messaging ডেটা API থেকে অ্যাগ্রিগেটেড অ্যান্ড্রয়েড SDK ডেলিভারি মেট্রিক
- Google BigQuery-এ ব্যাপক ডেটা এক্সপোর্ট
এই পৃষ্ঠায় বর্ণিত রিপোর্টিং টুলগুলির কাজ করার জন্য Google Analytics প্রয়োজন। আপনার প্রোজেক্টের জন্য Google Analytics সক্ষম না থাকলে, আপনি আপনার Firebase প্রোজেক্ট সেটিংসের ইন্টিগ্রেশন ট্যাবে এটি সেট আপ করতে পারেন।
মনে রাখবেন যে এই পৃষ্ঠার অনেক পরিসংখ্যানের রিপোর্টিং, বিশ্লেষণ ডেটা ব্যাচিংয়ের কারণে 24 ঘন্টা পর্যন্ত বিলম্বের বিষয়।
বার্তা বিতরণ রিপোর্ট
Firebase কনসোলের রিপোর্ট ট্যাবে, আপনি Android বা Apple প্ল্যাটফর্ম FCM SDK-এ পাঠানো বার্তাগুলির জন্য নিম্নলিখিত ডেটা দেখতে পারেন, বিজ্ঞপ্তি কম্পোজার এবং FCM API-এর মাধ্যমে পাঠানো সহ:
- পাঠায় — ডেটা মেসেজ বা বিজ্ঞপ্তি বার্তা ডেলিভারির জন্য সারিবদ্ধ করা হয়েছে বা ডেলিভারির জন্য APN-এর মতো তৃতীয় পক্ষের পরিষেবাতে সফলভাবে পাঠানো হয়েছে। আরও তথ্যের জন্য একটি বার্তার জীবনকাল দেখুন।
- প্রাপ্ত (শুধুমাত্র অ্যান্ড্রয়েড ডিভাইসে উপলব্ধ) — ডেটা বার্তা বা বিজ্ঞপ্তি বার্তা অ্যাপটি পেয়েছে। এই ডেটা পাওয়া যায় যখন প্রাপ্ত Android ডিভাইসে FCM SDK 18.0.1 বা উচ্চতর ইনস্টল করা থাকে।
- ইমপ্রেশন (শুধুমাত্র অ্যান্ড্রয়েড ডিভাইসে বিজ্ঞপ্তি বার্তার জন্য উপলব্ধ) — অ্যাপটি ব্যাকগ্রাউন্ডে থাকাকালীন ডিভাইসে ডিসপ্লে বিজ্ঞপ্তি প্রদর্শিত হয়েছে।
- খোলে - ব্যবহারকারী বিজ্ঞপ্তি বার্তাটি খুললেন। অ্যাপটি ব্যাকগ্রাউন্ডে থাকলে শুধুমাত্র প্রাপ্ত বিজ্ঞপ্তিগুলির জন্য রিপোর্ট করা হয়।
এই ডেটা একটি বিজ্ঞপ্তি পেলোড সহ সমস্ত বার্তা এবং সমস্ত লেবেলযুক্ত ডেটা বার্তাগুলির জন্য উপলব্ধ৷ লেবেল সম্পর্কে আরও জানতে, বার্তাগুলিতে বিশ্লেষণ লেবেল যুক্ত করা দেখুন।
বার্তা প্রতিবেদনগুলি দেখার সময়, আপনি CSV-এ রপ্তানি করার বিকল্প সহ প্রদর্শিত ডেটার জন্য একটি তারিখ পরিসর সেট করতে পারেন৷ আপনি এই মানদণ্ড দ্বারা ফিল্টার করতে পারেন:
- প্ল্যাটফর্ম (iOS বা Android)
- অ্যাপ
- কাস্টম বিশ্লেষণ লেবেল
বার্তাগুলিতে বিশ্লেষণ লেবেল যুক্ত করা হচ্ছে
লেবেল বার্তাগুলি কাস্টম বিশ্লেষণের জন্য খুবই উপযোগী, যা আপনাকে লেবেল বা লেবেলের সেট দ্বারা বিতরণ পরিসংখ্যান ফিল্টার করতে দেয়৷ আপনি বার্তা অবজেক্টে fcmOptions.analyticsLabel
ক্ষেত্র বা প্ল্যাটফর্ম-নির্দিষ্ট AndroidFcmOptions
বা ApnsFcmOptions
ক্ষেত্রে সেট করে HTTP v1 API-এর মাধ্যমে প্রেরিত যেকোনো বার্তায় একটি লেবেল যোগ করতে পারেন।
অ্যানালিটিক্স লেবেলগুলি ^[a-zA-Z0-9-_.~%]{1,50}$
। লেবেলে ছোট এবং বড় হাতের অক্ষর, সংখ্যা এবং নিম্নলিখিত চিহ্নগুলি অন্তর্ভুক্ত থাকতে পারে:
-
-
-
~
-
%
সর্বাধিক দৈর্ঘ্য 50 অক্ষর। আপনি প্রতিদিন 100টি অনন্য লেবেল নির্দিষ্ট করতে পারেন; সেই সীমার বাইরে লেবেল যুক্ত বার্তাগুলি রিপোর্ট করা হয় না৷
Firebase কনসোল মেসেজিং রিপোর্ট ট্যাবে, আপনি সমস্ত বিদ্যমান লেবেলের একটি তালিকা অনুসন্ধান করতে পারেন এবং প্রদর্শিত পরিসংখ্যান ফিল্টার করতে এককভাবে বা একত্রে প্রয়োগ করতে পারেন।
FCM ডেটা এপিআই-এর মাধ্যমে একত্রিত ডেলিভারি ডেটা
Firebase ক্লাউড মেসেজিং ডেটা API আপনাকে তথ্য পুনরুদ্ধার করতে দেয় যা আপনাকে Android অ্যাপ্লিকেশানগুলিতে লক্ষ্য করা বার্তা অনুরোধের ফলাফল বুঝতে সাহায্য করতে পারে। API একটি প্রকল্পে সমস্ত ডেটা সংগ্রহ-সক্ষম অ্যান্ড্রয়েড ডিভাইস জুড়ে সমষ্টিগত ডেটা সরবরাহ করে। এতে বিলম্ব ছাড়াই বিতরণ করা বার্তার শতাংশের পাশাপাশি Android ট্রান্সপোর্ট লেয়ারের মধ্যে কতগুলি বার্তা বিলম্বিত বা ড্রপ করা হয়েছে তার বিশদ অন্তর্ভুক্ত রয়েছে৷ এই ডেটা মূল্যায়ন বার্তা বিতরণের বিস্তৃত প্রবণতা প্রকাশ করতে পারে এবং আপনার প্রেরণের অনুরোধগুলির কার্যকারিতা উন্নত করার কার্যকর উপায় খুঁজে পেতে সহায়তা করতে পারে। রিপোর্টে তারিখ পরিসরের প্রাপ্যতার তথ্যের জন্য সামগ্রিক ডেটা টাইমলাইন দেখুন।
API একটি প্রদত্ত অ্যাপ্লিকেশনের জন্য উপলব্ধ সমস্ত ডেটা সরবরাহ করে। API রেফারেন্স ডকুমেন্টেশন দেখুন।
কিভাবে তথ্য ভাঙ্গা হয়?
ডেলিভারি ডেটা অ্যাপ্লিকেশন, তারিখ এবং বিশ্লেষণ লেবেল দ্বারা বিভক্ত করা হয়। API-তে একটি কল তারিখ, অ্যাপ্লিকেশন এবং বিশ্লেষণ লেবেলের প্রতিটি সংমিশ্রণের জন্য ডেটা ফেরত দেবে। উদাহরণস্বরূপ, একটি একক androidDeliveryData
JSON অবজেক্ট দেখতে এইরকম হবে:
{
"appId": "1:23456789:android:a93a5mb1234efe56",
"date": {
"year": 2021,
"month": 1,
"day": 1
},
"analyticsLabel": "foo",
"data": {
"countMessagesAccepted": "314159",
"messageOutcomePercents": {
"delivered": 71,
"pending": 15
},
"deliveryPerformancePercents": {
"deliveredNoDelay": 45,
"delayedDeviceOffline": 11
}
}
কিভাবে মেট্রিক্স ব্যাখ্যা
ডেলিভারি ডেটা নিম্নলিখিত মেট্রিক্সগুলির প্রতিটির সাথে মানানসই বার্তাগুলির শতাংশের রূপরেখা দেয়৷ এটা সম্ভব যে একটি একক বার্তা একাধিক মেট্রিক্সে ফিট করে। আমরা কীভাবে ডেটা সংগ্রহ করি এবং যে স্তরে আমরা মেট্রিকগুলিকে একত্রিত করেছি তার সীমাবদ্ধতার কারণে, কিছু বার্তা ফলাফলগুলি মেট্রিক্সে মোটেও উপস্থাপন করা হয় না, তাই নীচের শতাংশগুলি 100% হবে না।
গণনা বার্তা গ্রহণ করা হয়েছে
ডেটাসেটে অন্তর্ভুক্ত একমাত্র গণনা হল Android ডিভাইসগুলিতে বিতরণের জন্য FCM দ্বারা গৃহীত বার্তাগুলির গণনা৷ সমস্ত শতাংশ এই মানটিকে হর হিসাবে ব্যবহার করে। মনে রাখবেন যে এই গণনায় ব্যবহারকারীদের লক্ষ্য করা বার্তাগুলি অন্তর্ভুক্ত করা হবে না যারা তাদের ডিভাইসে ব্যবহার এবং ডায়াগনস্টিক তথ্য সংগ্রহ অক্ষম করেছেন৷
বার্তা ফলাফল শতাংশ
MessageOutcomePercents
অবজেক্টের অন্তর্ভুক্ত ক্ষেত্রগুলি বার্তা অনুরোধের ফলাফল সম্পর্কে তথ্য প্রদান করে। বিভাগ সব পারস্পরিক একচেটিয়া. এটি প্রশ্নের উত্তর দিতে পারে যেমন "আমার বার্তাগুলি কি বিতরণ করা হচ্ছে?" এবং "মেসেজ বাদ দেওয়ার কারণ কি?"
উদাহরণস্বরূপ, droppedTooManyPendingMessages
ক্ষেত্রের জন্য একটি উচ্চ মান ইঙ্গিত দিতে পারে যে অ্যাপের দৃষ্টান্তগুলি FCM এর 100 মুলতুবি বার্তার সীমা ছাড়িয়ে অ-সংকোচনযোগ্য বার্তাগুলির ভলিউম গ্রহণ করছে৷ এটি প্রশমিত করতে, নিশ্চিত করুন যে আপনার অ্যাপ onDeletedMessages
এ কলগুলি পরিচালনা করে এবং সংকোচনযোগ্য বার্তা পাঠানোর কথা বিবেচনা করুন। একইভাবে, droppedDeviceInactive
জন্য উচ্চ শতাংশ আপনার সার্ভারে নিবন্ধন টোকেন আপডেট করার জন্য একটি সংকেত হতে পারে, পুরানো টোকেনগুলি সরানো এবং বিষয়গুলি থেকে তাদের সদস্যতা ত্যাগ করা। এই এলাকায় সেরা অনুশীলনের জন্য FCM রেজিস্ট্রেশন টোকেন পরিচালনা করুন দেখুন।
ডেলিভারি কর্মক্ষমতা শতাংশ
DeliveryPerformancePercents
অবজেক্টের ক্ষেত্রগুলি সফলভাবে বিতরণ করা বার্তাগুলি সম্পর্কে তথ্য প্রদান করে। এটি প্রশ্নের উত্তর দিতে পারে যেমন "আমার বার্তাগুলি কি বিলম্বিত হয়েছিল?" এবং "মেসেজ আসতে দেরি হয় কেন?" উদাহরণস্বরূপ, delayedMessageThrottled
এর জন্য একটি উচ্চ মান স্পষ্টভাবে নির্দেশ করবে যে আপনি প্রতি-ডিভাইসের সর্বোচ্চ সীমা অতিক্রম করছেন এবং আপনি যে হারে বার্তা পাঠাচ্ছেন তা সামঞ্জস্য করা উচিত।
বার্তা অন্তর্দৃষ্টি শতাংশ
এই বস্তুটি পাঠানো সমস্ত বার্তা সম্পর্কে অতিরিক্ত তথ্য প্রদান করে। priorityLowered
নিম্ন ক্ষেত্রটি গৃহীত বার্তাগুলির শতাংশকে প্রকাশ করে যেগুলির অগ্রাধিকার HIGH
থেকে NORMAL
পর্যন্ত কমিয়ে দেওয়া হয়েছিল৷ যদি এই মানটি বেশি হয়, কম উচ্চ অগ্রাধিকার বার্তা পাঠানোর চেষ্টা করুন বা একটি উচ্চ অগ্রাধিকার বার্তা পাঠানো হলে আপনি সর্বদা একটি বিজ্ঞপ্তি প্রদর্শন করেন তা নিশ্চিত করুন৷ আরও তথ্যের জন্য বার্তা অগ্রাধিকার সম্পর্কে আমাদের ডকুমেন্টেশন দেখুন
BigQuery-এ এক্সপোর্ট করা ডেটা থেকে এই ডেটা কীভাবে আলাদা?
BigQuery রপ্তানি FCM ব্যাকএন্ড দ্বারা বার্তা গ্রহণ এবং ডিভাইসে SDK-এ বার্তা বিতরণ সম্পর্কে পৃথক বার্তা লগ প্রদান করে ( FCM আর্কিটেকচারের ধাপ 2 এবং 4)। পৃথক বার্তাগুলি গ্রহণ এবং বিতরণ করা হয়েছে তা নিশ্চিত করার জন্য এই ডেটাটি কার্যকর। পরবর্তী বিভাগে BigQuery ডেটা এক্সপোর্ট সম্পর্কে আরও পড়ুন।
বিপরীতে, ফায়ারবেস ক্লাউড মেসেজিং ডেটা API অ্যান্ড্রয়েড ট্রান্সপোর্ট লেয়ারে (বা FCM আর্কিটেকচারের ধাপ 3) বিশেষভাবে কী ঘটে সে সম্পর্কে সমষ্টিগত বিবরণ প্রদান করে। এই ডেটা বিশেষত FCM ব্যাকএন্ড থেকে Android SDK-তে বার্তাগুলির বিতরণের অন্তর্দৃষ্টি প্রদান করে৷ কেন এই পরিবহনের সময় বার্তাগুলি বিলম্বিত বা বাদ দেওয়া হয়েছিল সেই প্রবণতাগুলি দেখানোর জন্য এটি বিশেষভাবে কার্যকর।
কিছু ক্ষেত্রে, এটি সম্ভব যে দুটি ডেটা সেট নিম্নলিখিত কারণে সঠিকভাবে মেলে না:
- একত্রিত মেট্রিক্স শুধুমাত্র সমস্ত বার্তার একটি অংশের নমুনা
- একত্রিত মেট্রিকগুলি বৃত্তাকার
- আমরা গোপনীয়তা থ্রেশহোল্ডের নিচে মেট্রিক্স উপস্থাপন করি না
- আমরা কিভাবে বিশাল পরিমাণ ট্রাফিক পরিচালনা করি তার অপ্টিমাইজেশনের কারণে বার্তা ফলাফলের একটি অংশ অনুপস্থিত।
API এর সীমাবদ্ধতা
সামগ্রিক ডেটা টাইমলাইন
API 7 দিনের ঐতিহাসিক ডেটা ফেরত দেবে; যাইহোক, এই API দ্বারা প্রত্যাবর্তিত ডেটা 5 দিন পর্যন্ত বিলম্বিত হবে। উদাহরণস্বরূপ, 20শে জানুয়ারী, 9 ই জানুয়ারী - 15 জানুয়ারী এর ডেটা উপলব্ধ হবে, তবে 16 শে জানুয়ারী বা তার পরে নয়৷ উপরন্তু, তথ্য সেরা প্রচেষ্টা প্রদান করা হয়. ডেটা বিভ্রাটের ক্ষেত্রে, এফসিএম ফরওয়ার্ড ঠিক করতে কাজ করবে এবং সমস্যাটি ঠিক হওয়ার পরে ডেটা ব্যাকফিল করবে না। বড় বিভ্রাটের ক্ষেত্রে, ডেটা এক সপ্তাহ বা তার বেশি সময়ের জন্য অনুপলব্ধ হতে পারে।
ডেটা কভারেজ
Firebase ক্লাউড মেসেজিং ডেটা API দ্বারা প্রদত্ত মেট্রিকগুলি বার্তা বিতরণের বিস্তৃত প্রবণতাগুলির অন্তর্দৃষ্টি প্রদান করার জন্য। যাইহোক, তারা সমস্ত বার্তা পরিস্থিতির 100% কভারেজ প্রদান করে না। নিম্নলিখিত পরিস্থিতিগুলি পরিচিত ফলাফলগুলি মেট্রিক্সে প্রতিফলিত হয় না৷
মেয়াদোত্তীর্ণ বার্তা
টাইম টু লাইভ (TTL) প্রদত্ত লগ তারিখ শেষ হওয়ার পরে মেয়াদ শেষ হলে, এই তারিখে বার্তাটি droppedTtlExpired
হিসাবে গণনা করা হবে না।
নিষ্ক্রিয় ডিভাইসে বার্তা
নিষ্ক্রিয় ডিভাইসগুলিতে প্রেরিত বার্তাগুলি ডেটাসেটে প্রদর্শিত হতে পারে বা নাও হতে পারে তার উপর নির্ভর করে তারা কোন ডেটা পথ গ্রহণ করে। এটি droppedDeviceInactive
এবং pending
ক্ষেত্রগুলিতে কিছু ভুল হিসাব হতে পারে।
নির্দিষ্ট ব্যবহারকারীর পছন্দ সহ ডিভাইসগুলিতে বার্তা
যে ব্যবহারকারীরা তাদের ডিভাইসে ব্যবহার এবং ডায়াগনস্টিক তথ্য সংগ্রহকে অক্ষম করেছেন তাদের পছন্দ অনুসারে তাদের বার্তাগুলি আমাদের গণনায় অন্তর্ভুক্ত করা হবে না।
বৃত্তাকার এবং সর্বনিম্ন
FCM ইচ্ছাকৃতভাবে বৃত্তাকার এবং গণনা বাদ দেয় যেখানে ভলিউম যথেষ্ট বড় নয়।
BigQuery ডেটা এক্সপোর্ট
আপনি আরও বিশ্লেষণের জন্য আপনার মেসেজ ডেটা BigQuery- এ এক্সপোর্ট করতে পারেন। BigQuery আপনাকে BigQuery SQL ব্যবহার করে ডেটা বিশ্লেষণ করতে, অন্য ক্লাউড প্রদানকারীর কাছে রপ্তানি করতে বা আপনার কাস্টম ML মডেলের জন্য ডেটা ব্যবহার করতে দেয়। BigQuery-এ রপ্তানি করা বার্তাগুলির জন্য সমস্ত উপলব্ধ ডেটা অন্তর্ভুক্ত করে, বার্তার ধরন নির্বিশেষে বা বার্তাটি API বা বিজ্ঞপ্তি কম্পোজারের মাধ্যমে পাঠানো হয়েছে কিনা।
নিম্নলিখিত FCM SDK ন্যূনতম সংস্করণ সহ ডিভাইসগুলিতে পাঠানো বার্তাগুলির জন্য, আপনার অ্যাপের জন্য বার্তা বিতরণ ডেটা রপ্তানি সক্ষম করার অতিরিক্ত বিকল্প রয়েছে:
- Android 20.1.0 বা উচ্চতর।
- iOS 8.6.0 বা উচ্চতর
- Firebase Web SDK 9.0.0 বা উচ্চতর
Android এবং iOS-এর জন্য ডেটা রপ্তানি সক্ষম করার বিষয়ে বিশদ বিবরণের জন্য নীচে দেখুন।
শুরু করতে, BigQuery-এ আপনার প্রোজেক্ট লিঙ্ক করুন:
নিম্নলিখিত বিকল্পগুলির মধ্যে একটি চয়ন করুন:
বিজ্ঞপ্তি কম্পোজার খুলুন, তারপর পৃষ্ঠার নীচে Access BigQuery-এ ক্লিক করুন।
Firebase কনসোলের ইন্টিগ্রেশন পৃষ্ঠা থেকে, BigQuery কার্ডে লিঙ্কে ক্লিক করুন।
এই পৃষ্ঠাটি প্রকল্পের সমস্ত FCM সক্ষম অ্যাপগুলির জন্য FCM রপ্তানির বিকল্পগুলি প্রদর্শন করে৷
BigQuery সক্ষম করতে অন-স্ক্রীন নির্দেশাবলী অনুসরণ করুন।
আরও তথ্যের জন্য BigQuery-তে Firebase লিঙ্ক দেখুন।
আপনি যখন Cloud Messaging জন্য BigQuery রপ্তানি সক্ষম করেন:
Firebase আপনার ডেটা BigQuery এ এক্সপোর্ট করে। মনে রাখবেন যে রপ্তানির জন্য ডেটার প্রাথমিক প্রচার সম্পূর্ণ হতে 48 ঘন্টা পর্যন্ত সময় লাগতে পারে।
ডেটাসেট তৈরি হওয়ার পরে, অবস্থান পরিবর্তন করা যাবে না, তবে আপনি ডেটাসেটটিকে একটি ভিন্ন অবস্থানে অনুলিপি করতে পারেন বা ম্যানুয়ালি একটি ভিন্ন অবস্থানে ডেটাসেটটি সরাতে (পুনরায় তৈরি) করতে পারেন৷ আরও জানতে, ডেটাসেটের অবস্থান পরিবর্তন দেখুন।
Firebase আপনার Firebase প্রকল্প থেকে BigQuery এ আপনার ডেটার নিয়মিত সিঙ্ক সেট আপ করে। এই দৈনিক রপ্তানি কার্যক্রম প্রশান্ত মহাসাগরীয় সময় সকাল 4:00 এ শুরু হয় এবং সাধারণত 24 ঘন্টার মধ্যে শেষ হয়।
ডিফল্টরূপে, আপনার প্রোজেক্টের সমস্ত অ্যাপ BigQuery এর সাথে লিঙ্ক করা থাকে এবং আপনি পরে প্রোজেক্টে যোগ করেন এমন যেকোন অ্যাপ স্বয়ংক্রিয়ভাবে BigQuery এর সাথে লিঙ্ক হয়ে যায়। কোন অ্যাপগুলি ডেটা পাঠায় তা আপনি পরিচালনা করতে পারেন৷
BigQuery এক্সপোর্ট নিষ্ক্রিয় করতে, Firebase কনসোলে আপনার প্রোজেক্ট আনলিঙ্ক করুন ।
বার্তা বিতরণ ডেটা রপ্তানি সক্ষম করুন৷
FCM SDK 20.1.0 বা তার বেশির Android ডিভাইসগুলি তাদের অ্যাপের মেসেজ ডেলিভারি ডেটা এক্সপোর্ট সক্ষম করতে পারে। অ্যাপ স্তরে ডিফল্টরূপে ডেটা এক্সপোর্ট অক্ষম করা হয়। এটিকে অ্যাপ ইনস্ট্যান্স লেভেলে প্রোগ্রাম্যাটিকভাবে সক্ষম করার ফলে আপনি শেষ ব্যবহারকারীদের তাদের বার্তা বিতরণ ডেটা বিশ্লেষণ করার অনুমতি চাইতে পারেন (প্রস্তাবিত)। যেখানে উভয়ই সেট করা থাকে, অ্যাপ ইনস্ট্যান্স লেভেল ভ্যালু অ্যাপ লেভেল ভ্যালুকে ওভাররাইড করে।
এই বিকল্পগুলি সক্ষম করার আগে, আপনাকে প্রথমে আপনার প্রকল্পের জন্য FCM -BiqQuery লিঙ্ক তৈরি করতে হবে যেমন BigQuery ডেটা এক্সপোর্টে বর্ণিত হয়েছে।
অ্যাপ দৃষ্টান্তের জন্য ডেলিভারি ডেটা এক্সপোর্ট সক্ষম করুন
বেশিরভাগ ক্ষেত্রে, আমরা সুপারিশ করি যে আপনি শুধুমাত্র অ্যাপ ইনস্ট্যান্স লেভেলে মেসেজ ডেলিভারি ডেটা এক্সপোর্ট চালু করুন এবং অ্যাপ লেভেলে এটি অক্ষম করে রাখুন।
FirebaseMessaging.getInstance().setDeliveryMetricsExportToBigQuery(true)
একটি অ্যাপের জন্য ডেলিভারি ডেটা এক্সপোর্ট সক্ষম করুন
আপনি যদি অ্যাপ স্তরে রপ্তানি সক্ষম করতে পছন্দ করেন, তাহলে setDeliveryMetricsExportToBigQuery
পদ্ধতিতে কল না করার বিষয়টি নিশ্চিত করুন এবং আপনার অ্যাপ ম্যানিফেস্টে অ্যাপ্লিকেশন অবজেক্টে নিম্নলিখিত বৈশিষ্ট্য যোগ করুন:
<application>
<meta-data android:name="delivery_metrics_exported_to_big_query_enabled"
android:value="true" />
</application>
BigQuery-এ কোন ডেটা রপ্তানি করা হয়?
মনে রাখবেন যে পুরানো টোকেন বা নিষ্ক্রিয় নিবন্ধনগুলিকে লক্ষ্য করে এই পরিসংখ্যানগুলির কিছু বৃদ্ধি করতে পারে৷
রপ্তানি করা টেবিলের স্কিমা হল:
_পার্টিশনটাইম | টাইমস্ট্যাম্প | এই ছদ্ম কলামে দিনের শুরুর জন্য একটি টাইমস্ট্যাম্প রয়েছে (UTC-তে) যেখানে ডেটা লোড করা হয়েছিল। YYYYMMDD পার্টিশনের জন্য, এই ছদ্ম কলামে TIMESTAMP('YYYY-MM-DD') মান রয়েছে৷ |
ঘটনা_টাইমস্ট্যাম্প | টাইমস্ট্যাম্প | সার্ভার দ্বারা রেকর্ডকৃত ইভেন্ট টাইমস্ট্যাম্প |
প্রকল্প_সংখ্যা | পূর্ণসংখ্যা | প্রকল্প নম্বরটি সেই প্রকল্পটিকে চিহ্নিত করে যা বার্তাটি পাঠিয়েছে |
বার্তা_আইডি | STRING | বার্তা আইডি একটি বার্তা সনাক্ত করে। অ্যাপ আইডি এবং টাইমস্ট্যাম্প থেকে তৈরি, বার্তা আইডি কিছু ক্ষেত্রে বিশ্বব্যাপী অনন্য নাও হতে পারে। |
instance_id | STRING | অ্যাপটির অনন্য আইডিতে বার্তা পাঠানো হয় (যখন উপলব্ধ)। এটি একটি ইনস্ট্যান্স আইডি বা Firebase ইনস্টলেশন আইডি হতে পারে। |
বার্তা_প্রকার | STRING | বার্তার ধরন। বিজ্ঞপ্তি বার্তা বা ডেটা বার্তা হতে পারে। একটি বিষয় বা প্রচারাভিযান পাঠানোর জন্য মূল বার্তা সনাক্ত করতে বিষয় ব্যবহার করা হয়; পরবর্তী বার্তাগুলি হয় একটি বিজ্ঞপ্তি বা ডেটা বার্তা৷ |
sdk_platform | STRING | প্রাপক অ্যাপের প্ল্যাটফর্ম |
app_name | STRING | অ্যান্ড্রয়েড অ্যাপের প্যাকেজের নাম বা iOS অ্যাপের বান্ডেল আইডি |
পতন_কী | STRING | পতন কী বার্তাগুলির একটি গোষ্ঠী সনাক্ত করে যেগুলি ভেঙে দেওয়া যেতে পারে৷ যখন একটি ডিভাইস সংযুক্ত থাকে না, শুধুমাত্র একটি প্রদত্ত পতন কী সহ শেষ বার্তাটি চূড়ান্ত বিতরণের জন্য সারিবদ্ধ থাকে |
অগ্রাধিকার | পূর্ণসংখ্যা | বার্তার অগ্রাধিকার। বৈধ মান হল "স্বাভাবিক" এবং "উচ্চ।" iOS-এ, এগুলি APN-এর অগ্রাধিকার 5 এবং 10-এর সাথে মিলে যায় |
ttl | পূর্ণসংখ্যা | এই প্যারামিটারটি নির্দিষ্ট করে যে ডিভাইসটি অফলাইনে থাকলে কতক্ষণ (সেকেন্ডে) বার্তাটি FCM স্টোরেজে রাখা উচিত |
বিষয় | STRING | যে বিষয়ে একটি বার্তা পাঠানো হয়েছিল তার নাম (যখন প্রযোজ্য) |
bulk_id | পূর্ণসংখ্যা | বাল্ক আইডি সম্পর্কিত বার্তাগুলির একটি গোষ্ঠীকে চিহ্নিত করে, যেমন একটি নির্দিষ্ট বিষয়ে একটি প্রেরণ |
ঘটনা | STRING | অনুষ্ঠানের ধরন। সম্ভাব্য মান হল:
|
বিশ্লেষণ_লেবেল | STRING | HTTP v1 API এর সাথে, বিশ্লেষণের উদ্দেশ্যে বার্তাটিকে চিহ্নিত করার জন্য বার্তা পাঠানোর সময় বিশ্লেষণ লেবেল সেট করা যেতে পারে |
রপ্তানি করা ডেটা দিয়ে আপনি কী করতে পারেন?
নিম্নলিখিত বিভাগগুলি আপনার এক্সপোর্ট করা FCM ডেটার বিপরীতে আপনি BigQuery-এ চালাতে পারেন এমন প্রশ্নের উদাহরণগুলি অফার করে৷
অ্যাপের মাধ্যমে পাঠানো বার্তা গণনা করুন
SELECT app_name, COUNT(1)
FROM `project ID.firebase_messaging.data`
WHERE
_PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD')
AND event = 'MESSAGE_ACCEPTED'
AND message_id != ''
GROUP BY 1;
বার্তা দ্বারা লক্ষ্যযুক্ত অনন্য অ্যাপ্লিকেশন দৃষ্টান্ত গণনা
SELECT COUNT(DISTINCT instance_id)
FROM `project ID.firebase_messaging.data`
WHERE
_PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD')
AND event = 'MESSAGE_ACCEPTED';
প্রেরিত বিজ্ঞপ্তি বার্তা গণনা
SELECT COUNT(1)
FROM `project ID.firebase_messaging.data`
WHERE
_PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD')
AND event = 'MESSAGE_ACCEPTED'
AND message_type = 'DISPLAY_NOTIFICATION';
প্রেরিত ডেটা বার্তা গণনা করুন
SELECT COUNT(1)
FROM `project ID.firebase_messaging.data`
WHERE
_PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD')
AND event = 'MESSAGE_ACCEPTED'
AND message_type = 'DATA_MESSAGE';
একটি বিষয় বা প্রচারাভিযানে পাঠানো বার্তা গণনা
SELECT COUNT(1)
FROM `project ID.firebase_messaging.data`
WHERE
_PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD')
AND event = 'MESSAGE_ACCEPTED'
AND bulk_id = your bulk id AND message_id != '';
নির্দিষ্ট বিষয়ে প্রেরিত একটি বার্তার ইভেন্টগুলি ট্র্যাক করতে, এই ক্যোয়ারীটিকে AND message_id != ''
এর সাথে AND message_id = <your message id>;
.
একটি প্রদত্ত বিষয় বা প্রচারণার জন্য ফ্যানআউট সময়কাল গণনা করুন
ফ্যানআউট শুরুর সময়টি হল যখন মূল অনুরোধটি গৃহীত হয় এবং শেষ সময়টি হল একটি একক দৃষ্টান্তকে লক্ষ্য করে শেষ পৃথক বার্তাটি তৈরি করার সময়।
SELECT TIMESTAMP_DIFF( end_timestamp, start_timestamp, MILLISECOND ) AS fanout_duration_ms, end_timestamp, start_timestamp FROM ( SELECT MAX(event_timestamp) AS end_timestamp FROM `project ID.firebase_messaging.data` WHERE _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD') AND event = 'MESSAGE_ACCEPTED' AND bulk_id = your bulk id ) sent CROSS JOIN ( SELECT event_timestamp AS start_timestamp FROM `project ID.firebase_messaging.data` WHERE _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD') AND event = 'MESSAGE_ACCEPTED' AND bulk_id = your bulk id AND message_type = 'TOPIC' ) initial_message;
বিতরণ করা বার্তাগুলির শতাংশ গণনা করুন
SELECT messages_sent, messages_delivered, messages_delivered / messages_sent * 100 AS percent_delivered FROM ( SELECT COUNT(DISTINCT CONCAT(message_id, instance_id)) AS messages_sent FROM `project ID.firebase_messaging.data` WHERE _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD') AND event = 'MESSAGE_ACCEPTED' ) sent CROSS JOIN ( SELECT COUNT(DISTINCT CONCAT(message_id, instance_id)) AS messages_delivered FROM `project ID.firebase_messaging.data` WHERE _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD') AND (event = 'MESSAGE_DELIVERED' AND message_id IN ( SELECT message_id FROM `project ID.firebase_messaging.data` WHERE _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD') AND event = 'MESSAGE_ACCEPTED' GROUP BY 1 ) ) delivered;
একটি প্রদত্ত বার্তা আইডি এবং ইনস্ট্যান্স আইডির জন্য সমস্ত ইভেন্ট ট্র্যাক করুন
SELECT *
FROM `project ID.firebase_messaging.data`
WHERE
_PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD')
AND message_id = 'your message id'
AND instance_id = 'your instance id'
ORDER BY event_timestamp;
একটি প্রদত্ত বার্তা আইডি এবং ইনস্ট্যান্স আইডির জন্য লেটেন্সি গণনা করুন
SELECT TIMESTAMP_DIFF( MAX(delivered_time), MIN(accepted_time), MILLISECOND ) AS latency_ms FROM ( SELECT event_timestamp AS accepted_time FROM `project ID.firebase_messaging.data` WHERE _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD') AND message_id = 'your message id' AND instance_id = 'your instance id' AND event = 'MESSAGE_ACCEPTED' ) sent CROSS JOIN ( SELECT event_timestamp AS delivered_time FROM `project ID.firebase_messaging.data` WHERE _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD') AND message_id = 'your message id' AND instance_id = 'your instance id' AND (event = 'MESSAGE_DELIVERED' ) delivered;
চলমান বার্তা বিতরণ ব্যর্থতার সমস্যা সমাধানের জন্য, FCM সমস্যা সমাধানকারী ব্যবহার করুন এবং আপনি কেন আপনার বার্তা দেখতে পাচ্ছেন না তার বিভিন্ন কারণ বুঝতে এই ব্লগ পোস্টটি দেখুন। আপনি FCM স্থিতি ড্যাশবোর্ড পরিদর্শন করতে পারেন যদি কোনো চলমান পরিষেবা বাধা FCM প্রভাবিত করে কিনা তা সনাক্ত করতে পারেন।
FCM আপনাকে মেসেজিং সাফল্য এবং কৌশলের বিস্তৃত মূল্যায়নের অন্তর্দৃষ্টি পেতে সহায়তা করার জন্য তিনটি সেট টুল সরবরাহ করে:
- Firebase কনসোল মেসেজ ডেলিভারি রিপোর্ট
- Firebase Cloud Messaging ডেটা API থেকে অ্যাগ্রিগেটেড অ্যান্ড্রয়েড SDK ডেলিভারি মেট্রিক
- Google BigQuery-এ ব্যাপক ডেটা এক্সপোর্ট
এই পৃষ্ঠায় বর্ণিত রিপোর্টিং টুলগুলির কাজ করার জন্য Google Analytics প্রয়োজন। আপনার প্রোজেক্টের জন্য Google Analytics সক্ষম না থাকলে, আপনি আপনার Firebase প্রোজেক্ট সেটিংসের ইন্টিগ্রেশন ট্যাবে এটি সেট আপ করতে পারেন।
মনে রাখবেন যে এই পৃষ্ঠার অনেক পরিসংখ্যানের রিপোর্টিং, বিশ্লেষণ ডেটা ব্যাচিংয়ের কারণে 24 ঘন্টা পর্যন্ত বিলম্বের বিষয়।
বার্তা বিতরণ রিপোর্ট
Firebase কনসোলের রিপোর্ট ট্যাবে, আপনি Android বা Apple প্ল্যাটফর্ম FCM SDK-এ পাঠানো বার্তাগুলির জন্য নিম্নলিখিত ডেটা দেখতে পারেন, বিজ্ঞপ্তি কম্পোজার এবং FCM API-এর মাধ্যমে পাঠানো সহ:
- পাঠায় — ডেটা মেসেজ বা বিজ্ঞপ্তি বার্তা ডেলিভারির জন্য সারিবদ্ধ করা হয়েছে বা ডেলিভারির জন্য APN-এর মতো তৃতীয় পক্ষের পরিষেবাতে সফলভাবে পাঠানো হয়েছে। আরও তথ্যের জন্য একটি বার্তার জীবনকাল দেখুন।
- প্রাপ্ত (শুধুমাত্র অ্যান্ড্রয়েড ডিভাইসে উপলব্ধ) — ডেটা বার্তা বা বিজ্ঞপ্তি বার্তা অ্যাপটি পেয়েছে। এই ডেটা পাওয়া যায় যখন প্রাপ্ত Android ডিভাইসে FCM SDK 18.0.1 বা উচ্চতর ইনস্টল করা থাকে।
- ইমপ্রেশন (শুধুমাত্র অ্যান্ড্রয়েড ডিভাইসে বিজ্ঞপ্তি বার্তার জন্য উপলব্ধ) — অ্যাপটি ব্যাকগ্রাউন্ডে থাকাকালীন ডিভাইসে ডিসপ্লে বিজ্ঞপ্তি প্রদর্শিত হয়েছে।
- খোলে - ব্যবহারকারী বিজ্ঞপ্তি বার্তাটি খুললেন। অ্যাপটি ব্যাকগ্রাউন্ডে থাকলে শুধুমাত্র প্রাপ্ত বিজ্ঞপ্তিগুলির জন্য রিপোর্ট করা হয়।
এই ডেটা একটি বিজ্ঞপ্তি পেলোড সহ সমস্ত বার্তা এবং সমস্ত লেবেলযুক্ত ডেটা বার্তাগুলির জন্য উপলব্ধ৷ লেবেল সম্পর্কে আরও জানতে, বার্তাগুলিতে বিশ্লেষণ লেবেল যুক্ত করা দেখুন।
বার্তা প্রতিবেদনগুলি দেখার সময়, আপনি CSV-এ রপ্তানি করার বিকল্প সহ প্রদর্শিত ডেটার জন্য একটি তারিখ পরিসর সেট করতে পারেন৷ আপনি এই মানদণ্ড দ্বারা ফিল্টার করতে পারেন:
- প্ল্যাটফর্ম (iOS বা Android)
- অ্যাপ
- কাস্টম বিশ্লেষণ লেবেল
বার্তাগুলিতে বিশ্লেষণ লেবেল যুক্ত করা হচ্ছে
লেবেল বার্তাগুলি কাস্টম বিশ্লেষণের জন্য খুব দরকারী, আপনাকে লেবেল বা লেবেলগুলির সেট দ্বারা বিতরণ পরিসংখ্যান ফিল্টার করতে দেয়৷ আপনি বার্তা অবজেক্টে fcmOptions.analyticsLabel
ক্ষেত্র বা প্ল্যাটফর্ম-নির্দিষ্ট AndroidFcmOptions
বা ApnsFcmOptions
ক্ষেত্রে সেট করে HTTP v1 API-এর মাধ্যমে প্রেরিত যেকোনো বার্তায় একটি লেবেল যোগ করতে পারেন।
অ্যানালিটিক্স লেবেলগুলি ^[a-zA-Z0-9-_.~%]{1,50}$
। লেবেলে ছোট এবং বড় হাতের অক্ষর, সংখ্যা এবং নিম্নলিখিত চিহ্নগুলি অন্তর্ভুক্ত থাকতে পারে:
-
-
-
~
-
%
সর্বাধিক দৈর্ঘ্য 50 অক্ষর। আপনি প্রতিদিন 100টি অনন্য লেবেল নির্দিষ্ট করতে পারেন; সেই সীমার বাইরে লেবেল যুক্ত বার্তাগুলি রিপোর্ট করা হয় না৷
Firebase কনসোল মেসেজিং রিপোর্ট ট্যাবে, আপনি সমস্ত বিদ্যমান লেবেলের একটি তালিকা অনুসন্ধান করতে পারেন এবং প্রদর্শিত পরিসংখ্যান ফিল্টার করতে এককভাবে বা একত্রে প্রয়োগ করতে পারেন।
FCM ডেটা এপিআই-এর মাধ্যমে একত্রিত ডেলিভারি ডেটা
Firebase ক্লাউড মেসেজিং ডেটা API আপনাকে তথ্য পুনরুদ্ধার করতে দেয় যা আপনাকে Android অ্যাপ্লিকেশানগুলিতে লক্ষ্য করা বার্তা অনুরোধের ফলাফল বুঝতে সাহায্য করতে পারে। API একটি প্রকল্পে সমস্ত ডেটা সংগ্রহ-সক্ষম অ্যান্ড্রয়েড ডিভাইস জুড়ে সমষ্টিগত ডেটা সরবরাহ করে। এতে বিলম্ব ছাড়াই বিতরণ করা বার্তার শতাংশের পাশাপাশি Android ট্রান্সপোর্ট লেয়ারের মধ্যে কতগুলি বার্তা বিলম্বিত বা ড্রপ করা হয়েছে তার বিশদ অন্তর্ভুক্ত রয়েছে৷ এই ডেটা মূল্যায়ন বার্তা বিতরণের বিস্তৃত প্রবণতা প্রকাশ করতে পারে এবং আপনার প্রেরণের অনুরোধগুলির কার্যকারিতা উন্নত করার কার্যকর উপায় খুঁজে পেতে সহায়তা করতে পারে। রিপোর্টে তারিখ পরিসরের প্রাপ্যতার তথ্যের জন্য সামগ্রিক ডেটা টাইমলাইন দেখুন।
API একটি প্রদত্ত অ্যাপ্লিকেশনের জন্য উপলব্ধ সমস্ত ডেটা সরবরাহ করে। API রেফারেন্স ডকুমেন্টেশন দেখুন।
কিভাবে তথ্য ভাঙ্গা হয়?
ডেলিভারি ডেটা অ্যাপ্লিকেশন, তারিখ এবং বিশ্লেষণ লেবেল দ্বারা বিভক্ত করা হয়। API-তে একটি কল তারিখ, অ্যাপ্লিকেশন এবং বিশ্লেষণ লেবেলের প্রতিটি সংমিশ্রণের জন্য ডেটা ফেরত দেবে। উদাহরণস্বরূপ, একটি একক androidDeliveryData
JSON অবজেক্ট দেখতে এইরকম হবে:
{
"appId": "1:23456789:android:a93a5mb1234efe56",
"date": {
"year": 2021,
"month": 1,
"day": 1
},
"analyticsLabel": "foo",
"data": {
"countMessagesAccepted": "314159",
"messageOutcomePercents": {
"delivered": 71,
"pending": 15
},
"deliveryPerformancePercents": {
"deliveredNoDelay": 45,
"delayedDeviceOffline": 11
}
}
কিভাবে মেট্রিক্স ব্যাখ্যা
ডেলিভারি ডেটা নিম্নলিখিত মেট্রিক্সগুলির প্রতিটির সাথে মানানসই বার্তাগুলির শতাংশের রূপরেখা দেয়৷ এটা সম্ভব যে একটি একক বার্তা একাধিক মেট্রিক্সে ফিট করে। আমরা কীভাবে ডেটা সংগ্রহ করি এবং যে স্তরে আমরা মেট্রিকগুলিকে একত্রিত করেছি তার সীমাবদ্ধতার কারণে, কিছু বার্তা ফলাফলগুলি মেট্রিক্সে মোটেও উপস্থাপন করা হয় না, তাই নীচের শতাংশগুলি 100% হবে না।
গণনা বার্তা গ্রহণ করা হয়েছে
ডেটাসেটে অন্তর্ভুক্ত একমাত্র গণনা হল Android ডিভাইসগুলিতে বিতরণের জন্য FCM দ্বারা গৃহীত বার্তাগুলির গণনা৷ সমস্ত শতাংশ এই মানটিকে হর হিসাবে ব্যবহার করে। মনে রাখবেন যে এই গণনায় ব্যবহারকারীদের লক্ষ্য করা বার্তাগুলি অন্তর্ভুক্ত করা হবে না যারা তাদের ডিভাইসে ব্যবহার এবং ডায়াগনস্টিক তথ্য সংগ্রহ অক্ষম করেছেন৷
বার্তা ফলাফল শতাংশ
MessageOutcomePercents
অবজেক্টের অন্তর্ভুক্ত ক্ষেত্রগুলি বার্তা অনুরোধের ফলাফল সম্পর্কে তথ্য প্রদান করে। বিভাগ সব পারস্পরিক একচেটিয়া. এটি প্রশ্নের উত্তর দিতে পারে যেমন "আমার বার্তাগুলি কি বিতরণ করা হচ্ছে?" এবং "মেসেজ বাদ দেওয়ার কারণ কি?"
উদাহরণস্বরূপ, droppedTooManyPendingMessages
ক্ষেত্রের জন্য একটি উচ্চ মান ইঙ্গিত দিতে পারে যে অ্যাপের দৃষ্টান্তগুলি FCM এর 100 মুলতুবি বার্তার সীমা ছাড়িয়ে অ-সংকোচনযোগ্য বার্তাগুলির ভলিউম গ্রহণ করছে৷ এটি প্রশমিত করতে, নিশ্চিত করুন যে আপনার অ্যাপ onDeletedMessages
এ কলগুলি পরিচালনা করে এবং সংকোচনযোগ্য বার্তা পাঠানোর কথা বিবেচনা করুন। একইভাবে, droppedDeviceInactive
জন্য উচ্চ শতাংশ আপনার সার্ভারে নিবন্ধন টোকেন আপডেট করার জন্য একটি সংকেত হতে পারে, পুরানো টোকেনগুলি সরানো এবং বিষয়গুলি থেকে তাদের সদস্যতা ত্যাগ করা। এই এলাকায় সেরা অনুশীলনের জন্য FCM রেজিস্ট্রেশন টোকেন পরিচালনা করুন দেখুন।
ডেলিভারি কর্মক্ষমতা শতাংশ
DeliveryPerformancePercents
অবজেক্টের ক্ষেত্রগুলি সফলভাবে বিতরণ করা বার্তাগুলি সম্পর্কে তথ্য প্রদান করে। এটি প্রশ্নের উত্তর দিতে পারে যেমন "আমার বার্তাগুলি কি বিলম্বিত হয়েছিল?" এবং "মেসেজ আসতে দেরি হয় কেন?" উদাহরণস্বরূপ, delayedMessageThrottled
এর জন্য একটি উচ্চ মান স্পষ্টভাবে নির্দেশ করবে যে আপনি প্রতি-ডিভাইসের সর্বোচ্চ সীমা অতিক্রম করছেন এবং আপনি যে হারে বার্তা পাঠাচ্ছেন তা সামঞ্জস্য করা উচিত।
বার্তা অন্তর্দৃষ্টি শতাংশ
এই বস্তুটি পাঠানো সমস্ত বার্তা সম্পর্কে অতিরিক্ত তথ্য প্রদান করে। priorityLowered
নিম্ন ক্ষেত্রটি গৃহীত বার্তাগুলির শতাংশকে প্রকাশ করে যেগুলির অগ্রাধিকার HIGH
থেকে NORMAL
পর্যন্ত কমিয়ে দেওয়া হয়েছিল৷ যদি এই মানটি বেশি হয়, কম উচ্চ অগ্রাধিকার বার্তা পাঠানোর চেষ্টা করুন বা একটি উচ্চ অগ্রাধিকার বার্তা পাঠানো হলে আপনি সর্বদা একটি বিজ্ঞপ্তি প্রদর্শন করেন তা নিশ্চিত করুন৷ আরও তথ্যের জন্য বার্তা অগ্রাধিকার সম্পর্কে আমাদের ডকুমেন্টেশন দেখুন
BigQuery-এ এক্সপোর্ট করা ডেটা থেকে এই ডেটা কীভাবে আলাদা?
BigQuery রপ্তানি FCM ব্যাকএন্ড দ্বারা বার্তা গ্রহণ এবং ডিভাইসে SDK-এ বার্তা বিতরণ সম্পর্কে পৃথক বার্তা লগ প্রদান করে ( FCM আর্কিটেকচারের ধাপ 2 এবং 4)। পৃথক বার্তাগুলি গ্রহণ এবং বিতরণ করা হয়েছে তা নিশ্চিত করার জন্য এই ডেটাটি কার্যকর। পরবর্তী বিভাগে BigQuery ডেটা এক্সপোর্ট সম্পর্কে আরও পড়ুন।
বিপরীতে, ফায়ারবেস ক্লাউড মেসেজিং ডেটা API অ্যান্ড্রয়েড ট্রান্সপোর্ট লেয়ারে (বা FCM আর্কিটেকচারের ধাপ 3) বিশেষভাবে কী ঘটে সে সম্পর্কে সমষ্টিগত বিবরণ প্রদান করে। এই ডেটা বিশেষত FCM ব্যাকএন্ড থেকে Android SDK-তে বার্তাগুলির বিতরণের অন্তর্দৃষ্টি প্রদান করে৷ কেন এই পরিবহনের সময় বার্তাগুলি বিলম্বিত বা বাদ দেওয়া হয়েছিল সেই প্রবণতাগুলি দেখানোর জন্য এটি বিশেষভাবে কার্যকর।
কিছু ক্ষেত্রে, এটি সম্ভব যে দুটি ডেটা সেট নিম্নলিখিত কারণে সঠিকভাবে মেলে না:
- একত্রিত মেট্রিক্স শুধুমাত্র সমস্ত বার্তার একটি অংশের নমুনা
- একত্রিত মেট্রিকগুলি বৃত্তাকার
- আমরা গোপনীয়তা থ্রেশহোল্ডের নিচে মেট্রিক্স উপস্থাপন করি না
- আমরা কিভাবে বিশাল পরিমাণ ট্রাফিক পরিচালনা করি তার অপ্টিমাইজেশনের কারণে বার্তা ফলাফলের একটি অংশ অনুপস্থিত।
API এর সীমাবদ্ধতা
সামগ্রিক ডেটা টাইমলাইন
API 7 দিনের ঐতিহাসিক ডেটা ফেরত দেবে; যাইহোক, এই API দ্বারা প্রত্যাবর্তিত ডেটা 5 দিন পর্যন্ত বিলম্বিত হবে। উদাহরণস্বরূপ, 20শে জানুয়ারী, 9 ই জানুয়ারী - 15 জানুয়ারী এর ডেটা উপলব্ধ হবে, তবে 16 শে জানুয়ারী বা তার পরে নয়৷ উপরন্তু, তথ্য সেরা প্রচেষ্টা প্রদান করা হয়. ডেটা বিভ্রাটের ক্ষেত্রে, এফসিএম ফরওয়ার্ড ঠিক করতে কাজ করবে এবং সমস্যাটি ঠিক হওয়ার পরে ডেটা ব্যাকফিল করবে না। বড় বিভ্রাটের ক্ষেত্রে, ডেটা এক সপ্তাহ বা তার বেশি সময়ের জন্য অনুপলব্ধ হতে পারে।
ডেটা কভারেজ
Firebase ক্লাউড মেসেজিং ডেটা API দ্বারা প্রদত্ত মেট্রিকগুলি বার্তা বিতরণের বিস্তৃত প্রবণতাগুলির অন্তর্দৃষ্টি প্রদান করার জন্য। যাইহোক, তারা সমস্ত বার্তা পরিস্থিতির 100% কভারেজ প্রদান করে না। নিম্নলিখিত পরিস্থিতিগুলি পরিচিত ফলাফলগুলি মেট্রিক্সে প্রতিফলিত হয় না৷
মেয়াদোত্তীর্ণ বার্তা
টাইম টু লাইভ (TTL) প্রদত্ত লগ তারিখ শেষ হওয়ার পরে মেয়াদ শেষ হলে, এই তারিখে বার্তাটি droppedTtlExpired
হিসাবে গণনা করা হবে না।
নিষ্ক্রিয় ডিভাইসে বার্তা
নিষ্ক্রিয় ডিভাইসগুলিতে প্রেরিত বার্তাগুলি ডেটাসেটে প্রদর্শিত হতে পারে বা নাও হতে পারে তার উপর নির্ভর করে তারা কোন ডেটা পথ গ্রহণ করে। এটি droppedDeviceInactive
এবং pending
ক্ষেত্রগুলিতে কিছু ভুল হিসাব হতে পারে।
নির্দিষ্ট ব্যবহারকারীর পছন্দ সহ ডিভাইসগুলিতে বার্তা
যে ব্যবহারকারীরা তাদের ডিভাইসে ব্যবহার এবং ডায়াগনস্টিক তথ্য সংগ্রহকে অক্ষম করেছেন তাদের পছন্দ অনুসারে তাদের বার্তাগুলি আমাদের গণনায় অন্তর্ভুক্ত করা হবে না।
বৃত্তাকার এবং সর্বনিম্ন
FCM ইচ্ছাকৃতভাবে বৃত্তাকার এবং গণনা বাদ দেয় যেখানে ভলিউম যথেষ্ট বড় নয়।
BigQuery ডেটা এক্সপোর্ট
আপনি আরও বিশ্লেষণের জন্য আপনার মেসেজ ডেটা BigQuery- এ এক্সপোর্ট করতে পারেন। BigQuery আপনাকে BigQuery SQL ব্যবহার করে ডেটা বিশ্লেষণ করতে, অন্য ক্লাউড প্রদানকারীর কাছে রপ্তানি করতে বা আপনার কাস্টম ML মডেলের জন্য ডেটা ব্যবহার করতে দেয়। BigQuery-এ রপ্তানি করা বার্তাগুলির জন্য সমস্ত উপলব্ধ ডেটা অন্তর্ভুক্ত করে, বার্তার ধরন নির্বিশেষে বা বার্তাটি API বা বিজ্ঞপ্তি কম্পোজারের মাধ্যমে পাঠানো হয়েছে কিনা।
নিম্নলিখিত FCM SDK ন্যূনতম সংস্করণ সহ ডিভাইসগুলিতে পাঠানো বার্তাগুলির জন্য, আপনার অ্যাপের জন্য বার্তা বিতরণ ডেটা রপ্তানি সক্ষম করার অতিরিক্ত বিকল্প রয়েছে:
- Android 20.1.0 বা উচ্চতর।
- iOS 8.6.0 বা উচ্চতর
- Firebase Web SDK 9.0.0 বা উচ্চতর
Android এবং iOS-এর জন্য ডেটা রপ্তানি সক্ষম করার বিষয়ে বিশদ বিবরণের জন্য নীচে দেখুন।
শুরু করতে, BigQuery-এ আপনার প্রোজেক্ট লিঙ্ক করুন:
নিম্নলিখিত বিকল্পগুলির মধ্যে একটি চয়ন করুন:
বিজ্ঞপ্তি কম্পোজার খুলুন, তারপর পৃষ্ঠার নীচে Access BigQuery-এ ক্লিক করুন।
Firebase কনসোলের ইন্টিগ্রেশন পৃষ্ঠা থেকে, BigQuery কার্ডে লিঙ্কে ক্লিক করুন।
এই পৃষ্ঠাটি প্রকল্পের সমস্ত FCM সক্ষম অ্যাপগুলির জন্য FCM রপ্তানির বিকল্পগুলি প্রদর্শন করে৷
BigQuery সক্ষম করতে অন-স্ক্রীন নির্দেশাবলী অনুসরণ করুন।
আরও তথ্যের জন্য BigQuery-তে Firebase লিঙ্ক দেখুন।
আপনি যখন Cloud Messaging জন্য BigQuery রপ্তানি সক্ষম করেন:
Firebase আপনার ডেটা BigQuery এ এক্সপোর্ট করে। মনে রাখবেন যে রপ্তানির জন্য ডেটার প্রাথমিক প্রচার সম্পূর্ণ হতে 48 ঘন্টা পর্যন্ত সময় লাগতে পারে।
ডেটাসেট তৈরি হওয়ার পরে, অবস্থান পরিবর্তন করা যাবে না, তবে আপনি ডেটাসেটটিকে একটি ভিন্ন অবস্থানে অনুলিপি করতে পারেন বা ম্যানুয়ালি একটি ভিন্ন অবস্থানে ডেটাসেটটি সরাতে (পুনরায় তৈরি) করতে পারেন৷ আরও জানতে, ডেটাসেটের অবস্থান পরিবর্তন দেখুন।
Firebase আপনার Firebase প্রকল্প থেকে BigQuery এ আপনার ডেটার নিয়মিত সিঙ্ক সেট আপ করে। এই দৈনিক রপ্তানি কার্যক্রম প্রশান্ত মহাসাগরীয় সময় সকাল 4:00 এ শুরু হয় এবং সাধারণত 24 ঘন্টার মধ্যে শেষ হয়।
ডিফল্টরূপে, আপনার প্রোজেক্টের সমস্ত অ্যাপ BigQuery এর সাথে লিঙ্ক করা থাকে এবং আপনি পরে প্রোজেক্টে যোগ করেন এমন যেকোন অ্যাপ স্বয়ংক্রিয়ভাবে BigQuery এর সাথে লিঙ্ক হয়ে যায়। কোন অ্যাপগুলি ডেটা পাঠায় তা আপনি পরিচালনা করতে পারেন৷
BigQuery এক্সপোর্ট নিষ্ক্রিয় করতে, Firebase কনসোলে আপনার প্রোজেক্ট আনলিঙ্ক করুন ।
বার্তা বিতরণ ডেটা রপ্তানি সক্ষম করুন৷
FCM SDK 20.1.0 বা তার বেশির Android ডিভাইসগুলি তাদের অ্যাপের মেসেজ ডেলিভারি ডেটা এক্সপোর্ট সক্ষম করতে পারে। অ্যাপ স্তরে ডিফল্টরূপে ডেটা এক্সপোর্ট অক্ষম করা হয়। এটিকে অ্যাপ ইনস্ট্যান্স লেভেলে প্রোগ্রাম্যাটিকভাবে সক্ষম করার ফলে আপনি শেষ ব্যবহারকারীদের তাদের বার্তা বিতরণ ডেটা বিশ্লেষণ করার অনুমতি চাইতে পারেন (প্রস্তাবিত)। যেখানে উভয়ই সেট করা থাকে, অ্যাপ ইনস্ট্যান্স লেভেল ভ্যালু অ্যাপ লেভেল ভ্যালুকে ওভাররাইড করে।
এই বিকল্পগুলি সক্ষম করার আগে, আপনাকে প্রথমে আপনার প্রকল্পের জন্য FCM -BiqQuery লিঙ্ক তৈরি করতে হবে যেমন BigQuery ডেটা এক্সপোর্টে বর্ণিত হয়েছে।
অ্যাপ দৃষ্টান্তের জন্য ডেলিভারি ডেটা এক্সপোর্ট সক্ষম করুন
বেশিরভাগ ক্ষেত্রে, আমরা সুপারিশ করি যে আপনি শুধুমাত্র অ্যাপ ইনস্ট্যান্স লেভেলে মেসেজ ডেলিভারি ডেটা এক্সপোর্ট চালু করুন এবং অ্যাপ লেভেলে এটি অক্ষম করে রাখুন।
FirebaseMessaging.getInstance().setDeliveryMetricsExportToBigQuery(true)
একটি অ্যাপের জন্য ডেলিভারি ডেটা এক্সপোর্ট সক্ষম করুন
আপনি যদি অ্যাপ স্তরে রপ্তানি সক্ষম করতে পছন্দ করেন, তাহলে setDeliveryMetricsExportToBigQuery
পদ্ধতিতে কল না করার বিষয়টি নিশ্চিত করুন এবং আপনার অ্যাপ ম্যানিফেস্টে অ্যাপ্লিকেশন অবজেক্টে নিম্নলিখিত বৈশিষ্ট্য যোগ করুন:
<application>
<meta-data android:name="delivery_metrics_exported_to_big_query_enabled"
android:value="true" />
</application>
বিগকোয়ারিতে কোন ডেটা রফতানি করা হয়?
নোট করুন যে বাসি টোকেন বা নিষ্ক্রিয় নিবন্ধগুলি লক্ষ্য করে এই পরিসংখ্যানগুলির কয়েকটি স্ফীত করতে পারে।
রফতানি টেবিলের স্কিমা হ'ল:
_ পার্টিশনটাইম | টাইমস্ট্যাম্প | এই সিউডো কলামে দিনের শুরু হওয়ার জন্য একটি টাইমস্ট্যাম্প রয়েছে (ইউটিসি -তে) যেখানে ডেটা লোড করা হয়েছিল। Yyyymmdd পার্টিশনের জন্য, এই সিউডো কলামে মান টাইমস্ট্যাম্প ('yyyy-mm-dd') রয়েছে। |
ইভেন্ট_টাইমস্ট্যাম্প | টাইমস্ট্যাম্প | সার্ভার দ্বারা রেকর্ড হিসাবে ইভেন্ট টাইমস্ট্যাম্প |
প্রকল্প_ সংখ্যা | পূর্ণসংখ্যা | প্রকল্প নম্বরটি প্রকল্পটি সনাক্ত করে যা বার্তা প্রেরণ করেছে |
বার্তা_আইডি | STRING | বার্তা আইডি একটি বার্তা সনাক্ত করে। অ্যাপ্লিকেশন আইডি এবং টাইমস্ট্যাম্প থেকে উত্পন্ন, বার্তা আইডি কিছু ক্ষেত্রে বিশ্বব্যাপী অনন্য হতে পারে না। |
instance_id | STRING | অ্যাপ্লিকেশনটির অনন্য আইডি বার্তাটি প্রেরণ করা হয় (যখন উপলব্ধ)। এটি কোনও উদাহরণ আইডি বা Firebase ইনস্টলেশন আইডি হতে পারে। |
বার্তা_ টাইপ | STRING | বার্তার ধরণ। বিজ্ঞপ্তি বার্তা বা ডেটা বার্তা হতে পারে। বিষয় কোনও বিষয় বা প্রচার প্রেরণের জন্য মূল বার্তাটি সনাক্ত করতে ব্যবহৃত হয়; পরবর্তী বার্তাগুলি হয় একটি বিজ্ঞপ্তি বা ডেটা বার্তা। |
sdk_platform | STRING | প্রাপক অ্যাপের প্ল্যাটফর্ম |
app_name | STRING | অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলির জন্য প্যাকেজের নাম বা আইওএস অ্যাপ্লিকেশনগুলির জন্য বান্ডিল আইডি |
CALAPSE_KEY | STRING | ধসের কীটি এমন একদল বার্তা চিহ্নিত করে যা ধসে পড়তে পারে। যখন কোনও ডিভাইস সংযুক্ত না থাকে, কেবলমাত্র প্রদত্ত ধসের কী সহ শেষ বার্তাটি চূড়ান্ত বিতরণের জন্য সারি করা হয় |
অগ্রাধিকার | পূর্ণসংখ্যা | বার্তার অগ্রাধিকার। বৈধ মানগুলি "সাধারণ" এবং "উচ্চ"। আইওএস -এ, এগুলি এপিএনএস অগ্রাধিকার 5 এবং 10 এর সাথে মিলে যায় |
ttl | পূর্ণসংখ্যা | এই প্যারামিটারটি নির্দিষ্ট করে দেয় যে ডিভাইসটি অফলাইনে থাকলে বার্তাটি এফসিএম স্টোরেজে রাখা উচিত |
বিষয় | STRING | যে বিষয়টিতে একটি বার্তা প্রেরণ করা হয়েছিল তার নাম (যখন প্রযোজ্য) |
বাল্ক_আইডি | পূর্ণসংখ্যা | বাল্ক আইডি সম্পর্কিত বার্তাগুলির একটি গ্রুপকে চিহ্নিত করে, যেমন কোনও বিষয়ে নির্দিষ্ট পাঠানো |
ঘটনা | STRING | অনুষ্ঠানের ধরন। সম্ভাব্য মান হল:
|
বিশ্লেষণ_লাবেল | STRING | এইচটিটিপি ভি 1 এপিআইয়ের সাথে, বিশ্লেষণের উদ্দেশ্যে বার্তাটি চিহ্নিত করার জন্য বার্তাটি প্রেরণের সময় বিশ্লেষণ লেবেল সেট করা যেতে পারে |
রফতানি করা ডেটা দিয়ে আপনি কী করতে পারেন?
নিম্নলিখিত বিভাগগুলি আপনার রফতানি FCM ডেটার বিপরীতে বিগকোয়ারিতে চালাতে পারেন এমন প্রশ্নের উদাহরণগুলি সরবরাহ করে।
অ্যাপ্লিকেশন দ্বারা প্রেরিত বার্তা গণনা
SELECT app_name, COUNT(1)
FROM `project ID.firebase_messaging.data`
WHERE
_PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD')
AND event = 'MESSAGE_ACCEPTED'
AND message_id != ''
GROUP BY 1;
বার্তা দ্বারা লক্ষ্যযুক্ত অনন্য অ্যাপ্লিকেশন উদাহরণ গণনা করুন
SELECT COUNT(DISTINCT instance_id)
FROM `project ID.firebase_messaging.data`
WHERE
_PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD')
AND event = 'MESSAGE_ACCEPTED';
গণনা বিজ্ঞপ্তি বার্তা প্রেরণ
SELECT COUNT(1)
FROM `project ID.firebase_messaging.data`
WHERE
_PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD')
AND event = 'MESSAGE_ACCEPTED'
AND message_type = 'DISPLAY_NOTIFICATION';
ডেটা বার্তা প্রেরণ গণনা করুন
SELECT COUNT(1)
FROM `project ID.firebase_messaging.data`
WHERE
_PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD')
AND event = 'MESSAGE_ACCEPTED'
AND message_type = 'DATA_MESSAGE';
কোনও বিষয় বা প্রচারে প্রেরিত বার্তা গণনা করুন
SELECT COUNT(1)
FROM `project ID.firebase_messaging.data`
WHERE
_PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD')
AND event = 'MESSAGE_ACCEPTED'
AND bulk_id = your bulk id AND message_id != '';
নির্দিষ্ট বিষয়ে প্রেরিত কোনও বার্তার জন্য ইভেন্টগুলি ট্র্যাক করতে, প্রতিস্থাপন AND message_id != ''
এর সাথে AND message_id = <your message id>;
.
প্রদত্ত বিষয় বা প্রচারের জন্য ফ্যানআউট সময়কাল গণনা করুন
ফ্যানআউট শুরুর সময়টি যখন মূল অনুরোধটি প্রাপ্ত হয় এবং শেষ সময়টি হ'ল শেষ সময়টি একক উদাহরণকে লক্ষ্য করে শেষ স্বতন্ত্র বার্তা তৈরি করা হয়।
SELECT TIMESTAMP_DIFF( end_timestamp, start_timestamp, MILLISECOND ) AS fanout_duration_ms, end_timestamp, start_timestamp FROM ( SELECT MAX(event_timestamp) AS end_timestamp FROM `project ID.firebase_messaging.data` WHERE _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD') AND event = 'MESSAGE_ACCEPTED' AND bulk_id = your bulk id ) sent CROSS JOIN ( SELECT event_timestamp AS start_timestamp FROM `project ID.firebase_messaging.data` WHERE _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD') AND event = 'MESSAGE_ACCEPTED' AND bulk_id = your bulk id AND message_type = 'TOPIC' ) initial_message;
বিতরণ করা বার্তাগুলির শতাংশ গণনা করুন
SELECT messages_sent, messages_delivered, messages_delivered / messages_sent * 100 AS percent_delivered FROM ( SELECT COUNT(DISTINCT CONCAT(message_id, instance_id)) AS messages_sent FROM `project ID.firebase_messaging.data` WHERE _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD') AND event = 'MESSAGE_ACCEPTED' ) sent CROSS JOIN ( SELECT COUNT(DISTINCT CONCAT(message_id, instance_id)) AS messages_delivered FROM `project ID.firebase_messaging.data` WHERE _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD') AND (event = 'MESSAGE_DELIVERED' AND message_id IN ( SELECT message_id FROM `project ID.firebase_messaging.data` WHERE _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD') AND event = 'MESSAGE_ACCEPTED' GROUP BY 1 ) ) delivered;
প্রদত্ত বার্তা আইডি এবং উদাহরণ আইডির জন্য সমস্ত ইভেন্ট ট্র্যাক করুন
SELECT *
FROM `project ID.firebase_messaging.data`
WHERE
_PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD')
AND message_id = 'your message id'
AND instance_id = 'your instance id'
ORDER BY event_timestamp;
প্রদত্ত বার্তা আইডি এবং উদাহরণ আইডির জন্য গণনা বিলম্ব
SELECT TIMESTAMP_DIFF( MAX(delivered_time), MIN(accepted_time), MILLISECOND ) AS latency_ms FROM ( SELECT event_timestamp AS accepted_time FROM `project ID.firebase_messaging.data` WHERE _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD') AND message_id = 'your message id' AND instance_id = 'your instance id' AND event = 'MESSAGE_ACCEPTED' ) sent CROSS JOIN ( SELECT event_timestamp AS delivered_time FROM `project ID.firebase_messaging.data` WHERE _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD') AND message_id = 'your message id' AND instance_id = 'your instance id' AND (event = 'MESSAGE_DELIVERED' ) delivered;
চলমান বার্তা বিতরণ ব্যর্থতার সমস্যা সমাধানের জন্য, এফসিএম ট্রাবলশুটারটি ব্যবহার করুন এবং আপনি আপনার বার্তাটি কেন না দেখতে পারেন তার বিভিন্ন কারণ বুঝতে এই ব্লগ পোস্টটি দেখুন। এফসিএমকে প্রভাবিত করে এমন কোনও চলমান পরিষেবা বাধা রয়েছে কিনা তা সনাক্ত করতে আপনি এফসিএম স্ট্যাটাস ড্যাশবোর্ডও দেখতে পারেন।
বার্তাপ্রেরণ সাফল্য এবং কৌশলটির বিস্তৃত মূল্যায়নের অন্তর্দৃষ্টি পেতে আপনাকে সহায়তা করার জন্য এফসিএম তিনটি সেট সরঞ্জাম সরবরাহ করে:
- Firebase কনসোল বার্তা বিতরণ প্রতিবেদন
- Firebase Cloud Messaging ডেটা এপিআই থেকে একত্রিত অ্যান্ড্রয়েড এসডিকে ডেলিভারি মেট্রিকগুলি
- গুগল বিগকোয়ারিতে বিস্তৃত ডেটা রফতানি
এই পৃষ্ঠায় বর্ণিত প্রতিবেদনের সরঞ্জামগুলির জন্য সমস্ত কাজ করার জন্য Google Analytics প্রয়োজন। যদি আপনার প্রকল্পের জন্য Google Analytics সক্ষম না করা হয় তবে আপনি এটি আপনার ফায়ারবেস প্রকল্প সেটিংসের ইন্টিগ্রেশনস ট্যাবে সেট আপ করতে পারেন।
মনে রাখবেন যে এই পৃষ্ঠায় অনেকগুলি পরিসংখ্যানের প্রতিবেদন বিশ্লেষণ ডেটা ব্যাচিংয়ের কারণে 24 ঘন্টা পর্যন্ত বিলম্বের সাপেক্ষে।
বার্তা বিতরণ রিপোর্ট
Firebase কনসোলের প্রতিবেদন ট্যাবে, আপনি অ্যান্ড্রয়েড বা অ্যাপল প্ল্যাটফর্ম এফসিএম এসডিকে প্রেরিত বার্তাগুলির জন্য নিম্নলিখিত ডেটা দেখতে পারেন, সহ বিজ্ঞপ্তিগুলি সুরকার এবং এফসিএম এপিআইগুলির মাধ্যমে প্রেরিত:
- প্রেরণ-ডেটা বার্তা বা বিজ্ঞপ্তি বার্তাটি প্রসবের জন্য কার্যকর করা হয়েছে বা প্রসবের জন্য এপিএনএসের মতো তৃতীয় পক্ষের পরিষেবাতে সফলভাবে পাস করা হয়েছে। আরও তথ্যের জন্য একটি বার্তার আজীবন দেখুন।
- প্রাপ্ত (কেবলমাত্র অ্যান্ড্রয়েড ডিভাইসে উপলব্ধ) - অ্যাপ্লিকেশন দ্বারা ডেটা বার্তা বা বিজ্ঞপ্তি বার্তা প্রাপ্ত হয়েছে। প্রাপ্তি অ্যান্ড্রয়েড ডিভাইসে FCM এসডিকে 18.0.1 বা উচ্চতর ইনস্টল করা হলে এই ডেটা উপলব্ধ।
- ইমপ্রেশনগুলি (কেবলমাত্র অ্যান্ড্রয়েড ডিভাইসে বিজ্ঞপ্তি বার্তাগুলির জন্য উপলব্ধ) - অ্যাপ্লিকেশনটি পটভূমিতে থাকাকালীন ডিভাইসে ডিসপ্লে বিজ্ঞপ্তি প্রদর্শিত হয়েছে।
- খোলে - ব্যবহারকারী বিজ্ঞপ্তি বার্তাটি খুললেন। অ্যাপটি পটভূমিতে থাকলে কেবলমাত্র বিজ্ঞপ্তিগুলির জন্য রিপোর্ট করা হয়েছে।
এই ডেটা একটি বিজ্ঞপ্তি পে -লোড এবং সমস্ত লেবেলযুক্ত ডেটা বার্তা সহ সমস্ত বার্তাগুলির জন্য উপলব্ধ। লেবেল সম্পর্কে আরও জানতে, বার্তাগুলিতে বিশ্লেষণ লেবেল যুক্ত করা দেখুন।
বার্তা প্রতিবেদনগুলি দেখার সময়, আপনি সিএসভিতে রফতানির বিকল্প সহ প্রদর্শিত ডেটার জন্য একটি তারিখের পরিসর সেট করতে পারেন। আপনি এই মানদণ্ড দ্বারা ফিল্টার করতে পারেন:
- প্ল্যাটফর্ম (আইওএস বা অ্যান্ড্রয়েড)
- অ্যাপ
- কাস্টম অ্যানালিটিক্স লেবেল
বার্তাগুলিতে অ্যানালিটিক্স লেবেল যুক্ত করা হচ্ছে
লেবেলিং বার্তাগুলি কাস্টম বিশ্লেষণের জন্য খুব দরকারী, আপনাকে লেবেল বা লেবেলের সেট দ্বারা বিতরণ পরিসংখ্যান ফিল্টার করার অনুমতি দেয়। আপনি fcmOptions.analyticsLabel
ক্ষেত্রটি বার্তা অবজেক্টে, বা প্ল্যাটফর্ম-নির্দিষ্ট AndroidFcmOptions
বা ApnsFcmOptions
ক্ষেত্রগুলিতে সেট করে HTTP ভি 1 এপিআইয়ের মাধ্যমে প্রেরিত যে কোনও বার্তায় একটি লেবেল যুক্ত করতে পারেন।
অ্যানালিটিক্স লেবেলগুলি ফর্ম্যাট ^[a-zA-Z0-9-_.~%]{1,50}$
ফর্ম্যাটে পাঠ্য স্ট্রিং $ লেবেলগুলিতে নিম্ন এবং উচ্চতর কেস অক্ষর, সংখ্যা এবং নিম্নলিখিত চিহ্নগুলি অন্তর্ভুক্ত থাকতে পারে:
-
-
-
~
-
%
সর্বোচ্চ দৈর্ঘ্য 50 টি অক্ষর। আপনি প্রতিদিন 100 টি অনন্য লেবেল নির্দিষ্ট করতে পারেন; এই সীমা ছাড়িয়ে যুক্ত লেবেলযুক্ত বার্তাগুলি রিপোর্ট করা হয় না।
Firebase কনসোল মেসেজিং রিপোর্টস ট্যাবে, আপনি সমস্ত বিদ্যমান লেবেলের একটি তালিকা অনুসন্ধান করতে পারেন এবং সেগুলি এককভাবে প্রয়োগ করতে পারেন বা প্রদর্শিত পরিসংখ্যানগুলি ফিল্টার করতে সংমিশ্রণে।
FCM ডেটা এপিআইয়ের মাধ্যমে একত্রিত ডেলিভারি ডেটা
ফায়ারবেস ক্লাউড মেসেজিং ডেটা এপিআই আপনাকে এমন তথ্য পুনরুদ্ধার করতে দেয় যা আপনাকে অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলিতে লক্ষ্যযুক্ত বার্তার অনুরোধগুলির ফলাফলগুলি বুঝতে সহায়তা করতে পারে। এপিআই একটি প্রকল্পের সমস্ত ডেটা সংগ্রহ-সক্ষম অ্যান্ড্রয়েড ডিভাইসগুলিতে একত্রিত ডেটা সরবরাহ করে। এর মধ্যে দেরি না করে বিতরণ করা বার্তাগুলির শতাংশের পাশাপাশি অ্যান্ড্রয়েড পরিবহন স্তরের মধ্যে কতগুলি বার্তা বিলম্বিত বা বাদ দেওয়া হয়েছিল সে সম্পর্কে বিশদ অন্তর্ভুক্ত রয়েছে। এই ডেটা মূল্যায়ন করা বার্তা বিতরণে বিস্তৃত প্রবণতা প্রকাশ করতে পারে এবং আপনার প্রেরণের অনুরোধগুলির কার্যকারিতা উন্নত করার কার্যকর উপায়গুলি খুঁজে পেতে আপনাকে সহায়তা করতে পারে। প্রতিবেদনে তারিখের রেঞ্জের প্রাপ্যতার তথ্যের জন্য সামগ্রিক ডেটা টাইমলাইনগুলি দেখুন।
এপিআই প্রদত্ত অ্যাপ্লিকেশনটির জন্য উপলব্ধ সমস্ত ডেটা সরবরাহ করে। এপিআই রেফারেন্স ডকুমেন্টেশন দেখুন।
কীভাবে ডেটা ভেঙে যায়?
ডেলিভারি ডেটা অ্যাপ্লিকেশন, তারিখ এবং বিশ্লেষণ লেবেল দ্বারা ভেঙে দেওয়া হয়। এপিআই -তে একটি কল তারিখ, অ্যাপ্লিকেশন এবং বিশ্লেষণ লেবেলের প্রতিটি সংমিশ্রণের জন্য ডেটা ফেরত দেবে। উদাহরণস্বরূপ, একটি একক androidDeliveryData
জসন অবজেক্টটি এর মতো দেখতে হবে:
{
"appId": "1:23456789:android:a93a5mb1234efe56",
"date": {
"year": 2021,
"month": 1,
"day": 1
},
"analyticsLabel": "foo",
"data": {
"countMessagesAccepted": "314159",
"messageOutcomePercents": {
"delivered": 71,
"pending": 15
},
"deliveryPerformancePercents": {
"deliveredNoDelay": 45,
"delayedDeviceOffline": 11
}
}
মেট্রিকগুলি কীভাবে ব্যাখ্যা করবেন
ডেলিভারি ডেটা নিম্নলিখিত প্রতিটি মেট্রিকের সাথে খাপ খায় এমন বার্তাগুলির শতাংশের রূপরেখা দেয়। এটা সম্ভব যে একটি একক বার্তা একাধিক মেট্রিকের সাথে খাপ খায়। আমরা কীভাবে ডেটা সংগ্রহ করি এবং গ্রানুলারিটির স্তরটি কীভাবে আমরা মেট্রিকগুলিকে একত্রিত করেছিলাম তার সীমাবদ্ধতার কারণে, কিছু বার্তার ফলাফলগুলি মেট্রিকগুলিতে মোটেই প্রতিনিধিত্ব করা হয় না, সুতরাং নীচের শতাংশের পরিমাণ 100%এ যোগ হবে না।
গণনা বার্তা গৃহীত
ডেটাসেটে অন্তর্ভুক্ত একমাত্র গণনা হ'ল অ্যান্ড্রয়েড ডিভাইসগুলিতে সরবরাহের জন্য এফসিএম দ্বারা গৃহীত বার্তাগুলির গণনা। সমস্ত শতাংশ এই মানটিকে ডিনোমিনেটর হিসাবে ব্যবহার করে। মনে রাখবেন যে এই গণনাটি তাদের ডিভাইসগুলিতে ব্যবহার এবং ডায়াগনস্টিক তথ্য সংগ্রহ অক্ষম করে এমন ব্যবহারকারীদের লক্ষ্যযুক্ত বার্তাগুলি অন্তর্ভুক্ত করবে না।
বার্তা ফলাফল শতাংশ
MessageOutcomePercents
অবজেক্টে অন্তর্ভুক্ত ক্ষেত্রগুলি বার্তার অনুরোধগুলির ফলাফলগুলিতে তথ্য সরবরাহ করে। বিভাগগুলি সমস্ত পারস্পরিক একচেটিয়া। এটি "আমার বার্তাগুলি সরবরাহ করা হচ্ছে?" এর মতো প্রশ্নের উত্তর দিতে পারে? এবং "বার্তাগুলি কী বাদ দিচ্ছে?"
উদাহরণস্বরূপ, droppedTooManyPendingMessages
ক্ষেত্রের জন্য একটি উচ্চ মান ইঙ্গিত দিতে পারে যে অ্যাপ্লিকেশন দৃষ্টান্তগুলি FCM 100 মুলতুবি বার্তাগুলির সীমা ছাড়িয়ে অ-সংঘর্ষযোগ্য বার্তাগুলির পরিমাণ গ্রহণ করছে। এটি প্রশমিত করার জন্য, আপনার অ্যাপ্লিকেশনটি onDeletedMessages
কলগুলি পরিচালনা করে তা নিশ্চিত করুন এবং সংযোগযোগ্য বার্তাগুলি প্রেরণের বিষয়টি বিবেচনা করুন। একইভাবে, droppedDeviceInactive
জন্য উচ্চ শতাংশ আপনার সার্ভারে নিবন্ধকরণ টোকেন আপডেট করার সংকেত হতে পারে, বাসি টোকেনগুলি অপসারণ এবং বিষয়গুলি থেকে সাবস্ক্রাইব করার জন্য। এই অঞ্চলে সেরা অনুশীলনের জন্য FCM নিবন্ধকরণ টোকেনগুলি পরিচালনা করুন দেখুন।
ডেলিভারি পারফরম্যান্স পার্সেন্টস
DeliveryPerformancePercents
অবজেক্টের ক্ষেত্রগুলি সফলভাবে বিতরণ করা বার্তাগুলি সম্পর্কে তথ্য সরবরাহ করে। এটি "আমার বার্তাগুলি কি বিলম্বিত হয়েছিল?" এর মতো প্রশ্নের উত্তর দিতে পারে? এবং "বার্তাগুলি কেন বিলম্বিত হয়?" উদাহরণস্বরূপ, delayedMessageThrottled
জন্য একটি উচ্চ মান স্পষ্টভাবে ইঙ্গিত করবে যে আপনি প্রতি-ডিভাইস সর্বাধিক সীমা ছাড়িয়ে যাচ্ছেন এবং আপনি যে হারগুলিতে বার্তা প্রেরণ করছেন তা সামঞ্জস্য করা উচিত।
বার্তা অন্তর্দৃষ্টি শতাংশ
এই অবজেক্টটি সমস্ত বার্তা প্রেরণ সম্পর্কে অতিরিক্ত তথ্য সরবরাহ করে। priorityLowered
ক্ষেত্রটি স্বীকৃত বার্তাগুলির শতাংশ প্রকাশ করে যা অগ্রাধিকার ছিল HIGH
থেকে NORMAL
দিকে কমিয়ে দেয়। যদি এই মানটি বেশি হয় তবে কম উচ্চ অগ্রাধিকার বার্তা প্রেরণের চেষ্টা করুন বা উচ্চ অগ্রাধিকার বার্তা প্রেরণ করা হলে আপনি সর্বদা একটি বিজ্ঞপ্তি প্রদর্শন করেন তা নিশ্চিত করুন। আরও তথ্যের জন্য বার্তা অগ্রাধিকারে আমাদের ডকুমেন্টেশন দেখুন
এই ডেটা কীভাবে বিগকোয়ারিতে রফতানি করা ডেটা থেকে পৃথক হয়?
বিগকুয়ারি রফতানি ডিভাইসে এসডিকে ( এফসিএম আর্কিটেকচারের 2 এবং 4 ধাপ) দ্বারা এফসিএম ব্যাকএন্ড এবং বার্তা বিতরণ দ্বারা বার্তা গ্রহণযোগ্যতা সম্পর্কে পৃথক বার্তা লগ সরবরাহ করে। পৃথক বার্তাগুলি গ্রহণ এবং বিতরণ করা হয়েছে তা নিশ্চিত করার জন্য এই ডেটা দরকারী। পরবর্তী বিভাগে বিগকোয়ারি ডেটা রফতানি সম্পর্কে আরও পড়ুন।
বিপরীতে, ফায়ারবেস ক্লাউড মেসেজিং ডেটা এপিআই অ্যান্ড্রয়েড ট্রান্সপোর্ট লেয়ারে (বা এফসিএম আর্কিটেকচারের 3 ধাপ 3) বিশেষত কী ঘটে সে সম্পর্কে একত্রিত বিশদ সরবরাহ করে। এই ডেটা বিশেষত অ্যান্ড্রয়েড এসডিকে এফসিএম ব্যাকেন্ড থেকে বার্তা সরবরাহের অন্তর্দৃষ্টি সরবরাহ করে। এই পরিবহণের সময় বার্তাগুলি কেন বিলম্বিত বা বাদ দেওয়া হয়েছিল সে সম্পর্কে প্রবণতাগুলি দেখানোর জন্য এটি বিশেষভাবে কার্যকর।
কিছু ক্ষেত্রে, এটি সম্ভব যে দুটি ডেটা সেট নিম্নলিখিতগুলির কারণে ঠিক মেলে না:
- একত্রিত মেট্রিকগুলি কেবল সমস্ত বার্তার একটি অংশকে নমুনা করে
- একত্রিত মেট্রিকগুলি বৃত্তাকার হয়
- আমরা কোনও গোপনীয়তার প্রান্তিকের নীচে মেট্রিকগুলি উপস্থাপন করি না
- আমরা কীভাবে ট্র্যাফিকের বিশাল পরিমাণ পরিচালনা করি তার অপ্টিমাইজেশনের কারণে বার্তার ফলাফলের একটি অংশ অনুপস্থিত।
এপিআই এর সীমাবদ্ধতা
সামগ্রিক ডেটা টাইমলাইন
এপিআই 7 দিনের historical তিহাসিক তথ্য ফিরিয়ে দেবে; তবে এই এপিআই দ্বারা ফিরে আসা ডেটা 5 দিন পর্যন্ত বিলম্বিত হবে। উদাহরণস্বরূপ, 20 শে জানুয়ারী, 9 ই জানুয়ারী - 15 ই জানুয়ারির ডেটা উপলব্ধ থাকবে, তবে 16 ই জানুয়ারী বা তার পরে নয়। অতিরিক্তভাবে, ডেটা সর্বোত্তম প্রচেষ্টা সরবরাহ করা হয়। কোনও ডেটা বিভ্রাটের ক্ষেত্রে, এফসিএম এগিয়ে যাওয়ার জন্য কাজ করবে এবং সমস্যাটি স্থির হওয়ার পরে ডেটা ব্যাকফিল করবে না। বৃহত্তর বিভ্রাটগুলিতে, ডেটা এক সপ্তাহ বা তারও বেশি সময় অনুপলব্ধ হতে পারে।
ডেটা কভারেজ
ফায়ারবেস ক্লাউড মেসেজিং ডেটা এপিআই দ্বারা সরবরাহিত মেট্রিকগুলি বার্তা সরবরাহের বিস্তৃত প্রবণতাগুলির অন্তর্দৃষ্টি সরবরাহ করার জন্য। তবে তারা সমস্ত বার্তার দৃশ্যের 100% কভারেজ সরবরাহ করে না। নিম্নলিখিত পরিস্থিতিগুলি মেট্রিকগুলিতে প্রতিফলিত হয় না এমন ফলাফলগুলি জানা যায়।
মেয়াদোত্তীর্ণ বার্তা
প্রদত্ত লগের তারিখ শেষ হওয়ার পরে যদি লাইভের সময় (টিটিএল) মেয়াদ শেষ হয় তবে বার্তাটি এই তারিখে droppedTtlExpired
হিসাবে গণনা করা হবে না।
নিষ্ক্রিয় ডিভাইসগুলিতে বার্তা
নিষ্ক্রিয় ডিভাইসগুলিতে প্রেরিত বার্তাগুলি তারা কোন ডেটা পাথ গ্রহণ করে তার উপর নির্ভর করে ডেটাসেটে প্রদর্শিত হতে পারে বা নাও পারে। এটি droppedDeviceInactive
এবং pending
ক্ষেত্রগুলিতে কিছু ভুল ধারণা নিয়ে যেতে পারে।
নির্দিষ্ট ব্যবহারকারীর পছন্দগুলি সহ ডিভাইসে বার্তা
যে ব্যবহারকারীরা তাদের ডিভাইসগুলিতে ব্যবহার এবং ডায়াগনস্টিক তথ্য সংগ্রহকে অক্ষম করেছেন তাদের পছন্দগুলি বজায় রেখে আমাদের গণনাগুলিতে তাদের বার্তা অন্তর্ভুক্ত থাকবে না।
বৃত্তাকার এবং ন্যূনতম
এফসিএম ইচ্ছাকৃতভাবে গোল করে এবং এমন গণনাগুলি বাদ দেয় যেখানে ভলিউমগুলি যথেষ্ট বড় নয়।
বিগকুয়ারি ডেটা রফতানি
আরও বিশ্লেষণের জন্য আপনি আপনার বার্তার ডেটা বিগকোয়ারিতে রফতানি করতে পারেন। বিগকুয়ারি আপনাকে বিগকিউরি এসকিউএল ব্যবহার করে ডেটা বিশ্লেষণ করতে, এটি অন্য ক্লাউড সরবরাহকারীর কাছে রফতানি করতে বা আপনার কাস্টম এমএল মডেলগুলির জন্য ডেটা ব্যবহার করতে দেয়। বিগকোয়ারিতে একটি রফতানিতে বার্তাগুলির জন্য বা বার্তাটি এপিআই বা বিজ্ঞপ্তি সুরকারের মাধ্যমে প্রেরণ করা হয়েছে কিনা তা বিবেচনা করে বার্তাগুলির জন্য সমস্ত উপলভ্য ডেটা অন্তর্ভুক্ত রয়েছে।
নিম্নলিখিত FCM এসডিকে ন্যূনতম সংস্করণ সহ ডিভাইসে প্রেরিত বার্তাগুলির জন্য, আপনার অ্যাপ্লিকেশনটির জন্য বার্তা বিতরণ ডেটা রফতানি সক্ষম করার জন্য আপনার কাছে অতিরিক্ত বিকল্প রয়েছে:
- অ্যান্ড্রয়েড 20.1.0 বা উচ্চতর।
- আইওএস 8.6.0 বা উচ্চতর
- ফায়ারবেস ওয়েব এসডিকে 9.0.0 বা তার বেশি
অ্যান্ড্রয়েড এবং আইওএসের জন্য ডেটা রফতানি সক্ষম করার বিশদগুলির জন্য নীচে দেখুন।
শুরু করতে, আপনার প্রকল্পটি বিগকোয়ারিতে লিঙ্ক করুন:
নিম্নলিখিত বিকল্পগুলির মধ্যে একটি চয়ন করুন:
বিজ্ঞপ্তি সুরকারটি খুলুন, তারপরে পৃষ্ঠার নীচে অ্যাক্সেস বিগকোয়ারিতে ক্লিক করুন।
Firebase কনসোলে ইন্টিগ্রেশনস পৃষ্ঠা থেকে, বিগকুয়ারি কার্ডে লিঙ্কটি ক্লিক করুন।
এই পৃষ্ঠাটি প্রকল্পের সমস্ত FCM -সক্ষম অ্যাপ্লিকেশনগুলির জন্য FCM রফতানি বিকল্পগুলি প্রদর্শন করে।
বিগকিউরি সক্ষম করতে অন-স্ক্রিন নির্দেশাবলী অনুসরণ করুন।
আরও তথ্যের জন্য লিংক ফায়ারবেসকে বিগকোয়ারিতে দেখুন।
আপনি যখন Cloud Messaging জন্য BigQuery রফতানি সক্ষম করবেন:
ফায়ারবেস আপনার ডেটা BigQuery রফতানি করে। নোট করুন যে রফতানির জন্য ডেটা প্রাথমিক প্রচার সম্পূর্ণ হতে 48 ঘন্টা সময় নিতে পারে।
- আপনি গত 30 দিন পর্যন্ত ম্যানুয়ালি ডেটা ব্যাকফিলগুলি নির্ধারণ করতে পারেন।
ডেটাসেট তৈরি হওয়ার পরে, অবস্থান পরিবর্তন করা যাবে না, তবে আপনি ডেটাসেটটিকে একটি ভিন্ন অবস্থানে অনুলিপি করতে পারেন বা ম্যানুয়ালি একটি ভিন্ন অবস্থানে ডেটাসেটটি সরাতে (পুনরায় তৈরি) করতে পারেন৷ আরও জানতে, ডেটাসেটের অবস্থান পরিবর্তন করুন দেখুন।
ফায়ারবেস আপনার ফায়ারবেস প্রকল্প থেকে BigQuery আপনার ডেটাগুলির নিয়মিত সিঙ্কগুলি সেট আপ করে। এই দৈনিক রফতানি অপারেশনগুলি প্যাসিফিক সময় সকাল 4:00 টায় শুরু হয় এবং সাধারণত 24 ঘন্টার মধ্যে শেষ হয়।
ডিফল্টরূপে, আপনার প্রকল্পের সমস্ত অ্যাপ্লিকেশনগুলি BigQuery সাথে লিঙ্কযুক্ত এবং আপনি পরে প্রকল্পে যুক্ত হওয়া যে কোনও অ্যাপ্লিকেশনগুলি স্বয়ংক্রিয়ভাবে BigQuery সাথে লিঙ্কযুক্ত। কোন অ্যাপগুলি ডেটা পাঠায় তা আপনি পরিচালনা করতে পারেন৷
BigQuery রফতানি নিষ্ক্রিয় করতে, Firebase কনসোলে আপনার প্রকল্পটি লিঙ্ক করুন ।
বার্তা বিতরণ ডেটা রফতানি সক্ষম করুন
FCM এসডিকে 20.1.0 বা উচ্চতর সহ অ্যান্ড্রয়েড ডিভাইসগুলি তাদের অ্যাপ্লিকেশনটির বার্তা বিতরণ ডেটা রফতানি সক্ষম করতে পারে। অ্যাপ্লিকেশন স্তরে ডিফল্টরূপে ডেটা রফতানি অক্ষম করা হয়। অ্যাপ্লিকেশন উদাহরণ স্তরে প্রোগ্রামিকভাবে এটি সক্ষম করা আপনাকে শেষ ব্যবহারকারীদের তাদের বার্তা সরবরাহের ডেটা বিশ্লেষণ করার অনুমতি চাইতে দেয় (প্রস্তাবিত)। উভয় যেখানে সেট করা আছে, অ্যাপ উদাহরণ স্তরের মান অ্যাপ স্তরের মানকে ওভাররাইড করে।
এই বিকল্পগুলি সক্ষম করার আগে, আপনাকে প্রথমে বিগকুয়ারি ডেটা রফতানিতে বর্ণিত হিসাবে আপনার প্রকল্পের জন্য FCM -বিবিকিউয়ের লিঙ্কটি তৈরি করতে হবে।
অ্যাপ্লিকেশন উদাহরণগুলির জন্য বিতরণ ডেটা রফতানি সক্ষম করুন
বেশিরভাগ ক্ষেত্রে, আমরা আপনাকে সুপারিশ করি যে আপনি কেবল অ্যাপ্লিকেশন উদাহরণ স্তরে বার্তা বিতরণ ডেটা রফতানি সক্ষম করুন এবং এটি অ্যাপ্লিকেশন স্তরে অক্ষম রেখে দিন।
FirebaseMessaging.getInstance().setDeliveryMetricsExportToBigQuery(true)
একটি অ্যাপের জন্য ডেলিভারি ডেটা রফতানি সক্ষম করুন
আপনি যদি অ্যাপ্লিকেশন স্তরে রফতানি সক্ষম করতে পছন্দ করেন তবে setDeliveryMetricsExportToBigQuery
পদ্ধতিতে কল না করার বিষয়টি নিশ্চিত করুন এবং আপনার অ্যাপ্লিকেশনটির ম্যানিফেস্টে অ্যাপ্লিকেশন অবজেক্টে নিম্নলিখিত সম্পত্তি যুক্ত করুন:
<application>
<meta-data android:name="delivery_metrics_exported_to_big_query_enabled"
android:value="true" />
</application>
বিগকোয়ারিতে কোন ডেটা রফতানি করা হয়?
নোট করুন যে বাসি টোকেন বা নিষ্ক্রিয় নিবন্ধগুলি লক্ষ্য করে এই পরিসংখ্যানগুলির কয়েকটি স্ফীত করতে পারে।
রফতানি টেবিলের স্কিমা হ'ল:
_ পার্টিশনটাইম | টাইমস্ট্যাম্প | এই সিউডো কলামে দিনের শুরু হওয়ার জন্য একটি টাইমস্ট্যাম্প রয়েছে (ইউটিসি -তে) যেখানে ডেটা লোড করা হয়েছিল। Yyyymmdd পার্টিশনের জন্য, এই সিউডো কলামে মান টাইমস্ট্যাম্প ('yyyy-mm-dd') রয়েছে। |
ইভেন্ট_টাইমস্ট্যাম্প | টাইমস্ট্যাম্প | সার্ভার দ্বারা রেকর্ড হিসাবে ইভেন্ট টাইমস্ট্যাম্প |
প্রকল্প_ সংখ্যা | পূর্ণসংখ্যা | প্রকল্প নম্বরটি প্রকল্পটি সনাক্ত করে যা বার্তা প্রেরণ করেছে |
বার্তা_আইডি | STRING | বার্তা আইডি একটি বার্তা সনাক্ত করে। অ্যাপ্লিকেশন আইডি এবং টাইমস্ট্যাম্প থেকে উত্পন্ন, বার্তা আইডি কিছু ক্ষেত্রে বিশ্বব্যাপী অনন্য হতে পারে না। |
instance_id | STRING | অ্যাপ্লিকেশনটির অনন্য আইডি বার্তাটি প্রেরণ করা হয় (যখন উপলব্ধ)। এটি কোনও উদাহরণ আইডি বা Firebase ইনস্টলেশন আইডি হতে পারে। |
বার্তা_ টাইপ | STRING | বার্তার ধরণ। বিজ্ঞপ্তি বার্তা বা ডেটা বার্তা হতে পারে। বিষয় কোনও বিষয় বা প্রচার প্রেরণের জন্য মূল বার্তাটি সনাক্ত করতে ব্যবহৃত হয়; পরবর্তী বার্তাগুলি হয় একটি বিজ্ঞপ্তি বা ডেটা বার্তা। |
sdk_platform | STRING | প্রাপক অ্যাপের প্ল্যাটফর্ম |
app_name | STRING | অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলির জন্য প্যাকেজের নাম বা আইওএস অ্যাপ্লিকেশনগুলির জন্য বান্ডিল আইডি |
CALAPSE_KEY | STRING | ধসের কীটি এমন একদল বার্তা চিহ্নিত করে যা ধসে পড়তে পারে। যখন কোনও ডিভাইস সংযুক্ত না থাকে, কেবলমাত্র প্রদত্ত ধসের কী সহ শেষ বার্তাটি চূড়ান্ত বিতরণের জন্য সারি করা হয় |
অগ্রাধিকার | পূর্ণসংখ্যা | বার্তার অগ্রাধিকার। বৈধ মানগুলি "সাধারণ" এবং "উচ্চ"। আইওএস -এ, এগুলি এপিএনএস অগ্রাধিকার 5 এবং 10 এর সাথে মিলে যায় |
ttl | পূর্ণসংখ্যা | এই প্যারামিটারটি নির্দিষ্ট করে দেয় যে ডিভাইসটি অফলাইনে থাকলে বার্তাটি এফসিএম স্টোরেজে রাখা উচিত |
বিষয় | STRING | যে বিষয়টিতে একটি বার্তা প্রেরণ করা হয়েছিল তার নাম (যখন প্রযোজ্য) |
বাল্ক_আইডি | পূর্ণসংখ্যা | বাল্ক আইডি সম্পর্কিত বার্তাগুলির একটি গ্রুপকে চিহ্নিত করে, যেমন কোনও বিষয়ে নির্দিষ্ট পাঠানো |
ঘটনা | STRING | অনুষ্ঠানের ধরন। সম্ভাব্য মান হল:
|
বিশ্লেষণ_লাবেল | STRING | এইচটিটিপি ভি 1 এপিআইয়ের সাথে, বিশ্লেষণের উদ্দেশ্যে বার্তাটি চিহ্নিত করার জন্য বার্তাটি প্রেরণের সময় বিশ্লেষণ লেবেল সেট করা যেতে পারে |
রফতানি করা ডেটা দিয়ে আপনি কী করতে পারেন?
নিম্নলিখিত বিভাগগুলি আপনার রফতানি FCM ডেটার বিপরীতে বিগকোয়ারিতে চালাতে পারেন এমন প্রশ্নের উদাহরণগুলি সরবরাহ করে।
অ্যাপ্লিকেশন দ্বারা প্রেরিত বার্তা গণনা
SELECT app_name, COUNT(1)
FROM `project ID.firebase_messaging.data`
WHERE
_PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD')
AND event = 'MESSAGE_ACCEPTED'
AND message_id != ''
GROUP BY 1;
বার্তা দ্বারা লক্ষ্যযুক্ত অনন্য অ্যাপ্লিকেশন উদাহরণ গণনা করুন
SELECT COUNT(DISTINCT instance_id)
FROM `project ID.firebase_messaging.data`
WHERE
_PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD')
AND event = 'MESSAGE_ACCEPTED';
গণনা বিজ্ঞপ্তি বার্তা প্রেরণ
SELECT COUNT(1)
FROM `project ID.firebase_messaging.data`
WHERE
_PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD')
AND event = 'MESSAGE_ACCEPTED'
AND message_type = 'DISPLAY_NOTIFICATION';
ডেটা বার্তা প্রেরণ গণনা করুন
SELECT COUNT(1)
FROM `project ID.firebase_messaging.data`
WHERE
_PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD')
AND event = 'MESSAGE_ACCEPTED'
AND message_type = 'DATA_MESSAGE';
কোনও বিষয় বা প্রচারে প্রেরিত বার্তা গণনা করুন
SELECT COUNT(1)
FROM `project ID.firebase_messaging.data`
WHERE
_PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD')
AND event = 'MESSAGE_ACCEPTED'
AND bulk_id = your bulk id AND message_id != '';
নির্দিষ্ট বিষয়ে প্রেরিত কোনও বার্তার জন্য ইভেন্টগুলি ট্র্যাক করতে, প্রতিস্থাপন AND message_id != ''
এর সাথে AND message_id = <your message id>;
.
প্রদত্ত বিষয় বা প্রচারের জন্য ফ্যানআউট সময়কাল গণনা করুন
ফ্যানআউট শুরুর সময়টি যখন মূল অনুরোধটি প্রাপ্ত হয় এবং শেষ সময়টি হ'ল শেষ সময়টি একক উদাহরণকে লক্ষ্য করে শেষ স্বতন্ত্র বার্তা তৈরি করা হয়।
SELECT TIMESTAMP_DIFF( end_timestamp, start_timestamp, MILLISECOND ) AS fanout_duration_ms, end_timestamp, start_timestamp FROM ( SELECT MAX(event_timestamp) AS end_timestamp FROM `project ID.firebase_messaging.data` WHERE _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD') AND event = 'MESSAGE_ACCEPTED' AND bulk_id = your bulk id ) sent CROSS JOIN ( SELECT event_timestamp AS start_timestamp FROM `project ID.firebase_messaging.data` WHERE _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD') AND event = 'MESSAGE_ACCEPTED' AND bulk_id = your bulk id AND message_type = 'TOPIC' ) initial_message;
বিতরণ করা বার্তাগুলির শতাংশ গণনা করুন
SELECT messages_sent, messages_delivered, messages_delivered / messages_sent * 100 AS percent_delivered FROM ( SELECT COUNT(DISTINCT CONCAT(message_id, instance_id)) AS messages_sent FROM `project ID.firebase_messaging.data` WHERE _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD') AND event = 'MESSAGE_ACCEPTED' ) sent CROSS JOIN ( SELECT COUNT(DISTINCT CONCAT(message_id, instance_id)) AS messages_delivered FROM `project ID.firebase_messaging.data` WHERE _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD') AND (event = 'MESSAGE_DELIVERED' AND message_id IN ( SELECT message_id FROM `project ID.firebase_messaging.data` WHERE _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD') AND event = 'MESSAGE_ACCEPTED' GROUP BY 1 ) ) delivered;
প্রদত্ত বার্তা আইডি এবং উদাহরণ আইডির জন্য সমস্ত ইভেন্ট ট্র্যাক করুন
SELECT *
FROM `project ID.firebase_messaging.data`
WHERE
_PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD')
AND message_id = 'your message id'
AND instance_id = 'your instance id'
ORDER BY event_timestamp;
প্রদত্ত বার্তা আইডি এবং উদাহরণ আইডির জন্য গণনা বিলম্ব
SELECT TIMESTAMP_DIFF( MAX(delivered_time), MIN(accepted_time), MILLISECOND ) AS latency_ms FROM ( SELECT event_timestamp AS accepted_time FROM `project ID.firebase_messaging.data` WHERE _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD') AND message_id = 'your message id' AND instance_id = 'your instance id' AND event = 'MESSAGE_ACCEPTED' ) sent CROSS JOIN ( SELECT event_timestamp AS delivered_time FROM `project ID.firebase_messaging.data` WHERE _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD') AND message_id = 'your message id' AND instance_id = 'your instance id' AND (event = 'MESSAGE_DELIVERED' ) delivered;
চলমান বার্তা বিতরণ ব্যর্থতার সমস্যা সমাধানের জন্য, এফসিএম ট্রাবলশুটারটি ব্যবহার করুন এবং আপনি আপনার বার্তাটি কেন না দেখতে পারেন তার বিভিন্ন কারণ বুঝতে এই ব্লগ পোস্টটি দেখুন। এফসিএমকে প্রভাবিত করে এমন কোনও চলমান পরিষেবা বাধা রয়েছে কিনা তা সনাক্ত করতে আপনি এফসিএম স্ট্যাটাস ড্যাশবোর্ডও দেখতে পারেন।
বার্তাপ্রেরণ সাফল্য এবং কৌশলটির বিস্তৃত মূল্যায়নের অন্তর্দৃষ্টি পেতে আপনাকে সহায়তা করার জন্য এফসিএম তিনটি সেট সরঞ্জাম সরবরাহ করে:
- Firebase কনসোল বার্তা বিতরণ প্রতিবেদন
- Firebase Cloud Messaging ডেটা এপিআই থেকে একত্রিত অ্যান্ড্রয়েড এসডিকে ডেলিভারি মেট্রিকগুলি
- গুগল বিগকোয়ারিতে বিস্তৃত ডেটা রফতানি
এই পৃষ্ঠায় বর্ণিত প্রতিবেদনের সরঞ্জামগুলির জন্য সমস্ত কাজ করার জন্য Google Analytics প্রয়োজন। যদি আপনার প্রকল্পের জন্য Google Analytics সক্ষম না করা হয় তবে আপনি এটি আপনার ফায়ারবেস প্রকল্প সেটিংসের ইন্টিগ্রেশনস ট্যাবে সেট আপ করতে পারেন।
মনে রাখবেন যে এই পৃষ্ঠায় অনেকগুলি পরিসংখ্যানের প্রতিবেদন বিশ্লেষণ ডেটা ব্যাচিংয়ের কারণে 24 ঘন্টা পর্যন্ত বিলম্বের সাপেক্ষে।
বার্তা বিতরণ রিপোর্ট
Firebase কনসোলের প্রতিবেদন ট্যাবে, আপনি অ্যান্ড্রয়েড বা অ্যাপল প্ল্যাটফর্ম এফসিএম এসডিকে প্রেরিত বার্তাগুলির জন্য নিম্নলিখিত ডেটা দেখতে পারেন, সহ বিজ্ঞপ্তিগুলি সুরকার এবং এফসিএম এপিআইগুলির মাধ্যমে প্রেরিত:
- প্রেরণ-ডেটা বার্তা বা বিজ্ঞপ্তি বার্তাটি প্রসবের জন্য কার্যকর করা হয়েছে বা প্রসবের জন্য এপিএনএসের মতো তৃতীয় পক্ষের পরিষেবাতে সফলভাবে পাস করা হয়েছে। আরও তথ্যের জন্য একটি বার্তার আজীবন দেখুন।
- প্রাপ্ত (কেবলমাত্র অ্যান্ড্রয়েড ডিভাইসে উপলব্ধ) - অ্যাপ্লিকেশন দ্বারা ডেটা বার্তা বা বিজ্ঞপ্তি বার্তা প্রাপ্ত হয়েছে। প্রাপ্তি অ্যান্ড্রয়েড ডিভাইসে FCM এসডিকে 18.0.1 বা উচ্চতর ইনস্টল করা হলে এই ডেটা উপলব্ধ।
- ইমপ্রেশনগুলি (কেবলমাত্র অ্যান্ড্রয়েড ডিভাইসে বিজ্ঞপ্তি বার্তাগুলির জন্য উপলব্ধ) - অ্যাপ্লিকেশনটি পটভূমিতে থাকাকালীন ডিভাইসে ডিসপ্লে বিজ্ঞপ্তি প্রদর্শিত হয়েছে।
- খোলে - ব্যবহারকারী বিজ্ঞপ্তি বার্তাটি খুললেন। অ্যাপটি পটভূমিতে থাকলে কেবলমাত্র বিজ্ঞপ্তিগুলির জন্য রিপোর্ট করা হয়েছে।
এই ডেটা একটি বিজ্ঞপ্তি পে -লোড এবং সমস্ত লেবেলযুক্ত ডেটা বার্তা সহ সমস্ত বার্তাগুলির জন্য উপলব্ধ। লেবেল সম্পর্কে আরও জানতে, বার্তাগুলিতে বিশ্লেষণ লেবেল যুক্ত করা দেখুন।
বার্তা প্রতিবেদনগুলি দেখার সময়, আপনি সিএসভিতে রফতানির বিকল্প সহ প্রদর্শিত ডেটার জন্য একটি তারিখের পরিসর সেট করতে পারেন। আপনি এই মানদণ্ড দ্বারা ফিল্টার করতে পারেন:
- প্ল্যাটফর্ম (আইওএস বা অ্যান্ড্রয়েড)
- অ্যাপ
- কাস্টম অ্যানালিটিক্স লেবেল
বার্তাগুলিতে অ্যানালিটিক্স লেবেল যুক্ত করা হচ্ছে
লেবেলিং বার্তাগুলি কাস্টম বিশ্লেষণের জন্য খুব দরকারী, আপনাকে লেবেল বা লেবেলের সেট দ্বারা বিতরণ পরিসংখ্যান ফিল্টার করার অনুমতি দেয়। আপনি fcmOptions.analyticsLabel
ক্ষেত্রটি বার্তা অবজেক্টে, বা প্ল্যাটফর্ম-নির্দিষ্ট AndroidFcmOptions
বা ApnsFcmOptions
ক্ষেত্রগুলিতে সেট করে HTTP ভি 1 এপিআইয়ের মাধ্যমে প্রেরিত যে কোনও বার্তায় একটি লেবেল যুক্ত করতে পারেন।
অ্যানালিটিক্স লেবেলগুলি ফর্ম্যাট ^[a-zA-Z0-9-_.~%]{1,50}$
ফর্ম্যাটে পাঠ্য স্ট্রিং $ লেবেলগুলিতে নিম্ন এবং উচ্চতর কেস অক্ষর, সংখ্যা এবং নিম্নলিখিত চিহ্নগুলি অন্তর্ভুক্ত থাকতে পারে:
-
-
-
~
-
%
সর্বোচ্চ দৈর্ঘ্য 50 টি অক্ষর। আপনি প্রতিদিন 100 টি অনন্য লেবেল নির্দিষ্ট করতে পারেন; এই সীমা ছাড়িয়ে যুক্ত লেবেলযুক্ত বার্তাগুলি রিপোর্ট করা হয় না।
Firebase কনসোল মেসেজিং রিপোর্টস ট্যাবে, আপনি সমস্ত বিদ্যমান লেবেলের একটি তালিকা অনুসন্ধান করতে পারেন এবং সেগুলি এককভাবে প্রয়োগ করতে পারেন বা প্রদর্শিত পরিসংখ্যানগুলি ফিল্টার করতে সংমিশ্রণে।
FCM ডেটা এপিআইয়ের মাধ্যমে একত্রিত ডেলিভারি ডেটা
ফায়ারবেস ক্লাউড মেসেজিং ডেটা এপিআই আপনাকে এমন তথ্য পুনরুদ্ধার করতে দেয় যা আপনাকে অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলিতে লক্ষ্যযুক্ত বার্তার অনুরোধগুলির ফলাফলগুলি বুঝতে সহায়তা করতে পারে। এপিআই একটি প্রকল্পের সমস্ত ডেটা সংগ্রহ-সক্ষম অ্যান্ড্রয়েড ডিভাইসগুলিতে একত্রিত ডেটা সরবরাহ করে। এর মধ্যে দেরি না করে বিতরণ করা বার্তাগুলির শতাংশের পাশাপাশি অ্যান্ড্রয়েড পরিবহন স্তরের মধ্যে কতগুলি বার্তা বিলম্বিত বা বাদ দেওয়া হয়েছিল সে সম্পর্কে বিশদ অন্তর্ভুক্ত রয়েছে। এই ডেটা মূল্যায়ন করা বার্তা বিতরণে বিস্তৃত প্রবণতা প্রকাশ করতে পারে এবং আপনার প্রেরণের অনুরোধগুলির কার্যকারিতা উন্নত করার কার্যকর উপায়গুলি খুঁজে পেতে আপনাকে সহায়তা করতে পারে। প্রতিবেদনে তারিখের রেঞ্জের প্রাপ্যতার তথ্যের জন্য সামগ্রিক ডেটা টাইমলাইনগুলি দেখুন।
এপিআই প্রদত্ত অ্যাপ্লিকেশনটির জন্য উপলব্ধ সমস্ত ডেটা সরবরাহ করে। এপিআই রেফারেন্স ডকুমেন্টেশন দেখুন।
কীভাবে ডেটা ভেঙে যায়?
ডেলিভারি ডেটা অ্যাপ্লিকেশন, তারিখ এবং বিশ্লেষণ লেবেল দ্বারা ভেঙে দেওয়া হয়। এপিআই -তে একটি কল তারিখ, অ্যাপ্লিকেশন এবং বিশ্লেষণ লেবেলের প্রতিটি সংমিশ্রণের জন্য ডেটা ফেরত দেবে। উদাহরণস্বরূপ, একটি একক androidDeliveryData
জসন অবজেক্টটি এর মতো দেখতে হবে:
{
"appId": "1:23456789:android:a93a5mb1234efe56",
"date": {
"year": 2021,
"month": 1,
"day": 1
},
"analyticsLabel": "foo",
"data": {
"countMessagesAccepted": "314159",
"messageOutcomePercents": {
"delivered": 71,
"pending": 15
},
"deliveryPerformancePercents": {
"deliveredNoDelay": 45,
"delayedDeviceOffline": 11
}
}
মেট্রিকগুলি কীভাবে ব্যাখ্যা করবেন
ডেলিভারি ডেটা নিম্নলিখিত প্রতিটি মেট্রিকের সাথে খাপ খায় এমন বার্তাগুলির শতাংশের রূপরেখা দেয়। এটা সম্ভব যে একটি একক বার্তা একাধিক মেট্রিকের সাথে খাপ খায়। আমরা কীভাবে ডেটা সংগ্রহ করি এবং গ্রানুলারিটির স্তরটি কীভাবে আমরা মেট্রিকগুলিকে একত্রিত করেছিলাম তার সীমাবদ্ধতার কারণে, কিছু বার্তার ফলাফলগুলি মেট্রিকগুলিতে মোটেই প্রতিনিধিত্ব করা হয় না, সুতরাং নীচের শতাংশের পরিমাণ 100%এ যোগ হবে না।
গণনা বার্তা গৃহীত
ডেটাসেটে অন্তর্ভুক্ত একমাত্র গণনা হ'ল অ্যান্ড্রয়েড ডিভাইসগুলিতে সরবরাহের জন্য এফসিএম দ্বারা গৃহীত বার্তাগুলির গণনা। সমস্ত শতাংশ এই মানটিকে ডিনোমিনেটর হিসাবে ব্যবহার করে। মনে রাখবেন যে এই গণনাটি তাদের ডিভাইসগুলিতে ব্যবহার এবং ডায়াগনস্টিক তথ্য সংগ্রহ অক্ষম করে এমন ব্যবহারকারীদের লক্ষ্যযুক্ত বার্তাগুলি অন্তর্ভুক্ত করবে না।
বার্তা ফলাফল শতাংশ
MessageOutcomePercents
অবজেক্টে অন্তর্ভুক্ত ক্ষেত্রগুলি বার্তার অনুরোধগুলির ফলাফলগুলিতে তথ্য সরবরাহ করে। বিভাগগুলি সমস্ত পারস্পরিক একচেটিয়া। এটি "আমার বার্তাগুলি সরবরাহ করা হচ্ছে?" এর মতো প্রশ্নের উত্তর দিতে পারে? এবং "বার্তাগুলি কী বাদ দিচ্ছে?"
উদাহরণস্বরূপ, droppedTooManyPendingMessages
ক্ষেত্রের জন্য একটি উচ্চ মান ইঙ্গিত দিতে পারে যে অ্যাপ্লিকেশন দৃষ্টান্তগুলি FCM 100 মুলতুবি বার্তাগুলির সীমা ছাড়িয়ে অ-সংঘর্ষযোগ্য বার্তাগুলির পরিমাণ গ্রহণ করছে। এটি প্রশমিত করার জন্য, আপনার অ্যাপ্লিকেশনটি onDeletedMessages
কলগুলি পরিচালনা করে তা নিশ্চিত করুন এবং সংযোগযোগ্য বার্তাগুলি প্রেরণের বিষয়টি বিবেচনা করুন। একইভাবে, droppedDeviceInactive
জন্য উচ্চ শতাংশ আপনার সার্ভারে নিবন্ধকরণ টোকেন আপডেট করার সংকেত হতে পারে, বাসি টোকেনগুলি অপসারণ এবং বিষয়গুলি থেকে সাবস্ক্রাইব করার জন্য। এই অঞ্চলে সেরা অনুশীলনের জন্য FCM নিবন্ধকরণ টোকেনগুলি পরিচালনা করুন দেখুন।
ডেলিভারি পারফরম্যান্স পার্সেন্টস
DeliveryPerformancePercents
অবজেক্টের ক্ষেত্রগুলি সফলভাবে বিতরণ করা বার্তাগুলি সম্পর্কে তথ্য সরবরাহ করে। এটি "আমার বার্তাগুলি কি বিলম্বিত হয়েছিল?" এর মতো প্রশ্নের উত্তর দিতে পারে? এবং "বার্তাগুলি কেন বিলম্বিত হয়?" উদাহরণস্বরূপ, delayedMessageThrottled
জন্য একটি উচ্চ মান স্পষ্টভাবে ইঙ্গিত করবে যে আপনি প্রতি-ডিভাইস সর্বাধিক সীমা ছাড়িয়ে যাচ্ছেন এবং আপনি যে হারগুলিতে বার্তা প্রেরণ করছেন তা সামঞ্জস্য করা উচিত।
বার্তা অন্তর্দৃষ্টি শতাংশ
এই অবজেক্টটি সমস্ত বার্তা প্রেরণ সম্পর্কে অতিরিক্ত তথ্য সরবরাহ করে। priorityLowered
ক্ষেত্রটি স্বীকৃত বার্তাগুলির শতাংশ প্রকাশ করে যা অগ্রাধিকার ছিল HIGH
থেকে NORMAL
দিকে কমিয়ে দেয়। যদি এই মানটি বেশি হয় তবে কম উচ্চ অগ্রাধিকার বার্তা প্রেরণের চেষ্টা করুন বা উচ্চ অগ্রাধিকার বার্তা প্রেরণ করা হলে আপনি সর্বদা একটি বিজ্ঞপ্তি প্রদর্শন করেন তা নিশ্চিত করুন। আরও তথ্যের জন্য বার্তা অগ্রাধিকারে আমাদের ডকুমেন্টেশন দেখুন
এই ডেটা কীভাবে বিগকোয়ারিতে রফতানি করা ডেটা থেকে পৃথক হয়?
বিগকুয়ারি রফতানি ডিভাইসে এসডিকে ( এফসিএম আর্কিটেকচারের 2 এবং 4 ধাপ) দ্বারা এফসিএম ব্যাকএন্ড এবং বার্তা বিতরণ দ্বারা বার্তা গ্রহণযোগ্যতা সম্পর্কে পৃথক বার্তা লগ সরবরাহ করে। পৃথক বার্তাগুলি গ্রহণ এবং বিতরণ করা হয়েছে তা নিশ্চিত করার জন্য এই ডেটা দরকারী। পরবর্তী বিভাগে বিগকোয়ারি ডেটা রফতানি সম্পর্কে আরও পড়ুন।
By contrast, the Firebase Cloud Messaging Data API provides aggregated details about what happens specifically in the Android Transport Layer (or Step 3 of the FCM Architecture ). This data specifically provides insight into the delivery of messages from FCM backends to the Android SDK. It's particularly useful for showing trends as to why messages were delayed or dropped during this transport.
In some cases, it is possible that the two data sets might not match precisely due to the following:
- The aggregated metrics only sample a portion of all messages
- The aggregated metrics are rounded
- We don't present metrics below a privacy threshold
- A portion of message outcomes are missing due to optimizations in how we manage the large volume of traffic.
Limitations of the API
Aggregate Data Timelines
The API will return 7 days of historical data; however, data returned by this API will be delayed by up to 5 days. For example, on January 20th, the data for January 9th - January 15th would be available, but not for January 16th or later. Additionally, the data is provided at best effort. In the event of a data outage, FCM will work to fix forward and will not backfill the data after the issue is fixed. In larger outages, the data could be unavailable for a week or more.
ডেটা কভারেজ
The metrics provided by the Firebase Cloud Messaging Data API are meant to provide insight into broad trends of message delivery. However, they do not provide 100% coverage of all message scenarios. The following scenarios are known outcomes not reflected in the metrics.
Expired messages
If the Time To Live (TTL) expires after the end of the given log date, the message won't be counted as droppedTtlExpired
on this date.
Messages to inactive devices
Messages sent to inactive devices may or may not show up in the dataset depending on which data path they take. This can lead to some miscounting in the droppedDeviceInactive
and pending
fields.
Messages to devices with certain user preferences
Users who have disabled the collection of usage and diagnostic information on their devices will not have their messages included in our counting, in keeping with their preferences.
Rounding and Minimums
FCM deliberately rounds and excludes counts where the volumes are not large enough.
BigQuery data export
You can export your message data into BigQuery for further analysis. BigQuery allows you to analyze the data using BigQuery SQL, export it to another cloud provider, or use the data for your custom ML models. An export to BigQuery includes all available data for messages, regardless of message type or whether the message is sent via the API or the Notifications composer.
For messages sent to devices with the following FCM SDK minimum versions, you have the additional option to enable the export of message delivery data for your app:
- Android 20.1.0 or higher.
- iOS 8.6.0 or higher
- Firebase Web SDK 9.0.0 or higher
See below for details on enabling data export for Android and iOS .
To get started, link your project to BigQuery:
নিম্নলিখিত বিকল্পগুলির মধ্যে একটি চয়ন করুন:
Open the Notifications composer , then click Access BigQuery at the bottom of the page.
From the Integrations page in the Firebase console, click Link in the BigQuery card.
This page displays FCM export options for all FCM -enabled apps in the project.
Follow the on-screen instructions to enable BigQuery.
Refer to Link Firebase to BigQuery for more information.
When you enable BigQuery export for Cloud Messaging :
Firebase exports your data to BigQuery . Note that the initial propagation of data for export may take up to 48 hours to complete.
- You can manually schedule data backfills for up to the past 30 days.
ডেটাসেট তৈরি হওয়ার পরে, অবস্থান পরিবর্তন করা যাবে না, তবে আপনি ডেটাসেটটিকে একটি ভিন্ন অবস্থানে অনুলিপি করতে পারেন বা ম্যানুয়ালি একটি ভিন্ন অবস্থানে ডেটাসেটটি সরাতে (পুনরায় তৈরি) করতে পারেন৷ To learn more, see Change dataset location .
Firebase sets up regular syncs of your data from your Firebase project to BigQuery . These daily export operations begin at 4:00 AM Pacific Time and usually finish in 24 hours.
By default, all apps in your project are linked to BigQuery and any apps that you later add to the project are automatically linked to BigQuery . কোন অ্যাপগুলি ডেটা পাঠায় তা আপনি পরিচালনা করতে পারেন৷
To deactivate BigQuery export, unlink your project in the Firebase console.
Enable message delivery data export
Android devices with the FCM SDK 20.1.0 or higher can enable their app's message delivery data export. Data export is disabled by default at the app level . Programmatically enabling it at the app instance level allows you to ask end users for permission to analyze their message delivery data (recommended). Where both are set, the app instance level value overrides the app level value.
Before enabling these options, you must first create the FCM -BiqQuery link for your project as described in BigQuery data export .
Enable delivery data export for app instances
For most cases, we recommend that you enable message delivery data export only at the app instance level and leave it disabled at the app level.
FirebaseMessaging.getInstance().setDeliveryMetricsExportToBigQuery(true)
Enable delivery data export for an app
If you prefer to enable export at the app level, make sure to not call the setDeliveryMetricsExportToBigQuery
method, and add the following property to the application object in your app manifest:
<application>
<meta-data android:name="delivery_metrics_exported_to_big_query_enabled"
android:value="true" />
</application>
What data is exported to BigQuery?
Note that targeting stale tokens or inactive registrations may inflate some of these statistics.
The schema of the exported table is:
_PARTITIONTIME | টাইমস্ট্যাম্প | This pseudo column contains a timestamp for the start of the day (in UTC) in which the data was loaded. For the YYYYMMDD partition, this pseudo column contains the value TIMESTAMP('YYYY-MM-DD'). |
event_timestamp | টাইমস্ট্যাম্প | Event timestamp as recorded by the server |
project_number | পূর্ণসংখ্যা | The project number identifies the project that sent the message |
বার্তা_আইডি | STRING | The message ID identifies a message. Generated from the App ID and timestamp, the message ID might, in some cases, not be globally unique. |
instance_id | STRING | The unique id of the app the message is sent to (when available). It can be an instance ID or an Firebase installation ID. |
message_type | STRING | The type of the message. Can be Notification message or Data message. Topic is used to identify the original message for a topic or campaign send; the subsequent messages is either a notification or data message. |
sdk_platform | STRING | The platform of the recipient app |
app_name | STRING | The package name for Android apps or the bundle id for iOS apps |
collapse_key | STRING | The collapse key identifies a group of messages that can be collapsed. When a device is not connected, only the last message with a given collapse key is queued for eventual delivery |
অগ্রাধিকার | পূর্ণসংখ্যা | The priority of the message. Valid values are "normal" and "high." On iOS, these correspond to APNs priorities 5 and 10 |
ttl | পূর্ণসংখ্যা | This parameter specifies how long (in seconds) the message should be kept in FCM storage if the device is offline |
বিষয় | STRING | The name of the topic to which a message was sent (when applicable) |
bulk_id | পূর্ণসংখ্যা | The bulk ID identifies a group of related messages, such as a particular send to a topic |
ঘটনা | STRING | অনুষ্ঠানের ধরন। সম্ভাব্য মান হল:
|
analytics_label | STRING | With the HTTP v1 API , the analytics label can be set when sending the message, in order to mark the message for analytics purposes |
What can you do with the exported data?
The following sections offer examples of queries that you can run in BigQuery against your exported FCM data.
Count sent messages by app
SELECT app_name, COUNT(1)
FROM `project ID.firebase_messaging.data`
WHERE
_PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD')
AND event = 'MESSAGE_ACCEPTED'
AND message_id != ''
GROUP BY 1;
Count unique app instances targeted by messages
SELECT COUNT(DISTINCT instance_id)
FROM `project ID.firebase_messaging.data`
WHERE
_PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD')
AND event = 'MESSAGE_ACCEPTED';
Count notification messages sent
SELECT COUNT(1)
FROM `project ID.firebase_messaging.data`
WHERE
_PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD')
AND event = 'MESSAGE_ACCEPTED'
AND message_type = 'DISPLAY_NOTIFICATION';
Count data messages sent
SELECT COUNT(1)
FROM `project ID.firebase_messaging.data`
WHERE
_PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD')
AND event = 'MESSAGE_ACCEPTED'
AND message_type = 'DATA_MESSAGE';
Count messages sent to a topic or campaign
SELECT COUNT(1)
FROM `project ID.firebase_messaging.data`
WHERE
_PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD')
AND event = 'MESSAGE_ACCEPTED'
AND bulk_id = your bulk id AND message_id != '';
To track events for a message sent to particular topic, modify this query to replace AND message_id != ''
with AND message_id = <your message id>;
.
Compute fanout duration for a given topic or campaign
The fanout start time is when the original request is received, and the end time is the time the last individual message targeting a single instance is created.
SELECT TIMESTAMP_DIFF( end_timestamp, start_timestamp, MILLISECOND ) AS fanout_duration_ms, end_timestamp, start_timestamp FROM ( SELECT MAX(event_timestamp) AS end_timestamp FROM `project ID.firebase_messaging.data` WHERE _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD') AND event = 'MESSAGE_ACCEPTED' AND bulk_id = your bulk id ) sent CROSS JOIN ( SELECT event_timestamp AS start_timestamp FROM `project ID.firebase_messaging.data` WHERE _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD') AND event = 'MESSAGE_ACCEPTED' AND bulk_id = your bulk id AND message_type = 'TOPIC' ) initial_message;
Count percentage of delivered messages
SELECT messages_sent, messages_delivered, messages_delivered / messages_sent * 100 AS percent_delivered FROM ( SELECT COUNT(DISTINCT CONCAT(message_id, instance_id)) AS messages_sent FROM `project ID.firebase_messaging.data` WHERE _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD') AND event = 'MESSAGE_ACCEPTED' ) sent CROSS JOIN ( SELECT COUNT(DISTINCT CONCAT(message_id, instance_id)) AS messages_delivered FROM `project ID.firebase_messaging.data` WHERE _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD') AND (event = 'MESSAGE_DELIVERED' AND message_id IN ( SELECT message_id FROM `project ID.firebase_messaging.data` WHERE _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD') AND event = 'MESSAGE_ACCEPTED' GROUP BY 1 ) ) delivered;
Track all events for a given message id and instance id
SELECT *
FROM `project ID.firebase_messaging.data`
WHERE
_PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD')
AND message_id = 'your message id'
AND instance_id = 'your instance id'
ORDER BY event_timestamp;
Compute latency for a given message id and instance id
SELECT TIMESTAMP_DIFF( MAX(delivered_time), MIN(accepted_time), MILLISECOND ) AS latency_ms FROM ( SELECT event_timestamp AS accepted_time FROM `project ID.firebase_messaging.data` WHERE _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD') AND message_id = 'your message id' AND instance_id = 'your instance id' AND event = 'MESSAGE_ACCEPTED' ) sent CROSS JOIN ( SELECT event_timestamp AS delivered_time FROM `project ID.firebase_messaging.data` WHERE _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD') AND message_id = 'your message id' AND instance_id = 'your instance id' AND (event = 'MESSAGE_DELIVERED' ) delivered;