Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

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

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

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

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

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

মেসেজ ডেলিভারি রিপোর্ট

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

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

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

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

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

বার্তায় বিশ্লেষণ লেবেল যোগ করা

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

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

  • -
  • ~
  • %

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

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

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

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

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

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

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

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

FCM ডেটা API এর মাধ্যমে একত্রিত বিতরণ ডেটা

ফায়ারবেস ক্লাউড মেসেজিং ডেটা এপিআই আপনাকে এমন তথ্য পুনরুদ্ধার করতে দেয় যা আপনাকে অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলিকে লক্ষ্য করে বার্তা অনুরোধের ফলাফল বুঝতে সাহায্য করতে পারে। 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% যোগফল করা হবে না এ সব মান প্রতিনিধিত্ব করা হয়।

স্বীকৃত বার্তা গণনা করুন

ডেটাসেটে অন্তর্ভুক্ত একমাত্র গণনা হল যে বার্তাগুলির সংখ্যা যা এফসিএম অ্যান্ড্রয়েড ডিভাইসগুলিতে বিতরণের জন্য গ্রহণ করেছিল। সমস্ত শতাংশ এই মানকে হর হিসেবে ব্যবহার করে। মনে রাখবেন যে এই গণনা ব্যবহারকারীদের লক্ষ্য করে বার্তা অন্তর্ভুক্ত করবে না যারা তাদের ডিভাইসে ব্যবহার এবং ডায়াগনস্টিক তথ্য সংগ্রহ অক্ষম করেছে।

বার্তার ফলাফল শতকরা

ক্ষেত্রের মধ্যে অন্তর্ভুক্ত 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 জানুয়ারী বা তার পরে নয়। অতিরিক্তভাবে, ডেটা সর্বোত্তম প্রচেষ্টায় সরবরাহ করা হয়। ডেটা বন্ধ হয়ে গেলে, এফসিএম ফরোয়ার্ড ঠিক করার জন্য কাজ করবে এবং সমস্যাটি ঠিক হওয়ার পরে ডেটা ব্যাকফিল করবে না। বৃহত্তর বিভ্রাটের ক্ষেত্রে, ডেটা এক সপ্তাহ বা তার বেশি সময়ের জন্য অনুপলব্ধ হতে পারে।

ডেটা কভারেজ

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

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

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

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

নিষ্ক্রিয় ডিভাইসে পাঠানো বার্তাগুলি কোন ডাটা পথ গ্রহণ করে তার উপর নির্ভর করে ডেটাসেটে প্রদর্শিত হতে পারে বা নাও হতে পারে। এটি "ড্রপড নিষ্ক্রিয় ডিভাইস" এবং "মুলতুবি" ক্ষেত্রগুলিতে কিছু ভুল গণনা করতে পারে।

নির্দিষ্ট ব্যবহারকারীর পছন্দ সহ ডিভাইসে বার্তা

যে ব্যবহারকারীরা তাদের ডিভাইসে ব্যবহার এবং ডায়াগনস্টিক তথ্য সংগ্রহ অক্ষম করেছে তাদের পছন্দের সাথে সামঞ্জস্য রেখে তাদের বার্তা আমাদের গণনায় অন্তর্ভুক্ত থাকবে না।

গোলাকার এবং সর্বনিম্ন

FCM ইচ্ছাকৃতভাবে বৃত্তাকার এবং গণনা বাদ দেয় যেখানে ভলিউম যথেষ্ট বড় নয়।

BigQuery ডেটা রপ্তানি

আপনি মধ্যে আপনার বার্তা ডেটা রপ্তানি করতে পারেন BigQuery- তে আরও বিশ্লেষণের জন্য। BigQuery আপনাকে BigQuery SQL ব্যবহার করে ডেটা বিশ্লেষণ করতে, অন্য ক্লাউড প্রদানকারীর কাছে রপ্তানি করতে বা আপনার কাস্টম ML মডেলের ডেটা ব্যবহার করতে দেয়। BigQuery- এ রপ্তানির মাধ্যমে মেসেজের জন্য সমস্ত উপলভ্য ডেটা অন্তর্ভুক্ত থাকে, বার্তা প্রকার নির্বিশেষে অথবা বার্তাটি API বা বিজ্ঞপ্তি সুরকারের মাধ্যমে পাঠানো হোক না কেন।

