Catch up on everthing we announced at this year's Firebase Summit. Learn more

ম্যাসেজ বিতরণ বোঝা যাচ্ছে

FCM আপনাকে বার্তা বিতরণের অন্তর্দৃষ্টি পেতে সহায়তা করার জন্য তিনটি সেট সরঞ্জাম সরবরাহ করে:

  • ফায়ারবেস কনসোল বার্তা বিতরণ প্রতিবেদন এবং বিজ্ঞপ্তি ফানেল বিশ্লেষণ
  • Firebase ক্লাউড মেসেজিং ডেটা API থেকে অ্যাগ্রিগেটেড অ্যান্ড্রয়েড SDK ডেলিভারি মেট্রিক
  • Google BigQuery-এ ব্যাপক ডেটা এক্সপোর্ট

এই পৃষ্ঠায় বর্ণিত রিপোর্টিং টুলগুলির কাজ করার জন্য Google Analytics প্রয়োজন। Google এনালিটিক্স আপনার প্রকল্পের জন্য সক্রিয় করা হয় না, তাহলে আপনি এটি সেট আপ করতে পারেন ঐক্যবদ্ধতার আপনার Firebase প্রকল্পের সেটিংস ট্যাব।

মনে রাখবেন যে এই পৃষ্ঠার অনেক পরিসংখ্যানের রিপোর্টিং, বিশ্লেষণ ডেটা ব্যাচিংয়ের কারণে 24 ঘন্টা পর্যন্ত বিলম্বের বিষয়।

বার্তা বিতরণ রিপোর্ট

ইন প্রতিবেদন Firebase কনসোলে ট্যাব, আপনাকে বিজ্ঞপ্তি সুরকার এবং FCM API গুলি মাধ্যমে পাঠানো সহ Android বা অ্যাপল প্ল্যাটফর্মের FCM SDK আছে, প্রেরিত বার্তাগুলির জন্য নিম্নলিখিত ডেটা দেখতে পারেন:

  • পাঠায় — ডেটা মেসেজ বা বিজ্ঞপ্তি বার্তা ডেলিভারির জন্য সারিবদ্ধ করা হয়েছে বা ডেলিভারির জন্য APN-এর মতো তৃতীয় পক্ষের পরিষেবাতে সফলভাবে পাঠানো হয়েছে। দেখুন একটি বার্তার জীবনকাল আরও তথ্যের জন্য।
  • প্রাপ্ত (শুধুমাত্র অ্যান্ড্রয়েড ডিভাইসে উপলব্ধ) — ডেটা বার্তা বা বিজ্ঞপ্তি বার্তা অ্যাপটি পেয়েছে। এই ডেটা পাওয়া যায় যখন প্রাপ্ত Android ডিভাইসে FCM SDK 18.0.1 বা উচ্চতর ইনস্টল করা থাকে।
  • ইমপ্রেশন (শুধুমাত্র অ্যান্ড্রয়েড ডিভাইসে বিজ্ঞপ্তি বার্তার জন্য উপলব্ধ) — অ্যাপটি ব্যাকগ্রাউন্ডে থাকাকালীন ডিভাইসে ডিসপ্লে বিজ্ঞপ্তি প্রদর্শিত হয়েছে।
  • খোলে - ব্যবহারকারী বিজ্ঞপ্তি বার্তাটি খুললেন। অ্যাপটি ব্যাকগ্রাউন্ডে থাকলে শুধুমাত্র প্রাপ্ত বিজ্ঞপ্তিগুলির জন্য রিপোর্ট করা হয়।

এই তথ্য একটি বিজ্ঞপ্তি পে লোড এবং সমস্ত লেবেল সাথে সমস্ত বার্তা জন্য উপলব্ধ ডেটা বার্তা । লেবেল সম্পর্কে আরো জানতে দেখুন বার্তা বিশ্লেষণ লেবেল যুক্ত করা হলে

বার্তা প্রতিবেদনগুলি দেখার সময়, আপনি CSV-এ রপ্তানি করার বিকল্প সহ প্রদর্শিত ডেটার জন্য একটি তারিখ পরিসর সেট করতে পারেন৷ আপনি এই মানদণ্ড দ্বারা ফিল্টার করতে পারেন:

  • প্ল্যাটফর্ম (iOS বা Android)
  • অ্যাপ
  • কাস্টম বিশ্লেষণ লেবেল

