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

আপনার ফায়ারবেস ক্র্যাশলাইটিক্স ক্র্যাশ প্রতিবেদনগুলি কাস্টমাইজ করুন

Firebase Crashlytics SDK ব্যবহার করে কিভাবে আপনার ক্র্যাশ রিপোর্ট কাস্টমাইজ করা যায় তা এই গাইডটি বর্ণনা করে। ডিফল্টরূপে, Crashlytics স্বয়ংক্রিয়ভাবে ক্র্যাশ প্রতিবেদনগুলি সব আপনার অ্যাপ্লিকেশনের ব্যবহারকারীরা (আপনি স্বয়ংক্রিয় ক্র্যাশ প্রতিবেদন বন্ধ করুন এবং করতে সংগ্রহ প্রতিবেদন অপ্ট-সক্ষম পরিবর্তে আপনার ব্যবহারকারীদের জন্য)। : Crashlytics বাক্সের বাইরে চার লগিং মেকানিজম উপলব্ধ কাস্টম কী , কাস্টম লগ , ব্যবহারকারী শনাক্তকারী , এবং ধরা ব্যতিক্রম

কাস্টম কী যুক্ত করুন

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

  • ইন Crashlytics ড্যাশবোর্ড , আপনি যে সমস্ত কারণে কোনো কাস্টম কী মেলে অনুসন্ধান করতে পারেন।
  • আপনি কনসোলে একটি নির্দিষ্ট ইস্যু পর্যালোচনা করছি, তখন আপনি প্রতিটি ইভেন্টের (কী সাব-ট্যাব) এবং এমনকি কাস্টম কী দ্বারা ঘটনা ফিল্টার (পৃষ্ঠার উপরের ফিল্টার মেনু) জন্য উপস্থিত নিজস্ব কী দেখতে পারেন।

ব্যবহার করুন setCustomValue সেট কী / মান জোড়া জন্য পদ্ধতি। উদাহরণ স্বরূপ:

সুইফট

// Set int_key to 100.
Crashlytics.crashlytics().setCustomValue(100, forKey: "int_key")

// Set str_key to "hello".
Crashlytics.crashlytics().setCustomValue("hello", forKey: "str_key")

উদ্দেশ্য গ

ইন্টিজারের, Booleans, অথবা ভাসে সেটিং, বাক্স যেমন মান @( value )

// Set int_key to 100.
[[FIRCrashlytics crashlytics] setCustomValue:@(100) forKey:@"int_key"];

// Set str_key to "hello".
[[FIRCrashlytics crashlytics] setCustomValue:@"hello" forKey:@"str_key"];

আপনি একটি বিদ্যমান কী এর মান পরিবর্তন করতে পারেন কীটি কল করে এবং এটি একটি ভিন্ন মান সেট করে। উদাহরণ স্বরূপ:

সুইফট

Crashlytics.crashlytics().setCustomValue(100, forKey: "int_key")

// Set int_key to 50 from 100.
Crashlytics.crashlytics().setCustomValue(50, forKey: "int_key")

উদ্দেশ্য গ

[[FIRCrashlytics crashlytics] setCustomValue:@(100) forKey:@"int_key"];

// Set int_key to 50 from 100.
[[FIRCrashlytics crashlytics] setCustomValue:@(50) forKey:@"int_key"];

ব্যবহার করে বাল্ক মধ্যে কী / মান জোড়া যোগ setCustomKeysAndValues শুধুমাত্র প্যারামিটার হিসাবে একটি NSDictionary সঙ্গে পদ্ধতি:

সুইফট

let keysAndValues = [
                 "string key" : "string value",
                 "string key 2" : "string value 2",
                 "boolean key" : true,
                 "boolean key 2" : false,
                 "float key" : 1.01,
                 "float key 2" : 2.02
                ] as [String : Any]

Crashlytics.crashlytics().setCustomKeysAndValues(keysAndValues)