নিম্নলিখিত FCM SDK ন্যূনতম সংস্করণ সহ ডিভাইসগুলিতে পাঠানো বার্তাগুলির জন্য, আপনার অ্যাপের জন্য বার্তা বিতরণ ডেটা রপ্তানি সক্ষম করার জন্য আপনার কাছে অতিরিক্ত বিকল্প রয়েছে:

  • অ্যান্ড্রয়েড 20.1.0 বা উচ্চতর।
  • iOS 8.6.0 বা উচ্চতর
  • ফায়ারবেস ওয়েব SDK 9.0.0 বা উচ্চতর

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

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

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

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

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

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

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

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

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

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

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

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

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

মেসেজ ডেলিভারি ডেটা এক্সপোর্ট চালু করুন

FCM SDK 8.6.0 বা উচ্চতর আইওএস ডিভাইসগুলি তাদের অ্যাপের মেসেজ ডেলিভারি ডেটা রপ্তানি সক্ষম করতে পারে। 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- এ কোন ডেটা রপ্তানি করা হয়?

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

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

_PARTITIONTIME টাইমস্ট্যাম্প এই ছদ্ম কলামটিতে দিনের শুরুতে (ইউটিসি তে) একটি টাইমস্ট্যাম্প রয়েছে যেখানে ডেটা লোড করা হয়েছিল। YYYYMMDD পার্টিশনের জন্য, এই ছদ্ম কলামে TIMESTAMP ('YYYY-MM-DD') মান রয়েছে।
event_timestamp টাইমস্ট্যাম্প সার্ভার দ্বারা রেকর্ড করা ইভেন্ট টাইমস্ট্যাম্প
প্রকল্প সংখ্যা ইন্টিজার প্রকল্প নম্বর বার্তা পাঠানো প্রকল্প চিহ্নিত করে
বার্তা_আইডি STRING বার্তা আইডি একটি বার্তা চিহ্নিত করে। অ্যাপ আইডি এবং টাইমস্ট্যাম্প থেকে তৈরি, বার্তা আইডি, কিছু ক্ষেত্রে, বিশ্বব্যাপী অনন্য হতে পারে না।
example_id STRING অ্যাপ্লিকেশনটির আইডি বার্তা পাঠানো হয় (যখন উপলব্ধ)
message_type STRING বার্তার ধরণ। বিজ্ঞপ্তি বার্তা বা ডেটা বার্তা হতে পারে। একটি বিষয় বা প্রচারাভিযানের জন্য মূল বার্তা শনাক্ত করতে টপিক ব্যবহার করা হয়; পরবর্তী বার্তাগুলি একটি বিজ্ঞপ্তি বা ডেটা বার্তা।
sdk_platform STRING প্রাপক অ্যাপের প্ল্যাটফর্ম
অ্যাপ্লিকেশন নাম STRING অ্যান্ড্রয়েড অ্যাপের প্যাকেজের নাম বা আইওএস অ্যাপের বান্ডেল আইডি
পতন_কি STRING পতন কী কী বার্তাগুলির একটি গ্রুপ চিহ্নিত করে যা ভেঙে ফেলা যায়। যখন একটি ডিভাইস সংযুক্ত না হয়, শুধুমাত্র একটি প্রদত্ত পতন কী সহ শেষ বার্তাটি চূড়ান্ত বিতরণের জন্য সারিবদ্ধ থাকে
অগ্রাধিকার ইন্টিজার বার্তার অগ্রাধিকার। বৈধ মানগুলি "স্বাভাবিক" এবং "উচ্চ"। আইওএস -এ, এপিএনগুলির অগ্রাধিকার 5 এবং 10 এর সাথে মিলে যায়
ttl ইন্টিজার এই প্যারামিটারটি নির্দিষ্ট করে যে ডিভাইসটি অফলাইন থাকলে কতক্ষণ (সেকেন্ডে) বার্তাটি FCM স্টোরেজে রাখা উচিত
বিষয় STRING যে বিষয়ে একটি বার্তা পাঠানো হয়েছিল তার নাম (যখন প্রযোজ্য)
বাল্ক_আইডি ইন্টিজার বাল্ক আইডি সংশ্লিষ্ট মেসেজের একটি গ্রুপকে চিহ্নিত করে, যেমন কোনো বিষয়ে একটি বিশেষ পাঠানো
ঘটনা 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 এর কারণে একটি বার্তা পাঠানোর অনুরোধ প্রত্যাখ্যান করা হয়েছিল।
analytics_label 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;