বার্তাগুলিতে বিশ্লেষণ লেবেল যুক্ত করা হচ্ছে

লেবেল বার্তাগুলি কাস্টম বিশ্লেষণের জন্য খুব দরকারী, আপনাকে লেবেল বা লেবেলগুলির সেট দ্বারা বিতরণ পরিসংখ্যান ফিল্টার করার অনুমতি দেয়৷ আপনি সেট করে HTTP- র v1 এ API এর মাধ্যমে পাঠানো কোনো বার্তা একটি লেবেল যোগ করতে পারেন fcmOptions.analyticsLabel মাঠে বার্তা বস্তু, বা প্ল্যাটফর্ম-নির্দিষ্ট মধ্যে AndroidFcmOptions বা ApnsFcmOptions ক্ষেত্র।

অ্যানালিটিক্স লেবেল বিন্যাসে টেক্সট স্ট্রিং হয় ^[a-zA-Z0-9-_.~%]{1,50}$ । লেবেলে ছোট এবং বড় হাতের অক্ষর, সংখ্যা এবং নিম্নলিখিত চিহ্নগুলি অন্তর্ভুক্ত থাকতে পারে:

  • -
  • ~
  • %

সর্বাধিক দৈর্ঘ্য 50 অক্ষর। আপনি প্রতিদিন 100টি অনন্য লেবেল নির্দিষ্ট করতে পারেন; সেই সীমার বাইরে লেবেল যুক্ত বার্তাগুলি রিপোর্ট করা হয় না৷

Firebase কনসোল প্রতিবেদন ট্যাব বার্তালাপ, আপনি সমস্ত বিদ্যমান লেবেল একটি তালিকা অনুসন্ধান ও একেলা বা পরিসংখ্যান প্রদর্শিত ফিল্টার করতে একযোগে তাদের আবেদন করতে পারেন।

বিজ্ঞপ্তি ফানেল বিশ্লেষণ

একটি অন্তর্নির্মিত বিজ্ঞপ্তি ফানেল বিশ্লেষণ আপনাকে দেখায় যে কীভাবে আপনার ব্যবহারকারীরা Firebase কনসোল থেকে পাঠানো নির্দিষ্ট বিজ্ঞপ্তিগুলিতে প্রতিক্রিয়া জানায়৷ এই শ্রেণীতে লক্ষ্য করা iOS এবং অ্যান্ড্রয়েড ডিভাইসগুলির জন্য এই দৃশ্যে ডেটা অন্তর্ভুক্ত রয়েছে:

  • বিজ্ঞপ্তি পাঠানো হয়েছে — বার্তাটি ডেলিভারির জন্য সারিবদ্ধ করা হয়েছে বা বিতরণের জন্য APN-এর মতো তৃতীয় পক্ষের পরিষেবাতে সফলভাবে পাঠানো হয়েছে। মনে রাখবেন যে পুরানো টোকেন বা নিষ্ক্রিয় নিবন্ধনগুলিকে লক্ষ্য করা এই পরিসংখ্যানগুলিকে বাড়িয়ে দিতে পারে৷
  • বিজ্ঞপ্তি খোলা হয়েছে — খোলা হয়েছে বিজ্ঞপ্তির সংখ্যা। অ্যাপটি ব্যাকগ্রাউন্ডে থাকলে শুধুমাত্র প্রাপ্ত বিজ্ঞপ্তিগুলির জন্য রিপোর্ট করা হয়।
  • একটি সংজ্ঞায়িত করা হলে, একটি রূপান্তর ইভেন্ট ট্রিগার করেছে এমন অনন্য ব্যবহারকারীর সংখ্যা৷

বিজ্ঞপ্তি ফানেল বিশ্লেষণ দেখতে:

  1. বিজ্ঞপ্তিগুলি সুরকার সালে নির্বাচন বিজ্ঞপ্তিগুলি ট্যাব।
  2. বার্তা তালিকায় একটি সম্পূর্ণ বা অগ্রগতি বার্তায় ক্লিক করুন৷ একটি ফানেল বিশ্লেষণ সহ একটি প্রসারিত দৃশ্য প্রদর্শিত হয়৷