উদ্দেশ্য গ

NSDictionary *keysAndValues =
    @{@"string key" : @"string value",
      @"string key 2" : @"string value 2",
      @"boolean key" : @(YES),
      @"boolean key 2" : @(NO),
      @"float key" : @(1.01),
      @"float key 2" : @(2.02)};

[[FIRCrashlytics crashlytics] setCustomKeysAndValues: keysAndValues];

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

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

সুইফট

ব্যবহারের log() বা log(format:, arguments:) সাহায্যের পিনপয়েন্ট সমস্যার। আপনাকে বার্তা সঙ্গে একটি দরকারী লগ আউটপুট পেতে চান, বস্তুর আপনাকে পাস যে log() পালন করতে হবে CustomStringConvertible সম্পত্তি। log() বর্ণনা সম্পত্তি আপনি বস্তুর জন্য সংজ্ঞায়িত ফেরৎ। উদাহরণ স্বরূপ:

Crashlytics.crashlytics().log("Higgs-Boson detected! Bailing out…, \(attributesDict)")

.log(format:, arguments:) ফরম্যাটের মান কলিং থেকে প্রত্যাগত getVaList() । উদাহরণ স্বরূপ:

Crashlytics.crashlytics().log(format: "%@, %@", arguments: getVaList(["Higgs-Boson detected! Bailing out…", attributesDict]))

কিভাবে ব্যবহার করতে অধিক বিবরণের জন্য log() বা log(format:, arguments:) , Crashlytics পড়ুন রেফারেন্স ডকুমেন্টেশন

উদ্দেশ্য গ

ব্যবহারের log বা logWithFormat সাহায্যের পিনপয়েন্ট সমস্যার। মনে রাখবেন যে, আপনাকে বার্তা সঙ্গে একটি দরকারী লগ আউটপুট পেতে চান, বস্তু আপনি হয় পদ্ধতি পাস ওভাররাইড আবশ্যক description উদাহরণস্বরূপ সম্পত্তি। উদাহরণ স্বরূপ:

[[FIRCrashlytics crashlytics] log:@"Simple string message"];

[[FIRCrashlytics crashlytics] logWithFormat:@"Higgs-Boson detected! Bailing out... %@", attributesDict];

[[FIRCrashlytics crashlytics] logWithFormat:@"Logging a variable argument list %@" arguments:va_list_arg];

কিভাবে ব্যবহার করতে অধিক বিবরণের জন্য log এবং logWithFormat , Crashlytics পড়ুন রেফারেন্স ডকুমেন্টেশন

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

একটি সমস্যা নির্ণয়ের জন্য, আপনার ব্যবহারকারীদের মধ্যে কোনটি প্রদত্ত ক্র্যাশের সম্মুখীন হয়েছে তা জানা প্রায়শই সহায়ক। Crashlytics আপনার ক্র্যাশ রিপোর্টে বেনামে ব্যবহারকারীদের চিহ্নিত করার একটি উপায় অন্তর্ভুক্ত করে।

আপনার রিপোর্টে ইউজার আইডি যোগ করতে, প্রতিটি ব্যবহারকারীকে একটি আইডি নম্বর, টোকেন বা হ্যাশ মান আকারে একটি অনন্য শনাক্তকারী প্রদান করুন:

সুইফট

Crashlytics.crashlytics().setUserID("123456789")

উদ্দেশ্য গ

[[FIRCrashlytics crashlytics] setUserID:@"123456789"];

আপনি যদি এটি সেট করার পরে কখনও কোনও ব্যবহারকারী শনাক্তকারী পরিষ্কার করতে চান, তাহলে একটি ফাঁকা স্ট্রিংতে মানটি পুনরায় সেট করুন। একটি ব্যবহারকারী শনাক্তকারী সাফ করা বিদ্যমান Crashlytics রেকর্ডগুলি সরিয়ে দেয় না। আপনি যদি একটি ইউজার আইডি সঙ্গে যুক্ত রেকর্ড মোছার প্রয়োজন তাহলে যোগাযোগ Firebase সমর্থন

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

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

