می توانید داده های Firebase Crashlytics خود را برای تجزیه و تحلیل بیشتر به BigQuery صادر کنید. BigQuery به شما امکان میدهد دادهها را با استفاده از BigQuery SQL تجزیه و تحلیل کنید، آنها را به یک ارائهدهنده ابر دیگر صادر کنید و از آن برای تجسم و داشبوردهای سفارشی با Google Data Studio استفاده کنید.
صادرات به BigQuery را فعال کنید
در کنسول Firebase ، به صفحه ادغام بروید.
در کارت BigQuery ، روی پیوند کلیک کنید.
دستورالعمل های روی صفحه را دنبال کنید تا صادرات به BigQuery را فعال کنید.
اگر میخواهید تقریباً به دادههای Crashlytics خود در BigQuery دسترسی بیدرنگ داشته باشید، پس ارتقاء را به صادرات جریانی در نظر بگیرید.
وقتی صادرات را فعال می کنید چه اتفاقی می افتد؟
شما مکان مجموعه داده را انتخاب می کنید. پس از ایجاد مجموعه داده، مکان را نمی توان تغییر داد، اما می توانید مجموعه داده را در مکان دیگری کپی کنید یا به صورت دستی مجموعه داده را در مکان دیگری منتقل کنید (بازآفرینی کنید). برای کسب اطلاعات بیشتر، به تغییر مکان برای صادرات موجود مراجعه کنید.
این مکان فقط برای دادههای صادر شده به BigQuery قابل اجرا است و بر مکان دادههای ذخیرهشده برای استفاده در داشبورد Crashlytics کنسول Firebase یا در Android Studio تأثیری نمیگذارد.
بهطور پیشفرض، همه برنامههای پروژه شما به BigQuery مرتبط میشوند و هر برنامهای که بعداً به پروژه اضافه میکنید بهطور خودکار به BigQuery مرتبط میشود. میتوانید مدیریت کنید که کدام برنامهها دادهها را ارسال میکنند .
Firebase همگامسازی روزانه دادههای شما را با BigQuery تنظیم میکند.
پس از اینکه پروژه خود را پیوند دادید، معمولاً باید منتظر بمانید تا روز بعد همگام سازی شود تا اولین مجموعه داده شما به BigQuery صادر شود.
همگامسازی روزانه یکبار در روز انجام میشود، صرفنظر از صادرات برنامهریزیشدهای که ممکن است در BigQuery تنظیم کرده باشید. توجه داشته باشید که زمان و مدت زمان کار همگامسازی میتواند تغییر کند، بنابراین ما برنامهریزی عملیات پایین دستی یا کارهای بر اساس زمانبندی خاص صادرات را توصیه نمیکنیم.
Firebase یک کپی از داده های موجود شما را به BigQuery صادر می کند. انتشار اولیه داده ها برای صادرات ممکن است تا 48 ساعت طول بکشد.
برای هر برنامه پیوند داده شده، این صادرات شامل یک جدول دستهای است که حاوی دادههای همگامسازی روزانه است.
میتوانید بهصورت دستی پر کردن دادهها را برای جدول دستهای تا 30 روز گذشته یا برای آخرین تاریخی که صادرات به BigQuery را فعال کردهاید (هر کدام جدیدترین باشد) زمانبندی کنید.
توجه داشته باشید که اگر صادرات دادههای Crashlytics را قبل از اواسط اکتبر 2024 فعال کرده باشید، میتوانید 30 روز قبل از روزی که صادرات را فعال کردهاید پر کنید.
اگر صادرات جریان Crashlytics به BigQuery را فعال کنید، همه برنامههای پیوند داده شده نیز یک جدول بیدرنگ حاوی دادههایی که دائماً بهروزرسانی میشوند، خواهند داشت.
برای غیرفعال کردن صادرات به BigQuery ، پیوند پروژه خود را در کنسول Firebase لغو کنید.
چه داده هایی به BigQuery صادر می شود؟
داده های Firebase Crashlytics به یک مجموعه داده BigQuery به نام firebase_crashlytics
صادر می شود. بهطور پیشفرض، جداول جداگانه در مجموعه دادههای Crashlytics برای هر برنامه در پروژه شما ایجاد میشود. Firebase جداول را بر اساس شناسه برنامه نامگذاری میکند و نقطهها به زیرخط تبدیل میشوند و یک نام پلتفرم به انتها اضافه میشود.
به عنوان مثال، دادههای یک برنامه Android با نام بسته com.google.test
در جدولی به نام com_google_test_ANDROID
وجود دارد. این جدول دسته ای هر روز یک بار به روز می شود. اگر صادرات پخش جریانی Crashlytics به BigQuery را فعال کنید، دادههای Crashlytics نیز به صورت بلادرنگ در جدولی به نام com_google_test_ANDROID_REALTIME
پخش میشوند.
هر ردیف در جدول نشان دهنده رویدادی است که در برنامه رخ داده است، از جمله خرابی ها، خطاهای غیر کشنده و ANR.
صادرات جریان Crashlytics به BigQuery
میتوانید دادههای Crashlytics خود را بهصورت همزمان با پخش جریانی BigQuery پخش کنید. میتوانید از آن برای هر هدفی که به دادههای زنده نیاز دارد، استفاده کنید، مانند ارائه اطلاعات در داشبورد زنده، تماشای پخش زنده، یا نظارت بر مشکلات برنامهای که هشدارها و گردشهای کاری سفارشی را ایجاد میکنند.
وقتی صادرات جریان Crashlytics به BigQuery را فعال میکنید، علاوه بر جدول دستهای، یک جدول بیدرنگ نیز خواهید داشت. در اینجا تفاوت هایی وجود دارد که باید بین جداول از آنها آگاه باشید:
میز دسته ای | جدول بیدرنگ |
---|---|
|
|
جدول دسته ای برای تجزیه و تحلیل طولانی مدت و شناسایی روندها در طول زمان ایده آل است، زیرا ما رویدادها را قبل از نوشتن آنها به طور بادوام ذخیره می کنیم و می توان آنها را تا 30 روز روی جدول پر کرد*. وقتی داده ها را در جدول بیدرنگ شما می نویسیم، بلافاصله آن را در BigQuery می نویسیم و بنابراین برای داشبوردهای زنده و هشدارهای سفارشی ایده آل است. این دو جدول را می توان با یک جستجوی دوخت ترکیب کرد تا از مزایای هر دو بهره مند شود.
بهطور پیشفرض، جدول Realtime زمان انقضای پارتیشن 30 روزه دارد. برای یادگیری نحوه تغییر این، به تنظیم انقضای پارتیشن در مستندات BigQuery مراجعه کنید.
* جزئیات مربوط به پشتیبانی از پر کردن را در ارتقا به زیرساخت صادرات جدید مشاهده کنید.
صادرات جریان Crashlytics به BigQuery را فعال کنید
در کنسول Firebase ، به صفحه ادغام بروید.
در کارت BigQuery ، روی مدیریت کلیک کنید.
چک باکس Include streaming را انتخاب کنید.
این عملکرد پخش جریانی را برای همه برنامههای پیوند داده شده شما فعال میکند.
مطمئن شوید که حداقل دو رویداد از برنامه خود به Crashlytics ارسال کرده اید و پس از ارسال آنها چند دقیقه صبر کرده اید.
مطمئن شوید که پروژه Firebase شما در طرح قیمتگذاری Blaze است.
میتوانید با نگاه کردن به گوشه سمت چپ پایین کنسول Firebase این موضوع را بررسی کنید.اگر پس از ارسال دو رویداد و چند دقیقه انتظار، هنوز هیچ داده ای در جدول بیدرنگ شما وجود ندارد:
به کارت BigQuery در کنسول Firebase بروید.
غیرفعال کردن و سپس فعال کردن مجدد صادرات جریان.
از حساب سرویس مطمئن شوید
service- PROJECT_NUMBER @gcp-sa-crashlytics.iam.gserviceaccount.com
در پروژه Firebase شما است و نقش Firebase Crashlytics Service Agent را دارد.
میتوانید این مورد را در صفحه IAM کنسول Google Cloud بررسی کنید (حتماً کادر انتخاب شامل کمکهای نقش ارائهشده توسط Google را انتخاب کنید).حداقل دو رویداد را به Crashlytics ارسال کنید و چند دقیقه صبر کنید.
اگر هنوز دادهها را در جدول بیدرنگ خود نمیبینید، با پشتیبانی Firebase تماس بگیرید .
با داده های صادر شده چه کاری می توانید انجام دهید؟
صادرات به BigQuery حاوی دادههای خرابی خام از جمله نوع دستگاه، سیستم عامل، استثناها (برنامههای Android) یا خطاها (برنامههای اپل) و گزارشهای Crashlytics و همچنین دادههای دیگر است.
دقیقاً چه دادههای Crashlytics صادر شده و طرح جدول آن را در ادامه این صفحه مرور کنید.
از قالب Data Studio استفاده کنید
برای فعال کردن دادههای بیدرنگ در قالب Data Studio خود، دستورالعملهای موجود در Visualizing Crashlytics صادر شده با Data Studio را دنبال کنید.
ایجاد نماها
با استفاده از رابط کاربری BigQuery می توانید پرس و جوها را به نما تبدیل کنید. برای دستورالعمل های دقیق، به ایجاد نماها در مستندات BigQuery مراجعه کنید.
کوئری ها را اجرا کنید
مثالهای زیر جستوجوهایی را نشان میدهند که میتوانید روی دادههای Crashlytics خود اجرا کنید تا گزارشهایی تولید کنید که دادههای رویداد خرابی را در خلاصههای قابل فهمتر جمعآوری میکند. از آنجایی که این نوع گزارشها در داشبورد Crashlytics کنسول Firebase در دسترس نیستند، میتوانند تجزیه و تحلیل و درک شما از دادههای خرابی را تکمیل کنند.
مثال 1: خرابی در روز
پس از تلاش برای رفع هر چه بیشتر باگهای ممکن، فکر میکنید تیم شما بالاخره آماده است تا برنامه جدید اشتراکگذاری عکس شما را راهاندازی کند. قبل از اینکه این کار را انجام دهید، میخواهید تعداد خرابیهای ماه گذشته در روز را بررسی کنید تا مطمئن شوید که bug-bash برنامه را در طول زمان پایدارتر کرده است.
در اینجا یک نمونه پرس و جو برای یک برنامه اندروید آمده است. برای یک برنامه iOS، از ID بسته و IOS
آن (به جای نام بسته و ANDROID
) استفاده کنید.
SELECT COUNT(DISTINCT event_id) AS number_of_crashes, FORMAT_TIMESTAMP("%F", event_timestamp) AS date_of_crashes FROM `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID` GROUP BY date_of_crashes ORDER BY date_of_crashes DESC LIMIT 30;
مثال 2: فراگیرترین خرابی ها را پیدا کنید
برای اولویتبندی صحیح برنامههای تولید، میخواهید 10 خرابی برتر را در برنامه خود پیدا کنید. شما یک پرس و جو تولید می کنید که نقاط مربوط به داده ها را ارائه می دهد.
در اینجا یک نمونه پرس و جو برای یک برنامه اندروید آمده است. برای یک برنامه iOS، از ID بسته و IOS
آن (به جای نام بسته و ANDROID
) استفاده کنید.
SELECT DISTINCT issue_id, COUNT(DISTINCT event_id) AS number_of_crashes, COUNT(DISTINCT installation_uuid) AS number_of_impacted_user, blame_frame.file, blame_frame.line FROM `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID` WHERE event_timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(),INTERVAL 168 HOUR) AND event_timestamp < CURRENT_TIMESTAMP() GROUP BY issue_id, blame_frame.file, blame_frame.line ORDER BY number_of_crashes DESC LIMIT 10;
مثال 3: 10 دستگاه برتر خراب
پاییز فصل جدید گوشی است! شرکت شما میداند که این به این معنی است که فصل جدید مشکلات مربوط به دستگاه است - مخصوصاً برای Android. برای پیشی گرفتن از نگرانیهای احتمالی مربوط به سازگاری، پرس و جوی را جمعآوری میکنید که 10 دستگاهی را که بیشترین خرابیها را در هفته گذشته (168 ساعت) تجربه کردهاند، شناسایی میکند.
در اینجا یک نمونه پرس و جو برای یک برنامه اندروید آمده است. برای یک برنامه iOS، از ID بسته و IOS
آن (به جای نام بسته و ANDROID
) استفاده کنید.
SELECT device.model, COUNT(DISTINCT event_id) AS number_of_crashes FROM `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID` WHERE event_timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 168 HOUR) AND event_timestamp < CURRENT_TIMESTAMP() GROUP BY device.model ORDER BY number_of_crashes DESC LIMIT 10;
مثال 4: با کلید سفارشی فیلتر کنید
شما یک توسعه دهنده بازی هستید که می خواهید بدانید کدام سطح از بازی شما بیشترین خرابی ها را تجربه می کند.
برای کمک به ردیابی این آمار، یک کلید Crashlytics سفارشی به نام current_level
تنظیم میکنید و هر بار که کاربر به سطح جدیدی میرسد، آن را بهروزرسانی میکنید.
سویفت
Crashlytics.sharedInstance().setIntValue(3, forKey: "current_level");
هدف-C
CrashlyticsKit setIntValue:3 forKey:@"current_level";
جاوا
Crashlytics.setInt("current_level", 3);
با استفاده از آن کلید در صادرات خود به BigQuery ، سپس می توانید یک پرس و جو بنویسید تا توزیع مقادیر current_level
مرتبط با هر رویداد خرابی را گزارش کنید.
در اینجا یک نمونه پرس و جو برای یک برنامه اندروید آمده است. برای یک برنامه iOS، از ID بسته و IOS
آن (به جای نام بسته و ANDROID
) استفاده کنید.
SELECT
COUNT(DISTINCT event_id) AS num_of_crashes,
value
FROM
`PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID`
UNNEST(custom_keys)
WHERE
key = "current_level"
GROUP BY
key,
value
ORDER BY
num_of_crashes DESC
مثال 5: استخراج شناسه کاربری
شما یک برنامه اندروید در دسترسی اولیه دارید. اکثر کاربران شما آن را دوست دارند، اما سه نفر تعداد غیرعادی خرابی را تجربه کرده اند. برای رسیدن به ته مشکل، یک پرس و جو می نویسید که با استفاده از شناسه کاربری آن ها، تمام رویدادهای خرابی را برای آن کاربران نشان می دهد.
در اینجا یک نمونه پرس و جو برای یک برنامه اندروید آمده است. برای یک برنامه iOS، از ID بسته و IOS
آن (به جای نام بسته و ANDROID
) استفاده کنید.
SELECT *
FROM
`PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID`
WHERE
user.id IN ("USER_ID_1", "USER_ID_2", "USER_ID_3")
ORDER BY
user.id
مثال 6: همه کاربرانی که با مشکل خرابی خاصی مواجه هستند را پیدا کنید
تیم شما به طور تصادفی یک باگ مهم را برای گروهی از آزمایشکنندگان بتا منتشر کرده است. تیم شما توانست از عبارت «یافتن بیشترین خرابیها» در بالا برای شناسایی شناسه مشکل خرابی خاص استفاده کند. اکنون تیم شما میخواهد برای استخراج لیستی از کاربران برنامه که تحت تأثیر این خرابی قرار گرفتهاند، پرس و جوی اجرا کند.
در اینجا یک نمونه پرس و جو برای یک برنامه اندروید آمده است. برای یک برنامه iOS، از ID بسته و IOS
آن (به جای نام بسته و ANDROID
) استفاده کنید.
SELECT user.id as user_id
FROM
`PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID`
WHERE
issue_id = "ISSUE_ID"
AND application.display_version = "APP_VERSION"
AND user.id != ""
ORDER BY
user.id;
مثال 7: تعداد کاربرانی که تحت تأثیر یک مشکل خرابی قرار گرفته اند، به تفکیک کشور
تیم شما در طول عرضه نسخه جدید یک اشکال مهم را شناسایی کرده است. میتوانید از عبارت «یافتن بیشترین خرابیها» در بالا برای شناسایی شناسه مشکل خرابی خاص استفاده کنید. تیم شما اکنون میخواهد ببیند که آیا این خرابی به کاربران کشورهای مختلف در سراسر جهان سرایت کرده است یا خیر.
برای نوشتن این پرس و جو، تیم شما باید موارد زیر را انجام دهد:
صادرات داده های Google Analytics به BigQuery را فعال کنید. صادرات داده های پروژه به BigQuery را ببینید.
برنامه خود را بهروزرسانی کنید تا شناسه کاربری را هم به Google Analytics SDK و هم در Crashlytics SDK ارسال کنید.
سویفت
Crashlytics.sharedInstance().setUserIdentifier("123456789"); Analytics.setUserID("123456789");
هدف-C
CrashlyticsKit setUserIdentifier:@"123456789"; FIRAnalytics setUserID:@"12345678 9";
جاوا
Crashlytics.setUserIdentifier("123456789"); mFirebaseAnalytics.setUserId("123456789");
درخواستی بنویسید که از فیلد شناسه کاربر برای پیوستن به رویدادهای مجموعه داده Google Analytics با خرابی در مجموعه داده Crashlytics استفاده کند.
در اینجا یک نمونه پرس و جو برای یک برنامه اندروید آمده است. برای یک برنامه iOS، از ID بسته و
IOS
آن (به جای نام بسته وANDROID
) استفاده کنید.SELECT DISTINCT c.issue_id, a.geo.country, COUNT(DISTINCT c.user.id) as num_users_impacted FROM `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID` c INNER JOIN `PROJECT_ID.analytics_TABLE_NAME.events_*` a on c.user.id = a.user_id WHERE c.issue_id = "ISSUE_ID" AND a._TABLE_SUFFIX BETWEEN '20190101' AND '20200101' GROUP BY c.issue_id, a.geo.country, c.user.id
مثال 8: 5 موضوع برتر تا کنون امروز
در اینجا یک نمونه پرس و جو برای یک برنامه اندروید آمده است. برای یک برنامه iOS، از ID بسته و IOS
آن (به جای نام بسته و ANDROID
) استفاده کنید.
SELECT issue_id, COUNT(DISTINCT event_id) AS events FROM `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID_REALTIME` WHERE DATE(event_timestamp) = CURRENT_DATE() GROUP BY issue_id ORDER BY events DESC LIMIT 5;
مثال 9: 5 مورد برتر از DATE، از جمله امروز
شما همچنین می توانید جداول دسته ای و بیدرنگ را با یک جستجوی دوخت ترکیب کنید تا اطلاعات بیدرنگ را به داده های دسته ای قابل اعتماد اضافه کنید. از آنجایی که event_id
یک کلید اصلی است، میتوانید از DISTINCT event_id
برای حذف رویدادهای رایج از دو جدول استفاده کنید.
در اینجا یک نمونه پرس و جو برای یک برنامه اندروید آمده است. برای یک برنامه iOS، از ID بسته و IOS
آن (به جای نام بسته و ANDROID
) استفاده کنید.
SELECT issue_id, COUNT(DISTINCT event_id) AS events FROM ( SELECT issue_id, event_id, event_timestamp FROM `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID_REALTIME` UNION ALL SELECT issue_id, event_id, event_timestamp FROM `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID`) WHERE event_timestamp >= "YYYY_MM_DD" GROUP BY issue_id ORDER BY events DESC LIMIT 5;
طرحواره Crashlytics در BigQuery را درک کنید
وقتی صادرات دادههای Crashlytics را به BigQuery راهاندازی میکنید، Firebase رویدادهای اخیر (خرابها، خطاهای غیرمرگبار، و ANR) را صادر میکند، از جمله رویدادهای حداکثر دو روز قبل از پیوند، با گزینهای برای تکمیل تا 30 روز.
از آن نقطه تا زمانی که صادرات را غیرفعال کنید، Firebase رویدادهای Crashlytics را به صورت روزانه صادر می کند. ممکن است چند دقیقه طول بکشد تا داده ها در BigQuery پس از هر بار صادرات در دسترس قرار گیرند.
مجموعه داده ها
Crashlytics یک مجموعه داده جدید در BigQuery برای داده های Crashlytics ایجاد می کند. مجموعه داده کل پروژه شما را پوشش می دهد، حتی اگر چندین برنامه داشته باشد.
جداول
Crashlytics یک جدول در مجموعه داده برای هر برنامه در پروژه شما ایجاد می کند، مگر اینکه از صادرات داده برای آن برنامه انصراف داده باشید. Firebase جداول را بر اساس شناسه برنامه نامگذاری میکند و نقطهها به زیرخط تبدیل میشوند و یک نام پلتفرم به انتها اضافه میشود.
به عنوان مثال، دادههای یک برنامه Android با نام بسته com.google.test
در جدولی به نام com_google_test_ANDROID
و دادههای بیدرنگ (در صورت فعال بودن) در جدولی به نام com_google_test_ANDROID_REALTIME
قرار خواهند گرفت.
جداول شامل مجموعه استانداردی از داده های Crashlytics علاوه بر کلیدهای Crashlytics سفارشی است که توسط شما در برنامه خود تعریف شده است.
ردیف ها
هر ردیف در جدول نشان دهنده خطایی است که برنامه با آن مواجه شده است.
ستون ها
ستونهای جدول برای خرابیها، خطاهای غیرمرگبار و ANR یکسان هستند. اگر صادرات جریان Crashlytics به BigQuery فعال باشد، جدول بیدرنگ همان ستونهایی را خواهد داشت که جدول دستهای دارد. توجه داشته باشید که ممکن است ستونهایی در ردیفها داشته باشید که نشاندهنده رویدادهایی هستند که ردیابی پشتهای ندارند.
ستون های داخل صادرات در این جدول فهرست شده اند:
نام فیلد | نوع داده | توضیحات |
---|---|---|
platform | STRING | پلت فرم برنامه همانطور که در پروژه Firebase ثبت شده است (مقادیر معتبر: IOS یا ANDROID ) |
bundle_identifier | STRING | شناسه منحصر به فرد برنامه همانطور که در پروژه Firebase ثبت شده است (به عنوان مثال،com.google.gmail )برای برنامه های پلتفرم اپل، این شناسه بسته نرم افزاری است. برای برنامه های اندروید، این نام بسته برنامه است. |
event_id | STRING | شناسه منحصر به فرد رویداد |
is_fatal | بولین | این که آیا برنامه از کار افتاده است |
error_type | STRING | نوع خطای رویداد (به عنوان مثال، FATAL ، NON_FATAL ، ANR ، و غیره) |
issue_id | STRING | موضوع مرتبط با رویداد |
variant_id | STRING | نوع مسئله مرتبط با این رویداد توجه داشته باشید که همه رویدادها دارای یک نوع مشکل مرتبط نیستند. |
event_timestamp | TIMESTAMP | زمانی که واقعه رخ داد |
device | ضبط | دستگاهی که رویداد در آن رخ داده است |
device.manufacturer | STRING | سازنده دستگاه |
device.model | STRING | مدل دستگاه |
device.architecture | STRING | به عنوان مثال، X86_32 ، X86_64 ، ARMV7 ، ARM64 ، ARMV7S ، یا ARMV7K |
memory | ضبط | وضعیت حافظه دستگاه |
memory.used | INT64 | بایت حافظه استفاده شده |
memory.free | INT64 | بایت حافظه باقی مانده است |
storage | ضبط | ذخیره سازی دائمی دستگاه |
storage.used | INT64 | بایت های ذخیره سازی استفاده شده |
storage.free | INT64 | بایت های ذخیره سازی باقی مانده است |
operating_system | ضبط | جزئیات سیستم عامل روی دستگاه |
operating_system.display_version | STRING | نسخه سیستم عامل روی دستگاه |
operating_system.name | STRING | نام سیستم عامل روی دستگاه |
operating_system.modification_state | STRING | این که آیا دستگاه تغییر کرده است یا نه (برای مثال، یک برنامه جیلبریک MODIFIED و یک برنامه روت شده UNMODIFIED است) |
operating_system.type | STRING | (فقط برنامه های اپل) نوع سیستم عامل در حال اجرا بر روی دستگاه (به عنوان مثال، IOS ، MACOS ، و غیره) |
operating_system.device_type | STRING | نوع دستگاه (به عنوان مثال، MOBILE ، TABLET ، TV و غیره)؛ همچنین به عنوان "دسته دستگاه" شناخته می شود |
application | ضبط | برنامه ای که رویداد را ایجاد کرد |
application.build_version | STRING | نسخه ساخت برنامه |
application.display_version | STRING | |
user | ضبط | (اختیاری) اطلاعات جمع آوری شده در مورد کاربر برنامه |
user.name | STRING | (اختیاری) نام کاربر |
user.email | STRING | (اختیاری) آدرس ایمیل کاربر |
user.id | STRING | (اختیاری) شناسه مخصوص برنامه مرتبط با کاربر |
custom_keys | ضبط مکرر | جفت های کلید-مقدار تعریف شده توسط توسعه دهنده |
custom_keys.key | STRING | یک کلید تعریف شده توسط توسعه دهنده |
custom_keys.value | STRING | یک مقدار تعریف شده توسط توسعه دهنده |
installation_uuid | STRING | شناسه ای که نصب یک برنامه و دستگاه منحصر به فرد را مشخص می کند |
crashlytics_sdk_versions | STRING | نسخه Crashlytics SDK که رویداد را ایجاد کرد |
app_orientation | STRING | به عنوان مثال، PORTRAIT ، LANDSCAPE ، FACE_UP ، FACE_DOWN ، و غیره. |
device_orientation | STRING | به عنوان مثال، PORTRAIT ، LANDSCAPE ، FACE_UP ، FACE_DOWN ، و غیره. |
process_state | STRING | BACKGROUND یا FOREGROUND |
logs | ضبط مکرر | پیامهای گزارش مهر زمانی تولید شده توسط Crashlytics Logger، در صورت فعال بودن |
logs.timestamp | TIMESTAMP | زمانی که لاگ ساخته شد |
logs.message | STRING | پیام ثبت شده |
breadcrumbs | ضبط مکرر | در صورت فعال بودن، نان خردههای Google Analytics دارای مهر زمانی است |
breadcrumbs.timestamp | TIMESTAMP | مهر زمانی مرتبط با پودر سوخاری |
breadcrumbs.name | STRING | نام مرتبط با آرد سوخاری |
breadcrumbs.params | ضبط مکرر | پارامترهای مرتبط با پودر سوخاری |
breadcrumbs.params.key | STRING | یک کلید پارامتر مرتبط با پودر سوخاری |
breadcrumbs.params.value | STRING | یک مقدار پارامتر مرتبط با پودر سوخاری |
blame_frame | ضبط | قاب به عنوان علت اصلی خرابی یا خطا شناسایی شده است |
blame_frame.line | INT64 | شماره خط فایل قاب |
blame_frame.file | STRING | نام فایل فریم |
blame_frame.symbol | STRING | نماد هیدراته یا نماد خام در صورتی که غیرقابل آبرسانی باشد |
blame_frame.offset | INT64 | بایت به تصویر باینری که حاوی کد است تغییر می کند برای استثناهای جاوا تنظیم نشده است |
blame_frame.address | INT64 | آدرس موجود در تصویر باینری که حاوی کد است برای فریم های جاوا تنظیم نشده است |
blame_frame.library | STRING | نام نمایشی کتابخانه که شامل قاب است |
blame_frame.owner | STRING | به عنوان مثال، DEVELOPER ، VENDOR ، RUNTIME ، PLATFORM ، یا SYSTEM |
blame_frame.blamed | بولین | آیا Crashlytics تشخیص داده است که این فریم دلیل خرابی یا خطا است |
exceptions | ضبط مکرر | (فقط اندروید) استثناهایی که در طول این رویداد رخ داده است. استثناهای تودرتو به ترتیب زمانی معکوس ارائه می شوند، به این معنی که آخرین رکورد اولین استثنا پرتاب شده است. |
exceptions.type | STRING | نوع استثنا (به عنوان مثال،java.lang.IllegalStateException) |
exceptions.exception_message | STRING | یک پیام مرتبط با استثنا |
exceptions.nested | بولین | درست برای همه به جز آخرین مورد استثنا (به معنی اولین رکورد) |
exceptions.title | STRING | عنوان تاپیک |
exceptions.subtitle | STRING | زیرنویس تاپیک |
exceptions.blamed | بولین | درست است اگر Crashlytics تشخیص دهد که استثنا مسئول خطا یا خرابی است |
exceptions.frames | ضبط مکرر | فریم های مرتبط با استثنا |
exceptions.frames.line | INT64 | شماره خط فایل قاب |
exceptions.frames.file | STRING | نام فایل فریم |
exceptions.frames.symbol | STRING | نماد هیدراته یا نماد خام در صورتی که غیرقابل آبرسانی باشد |
exceptions.frames.offset | INT64 | بایت به تصویر باینری که حاوی کد است تغییر می کند برای استثناهای جاوا تنظیم نشده است |
exceptions.frames.address | INT64 | آدرس موجود در تصویر باینری که حاوی کد است برای فریم های جاوا تنظیم نشده است |
exceptions.frames.library | STRING | نام نمایشی کتابخانه که شامل قاب است |
exceptions.frames.owner | STRING | به عنوان مثال، DEVELOPER ، VENDOR ، RUNTIME ، PLATFORM ، یا SYSTEM |
exceptions.frames.blamed | بولین | آیا Crashlytics تشخیص داده است که این فریم دلیل خرابی یا خطا است |
error | ضبط مکرر | (فقط برنامه های اپل) خطاهای غیر کشنده |
error.queue_name | STRING | صفی که تاپیک در حال اجرا بود |
error.code | INT64 | کد خطا مرتبط با خطای NSE ثبت شده سفارشی برنامه |
error.title | STRING | عنوان تاپیک |
error.subtitle | STRING | زیرنویس تاپیک |
error.blamed | بولین | آیا Crashlytics تشخیص داده است که این فریم دلیل خطا است یا خیر |
error.frames | ضبط مکرر | فریم های stacktrace |
error.frames.line | INT64 | شماره خط فایل قاب |
error.frames.file | STRING | نام فایل فریم |
error.frames.symbol | STRING | نماد هیدراته یا نماد خام در صورتی که غیرقابل آبرسانی باشد |
error.frames.offset | INT64 | بایت به تصویر باینری که حاوی کد است تغییر می کند |
error.frames.address | INT64 | آدرس موجود در تصویر باینری که حاوی کد است |
error.frames.library | STRING | نام نمایشی کتابخانه که شامل قاب است |
error.frames.owner | STRING | به عنوان مثال، DEVELOPER ، VENDOR ، RUNTIME ، PLATFORM ، یا SYSTEM |
error.frames.blamed | بولین | آیا Crashlytics تشخیص داده است که این فریم دلیل خطا است یا خیر |
threads | ضبط مکرر | موضوعات موجود در زمان رویداد |
threads.crashed | بولین | این که آیا نخ خراب شده است |
threads.thread_name | STRING | نام تاپیک |
threads.queue_name | STRING | (فقط برنامه های اپل) صفی که رشته در حال اجرا بود |
threads.signal_name | STRING | نام سیگنالی که باعث از کار افتادن برنامه شد، فقط در رشتههای اصلی خراب شده وجود دارد |
threads.signal_code | STRING | کد سیگنالی که باعث از کار افتادن برنامه شد. فقط در رشته های بومی خراب شده وجود دارد |
threads.crash_address | INT64 | آدرس سیگنالی که باعث از کار افتادن برنامه شد. فقط در رشته های بومی خراب شده وجود دارد |
threads.code | INT64 | (فقط برنامه های اپل) کد خطای خطای NSE ثبت شده سفارشی برنامه |
threads.title | STRING | عنوان تاپیک |
threads.subtitle | STRING | زیرنویس تاپیک |
threads.blamed | بولین | آیا Crashlytics تشخیص داده است که این فریم دلیل خرابی یا خطا است |
threads.frames | ضبط مکرر | قاب های نخ |
threads.frames.line | INT64 | شماره خط فایل قاب |
threads.frames.file | STRING | نام فایل فریم |
threads.frames.symbol | STRING | نماد هیدراته یا نماد خام در صورتی که غیر قابل آبرسانی باشد |
threads.frames.offset | INT64 | بایت به تصویر باینری که حاوی کد است تغییر می کند |
threads.frames.address | INT64 | آدرس موجود در تصویر باینری که حاوی کد است |
threads.frames.library | STRING | نام نمایشی کتابخانه که شامل قاب است |
threads.frames.owner | STRING | به عنوان مثال، DEVELOPER ، VENDOR ، RUNTIME ، PLATFORM ، یا SYSTEM |
threads.frames.blamed | بولین | آیا Crashlytics تشخیص داده است که این فریم دلیل خطا است یا خیر |
unity_metadata.unity_version | STRING | نسخه Unity در حال اجرا بر روی این دستگاه |
unity_metadata.debug_build | بولین | اگر این یک ساخت اشکال زدایی است |
unity_metadata.processor_type | STRING | نوع پردازنده |
unity_metadata.processor_count | INT64 | تعداد پردازنده ها (هسته ها) |
unity_metadata.processor_frequency_mhz | INT64 | فرکانس پردازنده(ها) بر حسب مگاهرتز |
unity_metadata.system_memory_size_mb | INT64 | اندازه حافظه سیستم بر حسب مگابایت |
unity_metadata.graphics_memory_size_mb | INT64 | حافظه گرافیکی در مگابایت |
unity_metadata.graphics_device_id | INT64 | شناسه دستگاه گرافیکی |
unity_metadata.graphics_device_vendor_id | INT64 | شناسه فروشنده پردازنده گرافیکی |
unity_metadata.graphics_device_name | STRING | نام دستگاه گرافیکی |
unity_metadata.graphics_device_vendor | STRING | فروشنده دستگاه گرافیکی |
unity_metadata.graphics_device_version | STRING | نسخه دستگاه گرافیکی |
unity_metadata.graphics_device_type | STRING | نوع دستگاه گرافیکی |
unity_metadata.graphics_shader_level | INT64 | سطح سایه زن گرافیک |
unity_metadata.graphics_render_target_count | INT64 | تعداد اهداف رندر گرافیکی |
unity_metadata.graphics_copy_texture_support | STRING | پشتیبانی از کپی بافت گرافیکی همانطور که در Unity API تعریف شده است |
unity_metadata.graphics_max_texture_size | INT64 | حداکثر اندازه اختصاص داده شده به رندر بافت |
unity_metadata.screen_size_px | STRING | اندازه صفحه نمایش بر حسب پیکسل، فرمت شده به صورت عرض x ارتفاع |
unity_metadata.screen_resolution_dpi | STRING | DPI صفحه به عنوان یک عدد ممیز شناور |
unity_metadata.screen_refresh_rate_hz | INT64 | نرخ تازه سازی صفحه نمایش بر حسب هرتز |
داده های Crashlytics صادر شده را با Data Studio تجسم کنید
Google Data Studio مجموعه دادههای Crashlytics شما را در BigQuery به گزارشهایی تبدیل میکند که خواندن آسانتر، اشتراکگذاری آسانتر و کاملاً قابل تنظیم هستند.
برای کسب اطلاعات بیشتر در مورد استفاده از Data Studio، راهنمای شروع سریع Data Studio را امتحان کنید، به Data Studio خوش آمدید .
از یک الگوی گزارش Crashlytics استفاده کنید
Data Studio یک گزارش نمونه برای Crashlytics دارد که شامل مجموعه ای جامع از ابعاد و معیارهای طرحواره Crashlytics BigQuery صادر شده است. اگر صادرات جریان Crashlytics به BigQuery را فعال کردهاید، میتوانید آن دادهها را در صفحه روندهای Realtime الگوی Data Studio مشاهده کنید. میتوانید از نمونه به عنوان الگو برای ایجاد سریع گزارشها و تجسمهای جدید بر اساس دادههای خرابی خام برنامه خود استفاده کنید:
قالب داشبورد Crashlytics Data Studio را باز کنید.
روی Use Template در گوشه سمت راست بالا کلیک کنید.
در منوی کشویی New Data Source ، Create New Data Source را انتخاب کنید.
در کارت BigQuery روی Select کلیک کنید.
با انتخاب پروژههای من > PROJECT_ID > firebase_crashlytics > TABLE_NAME ، جدولی حاوی دادههای Crashlytics صادر شده را انتخاب کنید.
جدول دسته ای شما همیشه برای انتخاب در دسترس است. اگر صادرات جریان Crashlytics به BigQuery فعال باشد، میتوانید به جای آن جدول بیدرنگ خود را انتخاب کنید.
در قسمت پیکربندی ، سطح الگوی Crashlytics را روی پیشفرض تنظیم کنید.
برای ایجاد منبع داده جدید روی Connect کلیک کنید.
برای بازگشت به الگوی Crashlytics روی افزودن به گزارش کلیک کنید.
در نهایت روی Create Report کلیک کنید تا یک کپی از الگوی Crashlytics Data Studio Dashboard ایجاد شود.
ارتقاء به زیرساخت جدید صادرات
در اواسط اکتبر 2024، Crashlytics زیرساخت جدیدی را برای صادرات دسته ای داده های Crashlytics به BigQuery راه اندازی کرد.
می توانید به زیرساخت جدید ارتقا دهید ، اما مطمئن شوید که جداول دسته ای BigQuery شما پیش نیازهای ارتقا را برآورده می کنند.
تعیین کنید که آیا در زیرساخت جدید هستید یا خیر
اگر صادرات دستهای را در اواسط اکتبر ۲۰۲۴ یا بعد از آن فعال کردهاید، پروژه Firebase شما بهطور خودکار از زیرساخت صادرات جدید استفاده میکند.
میتوانید بررسی کنید که پروژه شما از کدام زیرساخت استفاده میکند: به کنسول Google Cloud بروید، و اگر «پیکربندی انتقال داده» شما برچسب Firebase Crashlytics with Multi-Region Support
دارد، پروژه شما از زیرساخت صادرات جدید استفاده میکند.
تفاوت های مهم بین زیرساخت صادرات قدیمی و زیرساخت صادرات جدید
زیرساخت جدید از مکان های داده Crashlytics در خارج از ایالات متحده پشتیبانی می کند.
صادرات قبل از اواسط اکتبر 2024 فعال شد و به زیرساخت صادرات جدید ارتقا یافت — اکنون می توانید به صورت اختیاری مکان را برای صادرات داده تغییر دهید .
صادرات در اواسط اکتبر 2024 یا بعد از آن فعال شد - در حین تنظیم از شما خواسته شد مکانی را برای صادرات داده انتخاب کنید.
زیرساخت جدید از پر کردن دادههای قبل از فعال کردن صادرات پشتیبانی نمیکند.
زیرساخت قدیمی تا 30 روز قبل از تاریخی که صادرات را فعال کردهاید، پشتیبان را پشتیبانی میکرد.
زیرساخت جدید تا 30 روز گذشته یا برای آخرین تاریخی که صادرات به BigQuery را فعال کردهاید (هر کدام که جدیدترین باشد) پشتیبانی میکند.
زیرساخت جدید جداول دسته ای BigQuery با استفاده از شناسه های تنظیم شده برای برنامه های Firebase شما در پروژه Firebase نامگذاری می کند.
زیرساخت قدیمی دادهها را در جدولهای دستهای با نامهایی بر اساس شناسههای بسته یا نامهای بسته در پیکربندی Firebase در پایگاه کد برنامه شما نوشت.
زیرساخت جدید دادهها را در جداول دستهای با نامهایی بر اساس شناسههای بسته یا نامهای بسته تنظیمشده برای برنامههای Firebase ثبتشده شما در پروژه Firebase مینویسد.
مرحله 1 : پیش نیاز برای ارتقا
بررسی کنید که جداول دستهای BigQuery شما از شناسههای منطبق با شناسههای بسته یا نام بستههای تنظیمشده برای برنامههای Firebase ثبتشده شما در پروژه Firebase استفاده میکنند. اگر مطابقت ندارند، ممکن است در دادههای دستهای صادر شده با اختلال مواجه شوید. اکثر پروژه ها در وضعیت مناسب و سازگار خواهند بود، اما مهم است که قبل از ارتقا بررسی شود.
میتوانید همه برنامههای Firebase ثبتشده در پروژه Firebase خود را در کنسول Firebase پیدا کنید: به خود بروید ، تنظیمات پروژه ، سپس به کارت برنامههای شما بروید تا همه برنامههای Firebase و اطلاعات آنها را ببینید.
میتوانید تمام جداول دستهای BigQuery خود را در صفحه BigQuery کنسول Google Cloud پیدا کنید.
برای مثال، در اینجا حالتهای ایدهآلی وجود دارد که در آنها هیچ مشکلی در ارتقاء نخواهید داشت:
شما یک جدول دسته ای به نام
com_yourcompany_yourproject_IOS
و یک برنامه Firebase iOS+ با شناسه بستهcom.yourcompany.yourproject
دارید که در پروژه Firebase شما ثبت شده است.شما یک جدول دسته ای به نام
com_yourcompany_yourproject_ANDROID
و یک برنامه Android Firebase با نام بستهcom.yourcompany.yourproject
دارید که در پروژه Firebase شما ثبت شده است.
اگر نامهای جدول دستهای دارید که با شناسههای تنظیمشده برای برنامههای Firebase ثبتشده شما مطابقت ندارد ، دستورالعملهای بعدی این صفحه را قبل از ارتقا بهصورت دستی دنبال کنید تا از اختلال در صادرات دستهای خود جلوگیری کنید.
مرحله 2 : به صورت دستی به زیرساخت جدید ارتقا دهید
اگر صادرات دستهای را قبل از اواسط اکتبر 2024 فعال کرده باشید، میتوانید بهصورت دستی به زیرساخت جدید ارتقا دهید، فقط با غیرفعال کردن صادرات دادههای Crashlytics و سپس فعال کردن مجدد آن در کنسول Firebase .
در اینجا مراحل دقیق وجود دارد:
در کنسول Firebase ، به صفحه ادغام بروید.
در کارت BigQuery ، روی مدیریت کلیک کنید.
برای غیرفعال کردن صادرات، نوار لغزنده Crashlytics را خاموش کنید. وقتی از شما خواسته شد، تأیید کنید که میخواهید صادرات داده متوقف شود.
بلافاصله نوار لغزنده Crashlytics را مجدداً روشن کنید تا صادرات مجدد فعال شود. وقتی از شما خواسته شد، تأیید کنید که میخواهید دادهها را صادر کنید.
صادر کردن داده های Crashlytics شما به BigQuery اکنون از زیرساخت صادرات جدید استفاده می کند.
نام جدول دسته ای موجود شما با شناسه برنامه Firebase شما مطابقت ندارد
اگر جدولهای دستهای BigQuery در این حالت دارید، به این معنی است که آنها با زیرساخت جدید صادرات دستهای به BigQuery Firebase سازگار نیستند.
قبل از ارتقای دستی صادرات دسته ای داده های Crashlytics خود به BigQuery ، دستورالعمل های این بخش را دنبال کنید.
برای جلوگیری از اختلال، به دستورالعملها بروید
درک کنید که چگونه زیرساخت صادرات از شناسه ها برای نوشتن داده ها در جداول BigQuery استفاده می کند
در اینجا نحوه نوشتن داده های Crashlytics توسط دو زیرساخت صادراتی در جداول دسته ای BigQuery آمده است:
زیرساخت صادرات قدیمی : دادهها را در جدولی با نامی مینویسد که بر اساس شناسه بسته یا نام بسته در پیکربندی Firebase در پایگاه کد برنامه شما است (معمولاً از فایل
GoogleService-Info.plist
یا فایلgoogle-services.json
).زیرساخت صادرات جدید : دادهها را در جدولی با نامی مینویسد که بر اساس شناسه بسته یا نام بسته برای برنامه Firebase ثبتشده شما در پروژه Firebase تنظیم شده است .
متأسفانه، گاهی اوقات شناسه بسته یا نام بسته موجود در پیکربندی در پایگاه کد شما با شناسه بسته یا نام بسته تنظیم شده برای برنامه Firebase ثبت شده شما در پروژه Firebase مطابقت ندارد. این معمولاً در صورتی اتفاق میافتد که شخصی فایل پیکربندی موجود در پایگاه کد برنامه شما را به صورت دستی تغییر داده باشد یا شناسه واقعی را در طول ثبت برنامه وارد نکرده باشد.
اگر قبل از ارتقا رفع نشود، چه اتفاقی میافتد؟
اگر شناسههای این دو مکان مطابقت نداشته باشند، پس از ارتقا به زیرساخت صادرات جدید، موارد زیر اتفاق میافتد:
دادههای Crashlytics شما در یک جدول دستهای BigQuery جدید شروع به نوشتن میکنند - یعنی یک جدول جدید با نامی بر اساس شناسه بسته یا نام بسته تنظیم شده برای برنامه Firebase ثبتشده شما در پروژه Firebase شما .
هر جدول "میراث" موجود با نامی بر اساس شناسه در پیکربندی در پایگاه کد شما، دیگر دادهای روی آن نوشته نخواهد شد.
سناریوهای نمونه از شناسههای نامتناسب
توجه داشته باشید که نامهای جدول دستهای BigQuery به طور خودکار با _IOS
یا _ANDROID
اضافه میشوند تا پلتفرم برنامه را نشان دهند.
شناسه(های) در پایگاه کد برنامه شما | شناسه(های) برای برنامه(های) Firebase شما تنظیم شد | رفتار میراثی | رفتار پس از ارتقا زیرساخت های صادراتی جدید | راه حل |
---|---|---|---|---|
foo | bar | روی یک جدول تکی با نام شناسه در پایگاه کد برنامه ( foo ) می نویسد. | ایجاد می کند و سپس روی یک جدول می نویسد که به نام مجموعه شناسه برنامه Firebase ( bar ) نامگذاری شده است. | گزینه 1 یا 2 که در زیر توضیح داده شده است را اجرا کنید. |
foo | bar ، qux و غیره | روی یک جدول تکی با نام شناسه در پایگاه کد برنامه ( foo ) می نویسد. | ایجاد* می کند و سپس در چندین جدول با نام شناسه های تنظیم شده برای برنامه های Firebase ( bar ، qux و غیره) می نویسد. | گزینه 2 که در زیر توضیح داده شده را اجرا کنید. |
foo ، baz و غیره | bar | در چندین جدول با نام چندین شناسه در پایگاه کد برنامه ( foo ، baz و غیره) مینویسد. | ایجاد می کند** سپس داده های هر برنامه را در یک جدول می نویسد که نام آن بر اساس شناسه تنظیم شده برای برنامه Firebase ( bar ) است. | هیچ کدام از گزینه ها قابل اجرا نیستند. همچنان میتوانید با استفاده از |
* اگر شناسه در پایگاه کد برنامه شما با یکی از شناسه های تنظیم شده برای یک برنامه Firebase مطابقت داشت، زیرساخت صادرات جدید جدول جدیدی برای آن شناسه ایجاد نمی کند. درعوض، به نوشتن دادههای آن برنامه خاص روی آن ادامه میدهد. همه برنامه های دیگر در جداول جدید نوشته می شوند.
** اگر یکی از شناسههای پایگاه کد برنامه شما با شناسه تنظیمشده برای برنامه Firebase مطابقت داشت، زیرساخت صادرات جدید جدول جدیدی ایجاد نمیکند. در عوض، آن جدول را حفظ می کند و شروع به نوشتن داده برای همه برنامه ها در آن می کند.
گزینه هایی برای جلوگیری از اختلال
برای جلوگیری از هرگونه اختلال، دستورالعملهای مربوط به یکی از گزینههای شرح داده شده در زیر را قبل از ارتقاء دستی دنبال کنید.
گزینه 1 :
از جدول جدید ایجاد شده توسط زیرساخت صادرات جدید استفاده کنید. داده ها را از جدول موجود خود در جدول جدید کپی خواهید کرد.در کنسول Firebase ، با خاموش کردن صادرات و سپس روشن کردن مجدد برای برنامه مرتبط ، به زیرساخت صادرات جدید ارتقا دهید .
این اقدام یک جدول دستهای جدید با نامی ایجاد میکند که براساس شناسه بسته یا نام بسته تنظیم شده برای برنامه Firebase ثبتشده شما در پروژه Firebase شما است .
در کنسول Google Cloud ، تمام داده ها را از جدول قدیمی خود در جدول جدیدی که به تازگی ایجاد شده است کپی کنید .
اگر وابستگی های پایین دست دارید که به جدول دسته ای شما بستگی دارد ، آنها را برای استفاده از جدول جدید تغییر دهید.
گزینه 2 :
نوشتن روی جدول موجود خود را ادامه دهید. برای دستیابی به این هدف ، برخی از پیش فرض ها را در یک پیکربندی BigQuery نادیده می گیرید.در کنسول Firebase ، شناسه برنامه Firebase (به عنوان مثال ،
1:1234567890:ios:321abc456def7890
) برنامه را با نام جدول دسته ای ناسازگار و شناسه یادداشت کنید:
به تنظیمات پروژه خود بروید ، سپس به کارت برنامه های خود بروید تا تمام برنامه های Firebase و اطلاعات آنها را ببینید.در کنسول Firebase ، با خاموش کردن صادرات و سپس دوباره برای برنامه مرتبط ، به زیرساخت های جدید صادرات ارتقاء دهید .
این عمل دو چیز را انجام می دهد:
یک جدول دسته ای جدید با نامی ایجاد می کند که بر اساس شناسه بسته نرم افزاری یا نام بسته برای برنامه Firebase ثبت شده شما در پروژه Firebase شما تنظیم شده است . (در نهایت این جدول را حذف خواهید کرد ، اما هنوز آن را حذف نکنید .)
یک "پیکربندی انتقال داده" BigQuery با منبع
Firebase Crashlytics with Multi-Region Support
ایجاد می کند.
در کنسول Google Cloud ، "پیکربندی انتقال داده" جدید را تغییر دهید تا داده ها همچنان به جدول موجود خود بنویسند:
برای مشاهده "پیکربندی انتقال داده" به BigQuery > انتقال داده ها بروید.
پیکربندی را انتخاب کنید که دارای Source
Firebase Crashlytics with Multi-Region Support
است.روی ویرایش در گوشه بالا سمت راست کلیک کنید.
در بخش جزئیات منبع داده ، لیستی برای GMP_APP_ID و لیستی برای Client_Namespace پیدا کنید.
در BigQuery ، شناسه برنامه Firebase
gmp_app_id
نامیده می شود. به طور پیش فرض ، مقدارclient_namespace
در BigQuery ، شناسه بسته نرم افزاری منحصر به فرد / نام بسته برنامه است ، اما شما این پیکربندی پیش فرض را نادیده می گیرید.BigQuery از مقدار
client_namespace
برای نام جدول دسته ای که هر برنامه Firebase Linked Linked می نویسد ، استفاده می کند.GMP_APP_ID برنامه Firebase را که می خواهید تنظیمات پیش فرض را نادیده بگیرید ، پیدا کنید. مقدار Client_Namespace خود را به نام جدول مورد نظر خود تغییر دهید که می خواهید برنامه Firebase به جای آن بنویسد (معمولاً این نام جدول میراثی است که برنامه با زیرساخت های صادراتی میراث برای آن می نویسد).
تغییر پیکربندی را ذخیره کنید.
برای روزهایی که جدول موجود شما از دست داده است ، یک برگشتی را برنامه ریزی کنید .
پس از اتمام کار برگشت ، جدول جدیدی را که به طور خودکار توسط زیرساخت های جدید صادراتی ایجاد شده است ، حذف کنید .