অ্যানালিটিক্স রিপোর্টগুলি পর্যায়ক্রমে আপডেট হয়, কিন্তু যখন কোনও ব্যবহারকারী বিজ্ঞপ্তিটি খোলে এবং ইভেন্ট ডেটা কনসোলে উপলব্ধ থাকে তখন এর মধ্যে কিছুটা বিলম্ব হতে পারে। অধীনে এই রিপোর্ট ছাড়াও বিজ্ঞপ্তিগুলি ট্যাব, এছাড়াও আপনি অ্যানালিটিক্স কাস্টম funnels গড়ে তুলতে আপনার অ্যাপে পদক্ষেপ একটি ক্রম সমাপ্তির হার ঠাহর করতে পারেন।

এফসিএম ডেটা এপিআই-এর মাধ্যমে একত্রিত ডেলিভারি ডেটা

Firebase ক্লাউড মেসেজিং ডেটা 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 ক্ষেত্র সংকেত পারে যে অ্যাপ্লিকেশন দৃষ্টান্ত ভলিউম পাচ্ছেন অ কলাপসিবল বার্তা 100 মুলতুবী বার্তা FCM এর সীমা মাত্রাধিক। এই প্রশমিত করার জন্য, নিশ্চিত এ আপনার অ্যাপ্লিকেশান হ্যান্ডলগুলি কল করতে onDeletedMessages এবং কলাপসিবল বার্তা পাঠানোর কথা বিবেচনা করুন। একইভাবে, জন্য উচ্চ শতকরা droppedDeviceInactive আপনার সার্ভারে আপডেট নিবন্ধন টোকেন করার জন্য একটি সংকেত হতে পারে, মামুলি টোকেন সরিয়ে এবং সেগুলোকে বিষয় থেকে সদস্যতা ত্যাগ। দেখুন FCM নিবন্ধন টোকেন পরিচালনা এই এলাকায় সর্বোত্তম উপায়গুলির জন্য।

ডেলিভারি কর্মক্ষমতা শতাংশ

ক্ষেত্র DeliveryPerformancePercents বার্তা সফলভাবে বিতরণ করা হয়েছে বিষয়ে তথ্য প্রদানকারী আপত্তি। এটি প্রশ্নের উত্তর দিতে পারে যেমন "আমার বার্তাগুলি কি বিলম্বিত হয়েছিল?" এবং "মেসেজ আসতে দেরি হয় কেন?" উদাহরণস্বরূপ, জন্য উচ্চ মান delayedMessageThrottled পরিষ্কারভাবে নির্দেশ হবে যে আপনি এই মাত্রাধিক হয় প্রতি-ডিভাইস সর্বোচ্চ সীমা , এবং যে হারে আপনাকে বার্তা পাঠাচ্ছেন সমন্বয় করা উচিত নয়।

বার্তা অন্তর্দৃষ্টি শতাংশ

এই বস্তুটি পাঠানো সমস্ত বার্তা সম্পর্কে অতিরিক্ত তথ্য প্রদান করে। priorityLowered ক্ষেত্র গৃহীত বার্তা অগ্রাধিকার থেকে নত করেছিলেন শতাংশ প্রকাশ HIGH থেকে NORMAL কারণে অ্যাপ্লিকেশান স্ট্যান্ডবাই বাকেট । যদি এই মানটি বেশি হয়, কম উচ্চ অগ্রাধিকার বার্তা পাঠানোর চেষ্টা করুন বা একটি উচ্চ অগ্রাধিকার বার্তা পাঠানো হলে আপনি সর্বদা একটি বিজ্ঞপ্তি প্রদর্শন করেন তা নিশ্চিত করুন৷

BigQuery-এ এক্সপোর্ট করা ডেটা থেকে এই ডেটা কীভাবে আলাদা?

BigQuery- তে রপ্তানি ডিভাইস (ধাপ 2 এবং 4 এর উপর SDK এর মধ্যে FCM ব্যাকএন্ড দ্বারা বার্তা গ্রহণ এবং বার্তা বিতরণ সম্পর্কে পৃথক বার্তা লগ উপলব্ধ FCM আর্কিটেকচার )। পৃথক বার্তাগুলি গ্রহণ এবং বিতরণ করা হয়েছে তা নিশ্চিত করার জন্য এই ডেটাটি কার্যকর। সম্পর্কে আরও পড়ুন BigQuery- তে ডেটা রপ্তানি পরবর্তী বিভাগে।

