ইউনিটির জন্য ক্র্যাশ রিপোর্ট কাস্টমাইজ করুন

প্ল্যাটফর্ম নির্বাচন করুন: iOS+ অ্যান্ড্রয়েড ফ্লাটার ইউনিটি


আপনি Firebase কনসোলের DevOps & Engagement > Crashlytics ড্যাশবোর্ডে কোনো একটি ইস্যুতে ক্লিক করে তার একটি বিস্তারিত ইভেন্ট রিপোর্ট পেতে পারেন। আপনার অ্যাপে কী ঘটছে এবং Crashlytics এ রিপোর্ট করা ইভেন্টগুলোর পারিপার্শ্বিক পরিস্থিতি আরও ভালোভাবে বোঝার জন্য আপনি সেই রিপোর্টগুলো কাস্টমাইজ করতে পারেন।

ব্যতিক্রম রিপোর্ট করুন

প্রতিবেদনে ধরা পড়া ব্যতিক্রমগুলো

যদি প্রত্যাশিত কোনো ব্যতিক্রম ঘটে, তাহলে আপনি Crashlytics SDK-কে দিয়ে সেগুলোকে নন-ফেটাল ইভেন্ট হিসেবে রিপোর্ট করাতে পারেন। এই ইভেন্টগুলো ডিভাইসে লগ করা হয় এবং পরবর্তীতে ফেটাল ইভেন্ট রিপোর্টের সাথে অথবা যখন ব্যবহারকারী গেমটি পুনরায় চালু করেন, তখন পাঠানো হয়।

আপনি নিম্নলিখিত পদ্ধতি ব্যবহার করে C#-এ এক্সেপশন লগ করতে পারেন:

Crashlytics.LogException(Exception ex);

আপনি আপনার গেমের try/catch ব্লকে প্রত্যাশিত এক্সেপশনগুলো লগ করতে পারেন:

try {
    myMethodThatThrows();
} catch (Exception e) {
   Crashlytics.LogException(e);
   // handle your exception here!
}

অনাকাঙ্ক্ষিত ব্যতিক্রমগুলির প্রতিবেদন করুন