আপনি রেকর্ডিং দ্বারা অ মারাত্মক ব্যতিক্রম রেকর্ড করতে NSError অবজেক্টের recordError পদ্ধতি। recordError কল করে থ্রেড কল স্ট্যাক ধারন [NSThread callStackReturnAddresses]

সুইফট

Crashlytics.crashlytics().record(error: error)

উদ্দেশ্য গ

[[FIRCrashlytics crashlytics] recordError:error];

ব্যবহার করার সময় recordError পদ্ধতি, এটা বোঝা গুরুত্বপূর্ণ NSError গঠন এবং কিভাবে Crashlytics গ্রুপ বিপর্যস্ত ডেটা ব্যবহার করে। ভুল ব্যবহার recordError পদ্ধতি অনির্দেশ্য আচরণ হতে পারে এবং আপনার অ্যাপের জন্য লগ ত্রুটি প্রতিবেদন সীমা Crashlytics হতে পারে।

একটি NSError বস্তুর তিন আর্গুমেন্ট আছে:

  • domain: String
  • code: Int
  • userInfo: [AnyHashable : Any]? = nil

মারাত্মক ক্র্যাশ, যা স্ট্যাক ট্রেস বিশ্লেষণ মাধ্যমে গোষ্ঠীবদ্ধ করে ভিন্ন লগ ত্রুটি দ্বারা গ্রুপকৃত হয় domain এবং code । এটি মারাত্মক ক্র্যাশ এবং লগ করা ত্রুটির মধ্যে একটি গুরুত্বপূর্ণ পার্থক্য। উদাহরণ স্বরূপ:

সুইফট

let userInfo = [
  NSLocalizedDescriptionKey: NSLocalizedString("The request failed.", comment: ""),
  NSLocalizedFailureReasonErrorKey: NSLocalizedString("The response returned a 404.", comment: ""),
  NSLocalizedRecoverySuggestionErrorKey: NSLocalizedString("Does this page exist?", comment: ""),
  "ProductID": "123456",
  "View": "MainView"
]

let error = NSError.init(domain: NSCocoaErrorDomain,
                         code: -1001,
                         userInfo: userInfo)

উদ্দেশ্য গ

NSDictionary *userInfo = @{
  NSLocalizedDescriptionKey: NSLocalizedString(@"The request failed.", nil),
  NSLocalizedFailureReasonErrorKey: NSLocalizedString(@"The response returned a 404.", nil),
  NSLocalizedRecoverySuggestionErrorKey: NSLocalizedString(@"Does this page exist?", nil),
  @"ProductID": @"123456",
  @"View": @"MainView",
};

NSError *error = [NSError errorWithDomain:NSCocoaErrorDomain
                                     code:-1001
                                 userInfo:userInfo];

যখন আপনি ত্রুটি উপরে লগ ইন করুন, এটি একটি নতুন বিষয় যে দলবদ্ধ করা হয় সৃষ্টি NSSomeErrorDomain এবং -1001 । একই ডোমেন এবং কোড মান ব্যবহার করে অতিরিক্ত লগ করা ত্রুটিগুলি একই সমস্যার অধীনে গোষ্ঠীভুক্ত করা হয়। তথ্য উপস্থিত মধ্যে userInfo বস্তুর কী-মান জোড়া রূপান্তরিত করা হয় এবং চাবি প্রদর্শিত / একজন ব্যক্তি ইস্যু মধ্যে অধ্যায় লগ করা হয়।

লগ এবং কাস্টম কী