বিপরীতে Firebase ক্লাউড মেসেজিং ডেটা API কি অ্যান্ড্রয়েড ট্রান্সপোর্ট লেয়ার (বা ধাপ 3 বিশেষভাবে ঘটবে সম্পর্কে বিস্তারিত সমষ্টিগত প্রদান করে FCM আর্কিটেকচার )। এই ডেটা বিশেষত FCM ব্যাকএন্ড থেকে Android SDK-তে বার্তাগুলির বিতরণের অন্তর্দৃষ্টি প্রদান করে৷ কেন এই পরিবহনের সময় বার্তাগুলি বিলম্বিত বা বাদ দেওয়া হয়েছিল সেই প্রবণতাগুলি দেখানোর জন্য এটি বিশেষভাবে কার্যকর।

কিছু ক্ষেত্রে, এটি সম্ভব যে দুটি ডেটা সেট নিম্নলিখিত কারণে সঠিকভাবে মেলে না:

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

API এর সীমাবদ্ধতা

ডেটা বিলম্ব

এই API দ্বারা প্রত্যাবর্তিত ডেটা 5 দিন পর্যন্ত বিলম্বিত হবে। উদাহরণস্বরূপ, 10শে জানুয়ারীতে, 5ই জানুয়ারী এর ডেটা পাওয়া যাবে, কিন্তু 6ই জানুয়ারী বা তার পরের জন্য নয়৷ উপরন্তু, তথ্য সেরা প্রচেষ্টা প্রদান করা হয়. ডেটা বিভ্রাটের ক্ষেত্রে, এফসিএম ফরওয়ার্ড ঠিক করতে কাজ করবে এবং সমস্যাটি ঠিক হওয়ার পরে ডেটা ব্যাকফিল করবে না। বড় বিভ্রাটের ক্ষেত্রে, ডেটা এক সপ্তাহ বা তার বেশি সময়ের জন্য অনুপলব্ধ হতে পারে।

ডেটা কভারেজ

Firebase ক্লাউড মেসেজিং ডেটা API দ্বারা প্রদত্ত মেট্রিকগুলি বার্তা বিতরণের বিস্তৃত প্রবণতাগুলির অন্তর্দৃষ্টি প্রদান করার জন্য। যাইহোক, তারা সমস্ত বার্তা পরিস্থিতির 100% কভারেজ প্রদান করে না। নিম্নলিখিত পরিস্থিতিগুলি পরিচিত ফলাফলগুলি মেট্রিক্সে প্রতিফলিত হয় না৷

সঙ্কুচিত বার্তা

বার্তা যে হয়েছে ধসে অন্য বার্তা দ্বারা ডেটাসেটে উপস্থিত হয় না।

নিষ্ক্রিয় ডিভাইসে বার্তা

নিষ্ক্রিয় ডিভাইসগুলিতে প্রেরিত বার্তাগুলি ডেটাসেটে প্রদর্শিত হতে পারে বা নাও হতে পারে তার উপর নির্ভর করে তারা কোন ডেটা পথ গ্রহণ করে। এই কিছু মধ্যে miscounting হতে পারে 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 বা উচ্চতর

জন্য তথ্য রপ্তানি সক্ষম করায় বিস্তারিত জানার জন্য নিচে দেখুন অ্যান্ড্রয়েড এবং আইওএস

শুরু করতে, BigQuery-এ আপনার প্রোজেক্ট লিঙ্ক করুন:

  1. নিম্নলিখিত বিকল্পগুলির মধ্যে একটি চয়ন করুন:

    • খুলুন বিজ্ঞপ্তিগুলি সুরকার , তারপর পৃষ্ঠার নীচের অংশে অবস্থিত অ্যাক্সেস BigQuery- তে ক্লিক করুন।

    • থেকে ঐক্যবদ্ধতা Firebase কনসোলে পাতা, BigQuery- তে কার্ডে লিঙ্কে ক্লিক করুন।

      এই পৃষ্ঠাটি প্রকল্পের সমস্ত FCM-সক্ষম অ্যাপগুলির জন্য FCM রপ্তানির বিকল্পগুলি প্রদর্শন করে৷

  2. BigQuery সক্ষম করতে অন-স্ক্রীন নির্দেশাবলী অনুসরণ করুন।

পড়ুন BigQuery- তে লিঙ্ক করুন Firebase আরও তথ্যের জন্য।