যেসব আনক্যাচড এক্সেপশন আপনার গেম ক্র্যাশ করে না (উদাহরণস্বরূপ, গেম লজিকের মধ্যে থাকা আনক্যাচড C# এক্সেপশন), সেগুলোকে ফেটাল ইভেন্ট হিসেবে রিপোর্ট করার জন্য আপনি আপনার ইউনিটি প্রজেক্টে Crashlytics ইনিশিয়ালাইজ করার Crashlytics.ReportUncaughtExceptionsAsFatal Crashlytics true সেট করতে পারেন। এই ইভেন্টগুলো রিয়েল-টাইমে Crashlytics রিপোর্ট করা হয়, যার জন্য ব্যবহারকারীকে গেমটি পুনরায় চালু করার প্রয়োজন হয় না।

এই অনাকাঙ্ক্ষিত ব্যতিক্রমগুলোকে মারাত্মক ঘটনা হিসেবে রিপোর্ট করার অর্থ হলো, এগুলো আপনার ক্র্যাশ-মুক্ত ব্যবহারকারীর পরিসংখ্যানে এবং ভেলোসিটি অ্যালার্টের ক্ষেত্রে গণনা করা হবে।

উল্লেখ্য যে, নেটিভ ক্র্যাশগুলোকে সর্বদা মারাত্মক ঘটনা (fatal events) হিসেবে রিপোর্ট করা হয়। এই ঘটনাগুলো ডিভাইসে লগ করা হয় এবং ব্যবহারকারী যখন গেমটি পুনরায় চালু করেন, তখন সেগুলো সাথে পাঠানো হয়।

void Start() {
    // Since there is no try-block surrounding this call, if an exception is thrown,
    // it is considered unexpected.
    // Setting `Crashlytics.ReportUncaughtExceptionsAsFatal = true`
    // will ensure that such cases are reported as fatals.
    thirdPartyMethodThatMayThrow();
}

মেমরি করাপশন সমস্যা ডিবাগ করতে GWP-ASan রিপোর্ট অন্তর্ভুক্ত করুন

যেসব অ্যান্ড্রয়েড অ্যাপ IL2CPP ব্যবহার করে, সেগুলোর ক্ষেত্রে Crashlytics GWP-ASan রিপোর্ট সংগ্রহের মাধ্যমে নেটিভ মেমরি ত্রুটির কারণে হওয়া ক্র্যাশ ডিবাগ করতে সাহায্য করতে পারে। এই মেমরি-সম্পর্কিত ত্রুটিগুলো আপনার অ্যাপের মেমরি করাপশনের সাথে যুক্ত থাকতে পারে, যা অ্যাপের নিরাপত্তা ঝুঁকির প্রধান কারণ।

Firebase কনসোলের DevOps & Engagement > Crashlytics ড্যাশবোর্ডে , আপনি এই ডেটা দিয়ে নিম্নলিখিত কাজগুলো করতে পারেন:

  • কোনো সমস্যার বিবরণে ক্লিক করলে আপনি একটি নতুন 'মেমরি স্ট্যাক ট্রেসেস' ট্যাবে এই ডেটা দেখতে পাবেন।

  • আপনি নতুন 'GWP-ASan রিপোর্ট' সিগন্যাল এবং ফিল্টার ব্যবহার করে এই ডেটা সহ সমস্ত ইস্যু দ্রুত দেখতে পারেন।

আপনার অ্যাপে যদি ইউনিটির জন্য সর্বশেষ Crashlytics এসডিকে (v10.7.0+) ব্যবহৃত হয় এবং GWP-ASan স্পষ্টভাবে সক্রিয় করা থাকে (এর জন্য আপনাকে আপনার অ্যান্ড্রয়েড অ্যাপ ম্যানিফেস্ট পরিবর্তন করতে হবে), তবেই আপনি GWP-ASan মেমরি রিপোর্ট পেতে পারেন। আপনার অ্যাপে কোনো C++ কোড থাকলে, আপনি অ্যান্ড্রয়েড ডকুমেন্টেশনে দেওয়া উদাহরণ নেটিভ কোড ব্যবহার করে আপনার GWP-ASan সেটআপ পরীক্ষা করতে পারেন।

কাস্টম কী যোগ করুন

কাস্টম কী আপনাকে ক্র্যাশ হওয়ার ঠিক আগের আপনার অ্যাপের নির্দিষ্ট অবস্থা জানতে সাহায্য করে। আপনি আপনার ক্র্যাশ রিপোর্টগুলোর সাথে যেকোনো কী-ভ্যালু পেয়ার যুক্ত করতে পারেন, এবং তারপর Firebase কনসোলের DevOps & Engagement > Crashlytics ড্যাশবোর্ডে সেই কাস্টম কী ব্যবহার করে ক্র্যাশ রিপোর্ট সার্চ ও ফিল্টার করতে পারেন।

  • আপনি কাস্টম কী-এর সাথে মেলে এমন সমস্যাগুলো অনুসন্ধান করতে পারেন।

  • যখন আপনি কনসোলে কোনো নির্দিষ্ট সমস্যা পর্যালোচনা করছেন, তখন আপনি প্রতিটি ইভেন্টের সাথে সম্পর্কিত কাস্টম কীগুলো দেখতে পারেন ( কীজ সাবট্যাব) এবং এমনকি কাস্টম কী দ্বারা ইভেন্টগুলো ফিল্টারও করতে পারেন (পৃষ্ঠার শীর্ষে থাকা ফিল্টার মেনু)।

একাধিকবার কল করা হলে, বিদ্যমান কী-গুলির জন্য নতুন মানগুলি ভ্যালুটিকে আপডেট করবে, এবং ক্র্যাশ রেকর্ড করার সময় শুধুমাত্র সর্বশেষ ভ্যালুটিই ধারণ করা হয়।

Crashlytics.SetCustomKey(string key, string value);

কাস্টম লগ বার্তা যোগ করুন

কোনো ক্র্যাশের আগের ঘটনাগুলো সম্পর্কে আরও ভালোভাবে বোঝার জন্য, আপনি আপনার অ্যাপে কাস্টম Crashlytics লগ যোগ করতে পারেন। Crashlytics এই লগগুলোকে আপনার ক্র্যাশ ডেটার সাথে সংযুক্ত করে এবং যখন আপনি কোনো ইস্যুর বিস্তারিত দেখেন, তখন সেগুলোকে 'লগস' ট্যাবে প্রদর্শন করে ( Firebase কনসোলের 'ডেভঅপ্স অ্যান্ড এনগেজমেন্ট > Crashlytics ড্যাশবোর্ডে আপনার সমস্ত ইস্যু দেখতে পারেন)।

Crashlytics.Log(string message);

ব্যবহারকারী শনাক্তকারী সেট করুন

আপনি আপনার অ্যাপ্লিকেশনের শেষ ব্যবহারকারীকে তাদের কোনো ব্যক্তিগত তথ্য প্রকাশ বা প্রেরণ না করেই অনন্যভাবে শনাক্ত করতে একটি আইডি নম্বর, টোকেন বা হ্যাশ করা মান ব্যবহার করতে পারেন। আপনি এটিকে একটি ফাঁকা স্ট্রিং-এ সেট করে মানটি মুছেও ফেলতে পারেন। Firebase কনসোলের DevOps & Engagement > Crashlytics ড্যাশবোর্ডে কোনো নির্দিষ্ট ক্র্যাশ দেখার সময় এই মানটি প্রদর্শিত হয়।

Crashlytics.SetUserId(string identifier);

ব্রেডক্রাম্ব লগ পান

কোনো ক্র্যাশ, নন-ফেটাল বা এএনআর ইভেন্টের আগে একজন ব্যবহারকারী আপনার অ্যাপের সাথে কী ধরনের ইন্টারঅ্যাকশন করেছেন, তা ব্রেডক্রাম্ব লগ থেকে আরও ভালোভাবে বোঝা যায়। কোনো সমস্যা পুনরুৎপাদন এবং ডিবাগ করার সময় এই লগগুলো সহায়ক হতে পারে।

ব্রেডক্রাম্ব লগ গুগল অ্যানালিটিক্স দ্বারা চালিত হয়, তাই ব্রেডক্রাম্ব লগ পেতে হলে আপনাকে আপনার ফায়ারবেস প্রোজেক্টের জন্য গুগল অ্যানালিটিক্স সক্রিয় করতে হবে এবং আপনার অ্যাপে Google Analytics জন্য ফায়ারবেস এসডিকে (SDK) যোগ করতে হবে । এই শর্তগুলো পূরণ হয়ে গেলে, আপনি যখন কোনো ইস্যুর বিস্তারিত দেখবেন, তখন লগস ট্যাবের মধ্যে ইভেন্টের ডেটার সাথে ব্রেডক্রাম্ব লগ স্বয়ংক্রিয়ভাবে যুক্ত হয়ে যাবে ( Firebase কনসোলের DevOps & Engagement > Crashlytics ড্যাশবোর্ডে আপনার সমস্ত ইস্যু দেখতে পাবেন)।

Analytics এসডিকে স্বয়ংক্রিয়ভাবে ` screen_view ইভেন্টটি লগ করে , যা ব্রেডক্রাম্ব লগ-কে ক্র্যাশ, নন-ফেটাল বা এএনআর ইভেন্টের আগে দেখা স্ক্রিনগুলির একটি তালিকা দেখাতে সক্ষম করে। একটি screen_view ব্রেডক্রাম্ব লগে একটি firebase_screen_class প্যারামিটার থাকে।

ব্যবহারকারীর সেশনের মধ্যে আপনি ম্যানুয়ালি লগ করা যেকোনো কাস্টম ইভেন্ট , ইভেন্টের প্যারামিটার ডেটা সহ, ব্রেডক্রাম্ব লগে যুক্ত হয়। এই ডেটা একটি ক্র্যাশ, নন-ফেটাল বা এএনআর ইভেন্টের দিকে পরিচালিত ব্যবহারকারীর ধারাবাহিক কার্যকলাপ দেখাতে সাহায্য করতে পারে।

মনে রাখবেন যে আপনি Google Analytics ডেটার সংগ্রহ এবং ব্যবহার নিয়ন্ত্রণ করতে পারেন, যার মধ্যে ব্রেডক্রাম্ব লগ পূরণকারী ডেটাও অন্তর্ভুক্ত।

অপ্ট-ইন রিপোর্টিং সক্ষম করুন

ডিফল্টরূপে, Crashlytics স্বয়ংক্রিয়ভাবে আপনার অ্যাপের সকল ব্যবহারকারীর জন্য ক্র্যাশ রিপোর্ট সংগ্রহ করে। ব্যবহারকারীদের ক্র্যাশ রিপোর্ট করার জন্য সম্মতি জানানোর সুযোগ দিয়ে, আপনি তাদের পাঠানো ডেটার উপর আরও বেশি নিয়ন্ত্রণ দিতে পারেন।

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

Crashlytics.IsCrashlyticsCollectionEnabled = true

যদি ব্যবহারকারী পরবর্তীতে ডেটা সংগ্রহ থেকে বিরত থাকেন, তাহলে আপনি ওভাররাইড ভ্যালু হিসেবে false পাস করতে পারেন, যা ব্যবহারকারী পরবর্তীবার অ্যাপটি চালু করার সময় প্রযোজ্য হবে এবং সেই ব্যবহারকারীর জন্য এর পরের সমস্ত লঞ্চ জুড়ে স্থায়ী থাকবে।

ক্র্যাশ ইনসাইটস ডেটা পরিচালনা করুন

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

ক্র্যাশ ইনসাইটস সাধারণ স্থিতিশীলতার প্রবণতা শনাক্ত করতে একত্রিত ক্র্যাশ ডেটা ব্যবহার করে। আপনি যদি আপনার অ্যাপের ডেটা শেয়ার করতে না চান, তাহলে Firebase কনসোলের DevOps & Engagement > Crashlytics ড্যাশবোর্ডে ইস্যু তালিকার শীর্ষে থাকা ক্র্যাশ ইনসাইটস মেনু থেকে এটি ব্যবহার করা থেকে বিরত থাকতে পারেন।

পরবর্তী পদক্ষেপ