শুধু ক্র্যাশ প্রতিবেদনগুলি মতো, আপনি এম্বেড করতে পারেন লগ এবং কাস্টম কী প্রসঙ্গ যোগ করার জন্য NSError । যাইহোক, কোন লগগুলি ক্র্যাশ বনাম লগ করা ত্রুটির সাথে সংযুক্ত রয়েছে তার মধ্যে একটি পার্থক্য রয়েছে। যখন একটি ক্র্যাশ ঘটে এবং অ্যাপটি পুনরায় চালু করা হয়, ক্র্যাশলাইটিক্স ডিস্ক থেকে পুনরুদ্ধার করা হয় যেগুলি ক্র্যাশের সময় পর্যন্ত লেখা হয়েছিল। যখন আপনি কোনো লগ ইন করুন NSError , অ্যাপ্লিকেশন অবিলম্বে বিনষ্ট করেন না। Crashlytics শুধুমাত্র পরবর্তী অ্যাপ্লিকেশানটি লঞ্চ লগ ত্রুটি প্রতিবেদন পাঠায় এবং ডিস্কে লগ জন্য বরাদ্দ স্থানের পরিমাণ সীমিত নয় কারণ, এটা যথেষ্ট লগ ইন করার পর একটি সম্ভব NSError তাই নথিভুক্ত করা হয় যে সমস্ত প্রাসঙ্গিক লগ সময় Crashlytics পাঠায় দ্বারা আবর্তিত হয় ডিভাইস থেকে রিপোর্ট। যখন লগ-ইন মনের মধ্যে এই ভারসাম্য রাখুন NSErrors এবং আপনার অ্যাপে লগ এবং কাস্টম কী ব্যবহার করে।

কর্মক্ষমতা বিবেচনা

মনে রাখবেন যে একটি লগ-ইন NSError মোটামুটি ব্যয়বহুল হতে পারে। আপনি কল করার সময়, ক্র্যাশলাইটিক্স স্ট্যাক আনওয়াইন্ডিং নামক একটি প্রক্রিয়া ব্যবহার করে বর্তমান থ্রেডের কল স্ট্যাক ক্যাপচার করে। এই প্রক্রিয়াটি CPU এবং I/O নিবিড় হতে পারে, বিশেষ করে আর্কিটেকচারের উপর যা DWARF অনিশ্চিত সমর্থন করে (arm64 এবং x86)। অনিশ্চিত হওয়ার পরে, তথ্যটি সিঙ্ক্রোনাসভাবে ডিস্কে লেখা হয়। যদি পরবর্তী লাইনটি ক্র্যাশ হয় তবে এটি ডেটা ক্ষতি রোধ করে।

যদিও এই এপিআইটিকে ব্যাকগ্রাউন্ড থ্রেডে কল করা নিরাপদ, মনে রাখবেন যে এই কলটিকে অন্য সারিতে প্রেরণ করা বর্তমান স্ট্যাক ট্রেসের প্রসঙ্গ হারায়।

NSExceptions সম্পর্কে কি?

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

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

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

  1. আপনার জন্য একটি নতুন কী যোগ করে স্বয়ংক্রিয় সংগ্রহে বন্ধ করুন Info.plist ফাইল:

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

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

    সুইফট

    Crashlytics.crashlytics().setCrashlyticsCollectionEnabled(true)

    উদ্দেশ্য গ

    [[FIRCrashlytics crashlytics] setCrashlyticsCollectionEnabled:YES];

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

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

ক্র্যাশ অন্তর্দৃষ্টি সাধারণ স্থিতিশীলতা প্রবণতা সনাক্ত করতে সমষ্টিগত ক্র্যাশ ডেটা ব্যবহার করে। আপনি আপনার অ্যাপ্লিকেশনের ডেটা ভাগ পছন্দ না করেন, তাহলে আপনি আপনার Crashlytics ইস্যু তালিকার শীর্ষে ক্র্যাশ অন্তর্দৃষ্টি মেনু থেকে ক্র্যাশ অর্ন্তদৃষ্টি অনির্বাচন করতে Firebase কনসোল