আপনি BigQuery-এ আপনার প্রোজেক্ট লিঙ্ক করার পর:

  • Firebase আপনার ডেটা রপ্তানি BigQuery- তে হবে। মনে রাখবেন যে রপ্তানির জন্য ডেটার প্রাথমিক প্রচার সম্পূর্ণ হতে 48 ঘন্টা পর্যন্ত সময় লাগতে পারে।

  • Firebase আপনার Firebase প্রকল্প থেকে BigQuery-এ আপনার ডেটা নিয়মিত সিঙ্ক করে। এই দৈনিক রপ্তানি কার্যক্রম প্রশান্ত মহাসাগরীয় সময় সকাল 4:00 এ শুরু হয় এবং সাধারণত 24 ঘন্টার মধ্যে শেষ হয়।

  • ডিফল্টরূপে, আপনার প্রোজেক্টের সমস্ত অ্যাপ BigQuery-এর সাথে লিঙ্ক করা থাকে এবং আপনি পরে প্রোজেক্টে যোগ করা যেকোন অ্যাপ স্বয়ংক্রিয়ভাবে BigQuery-এর সাথে লিঙ্ক হয়ে যায়। আপনি করতে পারেন কোন কোন অ্যাপ তথ্য পাঠাতে পরিচালনা

BigQuery- তে রপ্তানি নিষ্ক্রিয় করার জন্য, আপনার প্রকল্পের লিঙ্কমুক্ত Firebase কনসোলে।

বার্তা বিতরণ ডেটা রপ্তানি সক্ষম করুন৷

FCM SDK 8.6.0 বা উচ্চতর iOS ডিভাইসগুলি তাদের অ্যাপের মেসেজ ডেলিভারি ডেটা এক্সপোর্ট সক্ষম করতে পারে৷ FCM সতর্কতা এবং ব্যাকগ্রাউন্ড বিজ্ঞপ্তি উভয়ের জন্য ডেটা এক্সপোর্ট সমর্থন করে। এই বিকল্পগুলি সক্ষম করার আগে, আপনাকে প্রথমে আপনার প্রকল্পের জন্য FCM-BiqQuery লিংক বর্ণনা অনুযায়ী তৈরি করতে হবে BigQuery- তে ডেটা রপ্তানি

সতর্কতা বিজ্ঞপ্তির জন্য ডেলিভারি ডেটা এক্সপোর্ট সক্ষম করুন

যেহেতু শুধুমাত্র সতর্কতা বিজ্ঞপ্তিগুলি বিজ্ঞপ্তি পরিষেবা অ্যাপ এক্সটেনশনগুলিকে ট্রিগার করতে পারে, তাই আপনাকে অবশ্যই আপনার অ্যাপে একটি বিজ্ঞপ্তি পরিষেবা এক্সটেনশন যোগ করতে হবে এবং প্রদর্শন বার্তা ট্র্যাকিং সক্ষম করতে একটি পরিষেবা এক্সটেনশনের মধ্যে এই APIটি কল করতে হবে৷ উপর অ্যাপলের ডকুমেন্টেশন দেখুন সদ্য বিতরণ বিজ্ঞপ্তিগুলি মধ্যে পরিবর্তন বিষয়বস্তু

প্রাপ্ত প্রতিটি বিজ্ঞপ্তির জন্য নিম্নলিখিত কল করা আবশ্যক:

সুইফট

// For alert notifications, call the API inside the service extension:
class NotificationService: UNNotificationServiceExtension {
  override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
  Messaging.extensionHelper()
      .exportDeliveryMetricsToBigQuery(withMessageInfo:request.content.userInfo)
  }
}

উদ্দেশ্য গ

// For alert notifications, call the API inside the service extension:
@implementation NotificationService
- (void)didReceiveNotificationRequest:(UNNotificationRequest *)request
                   withContentHandler:(void (^)(UNNotificationContent *_Nonnull))contentHandler {
  [[FIRMessaging extensionHelper] exportDeliveryMetricsToBigQueryWithMessageInfo:request.content.userInfo];
}
@end

আপনি ব্যবহার পাঠাতে অনুরোধ নির্মাণ করা হয় তাহলে HTTP- র v1 এ এপিআই, উল্লেখ করতে ভুলবেন না mutable-content = 1 মধ্যে পে লোড বস্তুর

পটভূমি বিজ্ঞপ্তির জন্য ডেলিভারি ডেটা রপ্তানি সক্ষম করুন৷

পটভূমি বার্তা লাভ যখন অ্যাপ্লিকেশন ফোরগ্রাউন্ড বা পটভূমিতে হয়, তাহলে আপনি মূল অ্যাপ্লিকেশনের ডেটা বার্তা হ্যান্ডলার ভিতরে ডেটা রপ্তানি এপিআই কল করতে পারেন UIApplicationDelegate application:didReceiveRemoteNotification:fetchCompletionHandler: । প্রাপ্ত প্রতিটি বিজ্ঞপ্তির জন্য এই কল করা আবশ্যক:

সুইফট

// For background notifications, call the API inside the UIApplicationDelegate method:
  func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any]) {
    Messaging.extensionHelper().exportDeliveryMetricsToBigQuery(withMessageInfo:userInfo)
  }

উদ্দেশ্য গ

// For background notifications, call the API inside the UIApplicationDelegate method:
@implementation AppDelegate
- (void)application:(UIApplication *)application
    didReceiveRemoteNotification:(NSDictionary *)userInfo
          fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
  [[FIRMessaging extensionHelper] exportDeliveryMetricsToBigQueryWithMessageInfo:userInfo];
@end

BigQuery-এ কোন ডেটা রপ্তানি করা হয়?

মনে রাখবেন যে পুরানো টোকেন বা নিষ্ক্রিয় নিবন্ধনগুলিকে লক্ষ্য করে এই পরিসংখ্যানগুলির কিছু বৃদ্ধি করতে পারে৷

রপ্তানি করা টেবিলের স্কিমা হল:

_পার্টিশনটাইম টাইমস্ট্যাম্প এই ছদ্ম কলামে দিনের শুরুর জন্য একটি টাইমস্ট্যাম্প রয়েছে (UTC-তে) যেখানে ডেটা লোড করা হয়েছিল। YYYYMMDD পার্টিশনের জন্য, এই ছদ্ম কলামে TIMESTAMP('YYYY-MM-DD') মান রয়েছে৷
ঘটনা_টাইমস্ট্যাম্প টাইমস্ট্যাম্প সার্ভার দ্বারা রেকর্ডকৃত ইভেন্ট টাইমস্ট্যাম্প
প্রকল্প সংখ্যা পূর্ণসংখ্যা প্রকল্প নম্বরটি সেই প্রকল্পটিকে চিহ্নিত করে যা বার্তাটি পাঠিয়েছে
message_id STRING বার্তা আইডি একটি বার্তা সনাক্ত করে। অ্যাপ আইডি এবং টাইমস্ট্যাম্প থেকে তৈরি, বার্তা আইডি কিছু ক্ষেত্রে বিশ্বব্যাপী অনন্য নাও হতে পারে।
instance_id STRING অ্যাপটির ইনস্ট্যান্স আইডি যেটিতে বার্তা পাঠানো হয়েছে (যখন উপলব্ধ)
বার্তা_প্রকার STRING বার্তার ধরন। বিজ্ঞপ্তি বার্তা বা ডেটা বার্তা হতে পারে। একটি বিষয় বা প্রচারাভিযান পাঠানোর জন্য মূল বার্তা সনাক্ত করতে বিষয় ব্যবহার করা হয়; পরবর্তী বার্তাগুলি হয় একটি বিজ্ঞপ্তি বা ডেটা বার্তা৷
sdk_platform STRING প্রাপক অ্যাপের প্ল্যাটফর্ম
অ্যাপ্লিকেশন নাম STRING অ্যান্ড্রয়েড অ্যাপের প্যাকেজের নাম বা iOS অ্যাপের বান্ডেল আইডি
পতন_কী STRING পতন কী বার্তাগুলির একটি গোষ্ঠী সনাক্ত করে যেগুলি ভেঙে দেওয়া যেতে পারে৷ যখন একটি ডিভাইস সংযুক্ত থাকে না, শুধুমাত্র একটি প্রদত্ত পতন কী সহ শেষ বার্তাটি চূড়ান্ত বিতরণের জন্য সারিবদ্ধ থাকে
অগ্রাধিকার পূর্ণসংখ্যা বার্তার অগ্রাধিকার। বৈধ মান হল "স্বাভাবিক" এবং "উচ্চ।" iOS-এ, এগুলি APN-এর অগ্রাধিকার 5 এবং 10-এর সাথে মিলে যায়
ttl পূর্ণসংখ্যা এই প্যারামিটারটি নির্দিষ্ট করে যে ডিভাইসটি অফলাইনে থাকলে কতক্ষণ (সেকেন্ডে) বার্তাটি FCM স্টোরেজে রাখা উচিত
বিষয় STRING যে বিষয়ে একটি বার্তা পাঠানো হয়েছিল তার নাম (যখন প্রযোজ্য)
bulk_id পূর্ণসংখ্যা বাল্ক আইডি সম্পর্কিত বার্তাগুলির একটি গোষ্ঠীকে চিহ্নিত করে, যেমন একটি নির্দিষ্ট বিষয়ে একটি প্রেরণ
ঘটনা STRING অনুষ্ঠানের ধরন। সম্ভাব্য মান হল:
  • MESSAGE_ACCEPTED: বার্তাটি FCM সার্ভার দ্বারা গৃহীত হয়েছে এবং অনুরোধটি বৈধ;
  • MESSAGE_DELIVERED: বার্তাটি ডিভাইসে অ্যাপের FCM SDK-এ বিতরণ করা হয়েছে। ডিফল্টরূপে, এই ক্ষেত্রটি প্রচার করা হয় না। সক্ষম করতে, দেওয়া নির্দেশাবলী অনুসরণ করুন setDeliveryMetricsExportToBigQuery(boolean)
  • MISSING_REGISTRATIONS: অনুপস্থিত নিবন্ধনের কারণে অনুরোধটি প্রত্যাখ্যান করা হয়েছে;
  • UNAUTHORIZED_REGISTRATION: বার্তাটি প্রত্যাখ্যান করা হয়েছে কারণ প্রেরক নিবন্ধনে পাঠানোর জন্য অনুমোদিত নয়;
  • MESSAGE_RECEIVED_INTERNAL_ERROR: বার্তা অনুরোধ প্রক্রিয়া করার সময় একটি অনির্দিষ্ট ত্রুটি ছিল;
  • MISMATCH_SENDER_ID: একটি বার্তা পাঠানোর অনুরোধ প্রত্যাখ্যান করা হয়েছে বার্তা পাঠানোর প্রেরক আইডি এবং শেষ-বিন্দুর জন্য ঘোষিত আইডির মধ্যে অমিলের কারণে;
  • QUOTA_EXCEEDED: অপর্যাপ্ত কোটার কারণে একটি বার্তা পাঠানোর অনুরোধ প্রত্যাখ্যান করা হয়েছে;
  • INVALID_REGISTRATION: একটি অবৈধ নিবন্ধনের কারণে একটি বার্তা পাঠানোর অনুরোধ প্রত্যাখ্যান করা হয়েছে;
  • INVALID_PACKAGE_NAME: একটি অবৈধ প্যাকেজ নামের কারণে একটি বার্তা পাঠানোর অনুরোধ প্রত্যাখ্যান করা হয়েছে;
  • INVALID_APNS_CREDENTIAL: একটি অবৈধ APNS শংসাপত্রের কারণে একটি বার্তা পাঠানোর অনুরোধ প্রত্যাখ্যান করা হয়েছে;
  • INVALID_PARAMETERS: অবৈধ প্যারামিটারের কারণে একটি বার্তা পাঠানোর অনুরোধ প্রত্যাখ্যান করা হয়েছে;
  • PAYLOAD_TOO_LARGE: সীমার চেয়ে বড় পেলোডের কারণে একটি বার্তা পাঠানোর অনুরোধ প্রত্যাখ্যান করা হয়েছিল;
  • AUTHENTICATION_ERROR: একটি প্রমাণীকরণ ত্রুটির কারণে একটি বার্তা পাঠানোর অনুরোধ প্রত্যাখ্যান করা হয়েছিল (বার্তাটি পাঠাতে ব্যবহৃত API কীটি পরীক্ষা করুন);
  • INVALID_TTL: একটি অবৈধ TTL এর কারণে একটি বার্তা পাঠানোর অনুরোধ প্রত্যাখ্যান করা হয়েছে৷
বিশ্লেষণ_লেবেল STRING সঙ্গে HTTP- র v1 এ এপিআই , বিশ্লেষণ ট্যাগ যখন বার্তা পাঠানোর, যাতে বিশ্লেষণ উদ্দেশ্যে বার্তা চিহ্নিত করতে সেট করা যেতে পারে

রপ্তানি করা ডেটা দিয়ে আপনি কী করতে পারেন?

নিম্নলিখিত বিভাগগুলি আপনার এক্সপোর্ট করা 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;