يوضّح دليل المطوّرين هذا كيفية تنفيذ أداة "إدارة العلامات من Google" في تطبيق على الأجهزة الجوّالة.
مقدمة
تتيح أداة "إدارة العلامات من Google" للمطوّرين تغيير قيم الإعدادات في تطبيقاتهم للأجهزة الجوّالة باستخدام واجهة "إدارة العلامات من Google" بدون الحاجة إلى إعادة إنشاء وإعادة إرسال ملفات التطبيق الثنائية إلى أسواق التطبيقات.
ويكون ذلك مفيدًا لإدارة أي قيم إعدادات أو علامات في تطبيقك قد تحتاج إلى تغييرها في المستقبل، بما في ذلك:
- إعدادات واجهة المستخدم وسلاسل العرض المختلفة
- أحجام الإعلانات أو مواقعها أو أنواعها المعروضة في تطبيقك
- إعدادات الألعاب
يمكن أيضًا تقييم قيم الإعدادات في وقت التشغيل باستخدام القواعد، ما يتيح إعدادات ديناميكية مثل:
- استخدام حجم الشاشة لتحديد حجم بانر الإعلان
- استخدام اللغة والموقع الجغرافي لضبط عناصر واجهة المستخدم
تتيح أداة Google Tag Manager أيضًا التنفيذ الديناميكي لعلامات التتبُّع ووحدات البكسل في التطبيقات. يمكن للمطوّرين إرسال أحداث مهمة إلى طبقة البيانات، وتحديد علامات التتبُّع أو وحدات البكسل التي يجب تفعيلها لاحقًا. تتيح أداة "إدارة العلامات من Google" استخدام العلامات التالية:
- إحصاءات تطبيقات الأجهزة الجوّالة من Google
- علامة استدعاء الدالة المخصّصة
قبل البدء
قبل استخدام دليل بدء الاستخدام هذا، يجب توفُّر ما يلي:
- حساب على "إدارة العلامات من Google"
- حاوية جديدة على أداة Tag Manager ووحدة ماكرو لجمع القيم
- تطبيق Android للأجهزة الجوّالة يتم فيه تنفيذ "إدارة العلامات من Google"
- حزمة تطوير البرامج لخدمات "إحصاءات Google" التي تحتوي على مكتبة "إدارة العلامات من Google"
إذا كنت حديث العهد بأداة "إدارة العلامات من Google"، ننصحك بالاطّلاع على مزيد من المعلومات حول الحاويات ووحدات الماكرو والقواعد (مركز المساعدة) قبل مواصلة قراءة هذا الدليل.
البدء
سيرشد هذا القسم المطوّرين خلال سير عمل نموذجي في "إدارة العلامات من Google":
- إضافة حزمة تطوير البرامج (SDK) الخاصة بأداة "إدارة العلامات من Google" إلى مشروعك
- ضبط القيم التلقائية للحاوية
- فتح الحاوية
- الحصول على قيم الإعداد من الحاوية
- إرسال الأحداث إلى DataLayer
- معاينة الحاوية ونشرها
1. إضافة حزمة تطوير البرامج (SDK) الخاصة بأداة "إدارة العلامات من Google" إلى مشروعك
قبل استخدام حزمة تطوير البرامج (SDK) لأداة "إدارة العلامات من Google"، عليك استخراج حزمة SDK وإضافة المكتبة إلى مسار إنشاء مشروعك وإضافة الأذونات إلى ملف AndroidManifest.xml.
أولاً، أضِف مكتبة Google Tag Manager إلى المجلد /libs الخاص بمشروعك.
بعد ذلك، عدِّل ملف AndroidManifest.xml لاستخدام الأذونات التالية:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.INTERNET" />
2. إضافة ملف حاوية تلقائي إلى مشروعك
تستخدِم أداة Google Tag Manager حاوية تلقائية عند تشغيل تطبيقك للمرة الأولى. سيتم استخدام الحاوية التلقائية إلى أن يتمكّن التطبيق من استرداد حاوية جديدة عبر الشبكة.
لتنزيل برنامج ثنائي للحاوية التلقائية وإضافته إلى تطبيقك، اتّبِع الخطوات التالية:
- سجِّل الدخول إلى واجهة الويب الخاصة بأداة "إدارة العلامات من Google".
- اختَر الإصدار من الحاوية التي تريد تنزيلها.
- انقر على الزر تنزيل لاسترداد ملف الحاوية الثنائي.
- أضِف ملف البيانات الثنائية إلى المسار التالي:
<project-root>/assets/tagmanager/
يجب أن يكون اسم الملف التلقائي هو رقم تعريف الحاوية (على سبيل المثال GTM-1234). بعد تنزيل ملف البنية الثنائية، احرص على إزالة لاحقة الإصدار من اسم الملف لضمان اتّباع اصطلاح التسمية الصحيح.
على الرغم من أنّه يُنصح باستخدام الملف الثنائي، إذا كان الحاوي لا يتضمّن قواعد أو علامات، يمكنك اختيار استخدام ملف JSON بدلاً من ذلك. يجب أن يكون الملف في مجلد جديد باسم /assets/tagmanager
ضمن مشروع Android، ويجب أن يتّبع اصطلاح التسمية التالي:
<Container_ID>.json. على سبيل المثال، إذا كان معرّف الحاوية هو GTM-1234، عليك إضافة قيم الحاوية التلقائية إلى /assets/tagmanager/GTM-1234.json.
3- فتح حاوية
قبل استرداد القيم من حاوية، يجب أن يفتح تطبيقك الحاوية. سيؤدي فتح حاوية إلى تحميلها من القرص (إذا كانت متاحة) أو طلبها من الشبكة (إذا لزم الأمر).
أسهل طريقة لفتح حاوية على Android هي استخدام
ContainerOpener.openContainer(..., Notifier notifier)، كما في المثال التالي:
import com.google.tagmanager.Container; import com.google.tagmanager.ContainerOpener; import com.google.tagmanager.ContainerOpener.OpenType; import com.google.tagmanager.TagManager; import android.app.Activity; import android.os.Bundle; public class RacingGame { // Add your public container ID. private static final String CONTAINER_ID = "GTM-YYYY"; volatile private Container mContainer; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TagManager mTagManager = TagManager.getInstance(this); // The container is returned to containerFuture when available. ContainerOpener.openContainer( mTagManager, // TagManager instance. CONTAINER_ID, // Tag Manager Container ID. OpenType.PREFER_NON_DEFAULT, // Prefer not to get the default container, but stale is OK. null, // Time to wait for saved container to load (ms). Default is 2000ms. new ContainerOpener.Notifier() { // Called when container loads. @Override public void containerAvailable(Container container) { // Handle assignment in callback to avoid blocking main thread. mContainer = container; } } ); // Rest of your onCreate code. } }
في هذا المثال، يتم استخدام ContainerOpener.openContainer(..., Notifier notifier) لطلب حاوية محفوظة من مساحة التخزين المحلية. من خلال معالجة عملية تعيين mContainer في دالة معاودة الاتصال containerAvailable، نضمن عدم حظر سلسلة التعليمات الرئيسية. إذا كان الحاوية المحفوظة أقدم من 12 ساعة، سيتم أيضًا جدولة طلب لاسترداد حاوية جديدة بشكل غير متزامن عبر الشبكة.
يمثّل نموذج التنفيذ هذا أبسط طريقة لفتح القيم واستردادها من حاوية باستخدام فئة ContainerOpener المريحة.
لمزيد من خيارات التنفيذ المتقدّمة، اطّلِع على الإعداد المتقدّم.
4. الحصول على قيم الإعدادات من الحاوية
بعد فتح الحاوية، يمكن استرداد قيم الإعدادات باستخدام طرق get<type>Value():
// Retrieving a configuration value from a Tag Manager Container. // Get the configuration value by key. String title = mContainer.getStringValue("title_string");
ستعرض الطلبات التي يتم إرسالها باستخدام مفتاح غير متوفّر قيمة تلقائية مناسبة للنوع المطلوب:
// Empty keys will return a default value depending on the type requested. // Key does not exist. An empty string is returned. string subtitle = container.getStringValue("Non-existent-key"); subtitle.equals(""); // Evaluates to true.
5- إرسال القيم إلى DataLayer
DataLayer هي خريطة تتيح توفير معلومات وقت التشغيل حول تطبيقك، مثل أحداث اللمس أو مشاهدات الشاشة، لوحدات الماكرو والعلامات في "إدارة العلامات من Google" ضمن حاوية.
على سبيل المثال، من خلال إرسال معلومات حول مشاهدات الشاشة إلى خريطة DataLayer، يمكنك إعداد علامات في واجهة الويب الخاصة بأداة "إدارة العلامات من Google" لتفعيل وحدات البكسل الخاصة بالإحالات الناجحة وطلبات التتبُّع استجابةً لمشاهدات الشاشة هذه بدون الحاجة إلى ترميزها بشكل ثابت في تطبيقك.
يتم إرسال الأحداث إلى DataLayer باستخدام push() وطريقة المساعدة
DataLayer.mapOf():
// // MainActivity.java // Pushing an openScreen event with a screen name into the data layer. // import com.google.tagmanager.TagManager; import com.google.tagmanager.DataLayer; import android.app.Activity; import android.os.Bundle; public MainActivity extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } // This screen becomes visible when Activity.onStart() is called. public void onStart() { super.onStart(); // The container should have already been opened, otherwise events pushed to // the DataLayer will not fire tags in that container. DataLayer dataLayer = TagManager.getInstance(this).getDataLayer(); dataLayer.push(DataLayer.mapOf("event", "openScreen", // The event type. This value should be used consistently for similar event types. "screenName", // Writes a key "screenName" to the dataLayer map. "Home Screen") // Writes a value "Home Screen" for the "screenName" key. ); } // Rest of the Activity implementation }
في واجهة الويب، يمكنك الآن إنشاء علامات (مثل علامات "إحصاءات Google") يتم تفعيلها لكل مشاهدة صفحة في التطبيق من خلال إنشاء هذه القاعدة: يساوي openScreen. لتمرير اسم الشاشة إلى أحد هذه العلامات، أنشئ ماكرو لطبقة البيانات يشير إلى المفتاح "screenName" في طبقة البيانات. يمكنك أيضًا إنشاء علامة (مثل بكسل تتبُّع الإحالات الناجحة في "إعلانات Google") ليتم تنشيطها فقط عند عرض شاشات معيّنة، وذلك من خلال إنشاء قاعدة يكون فيها مساويًا لـ "openScreen" و مساويًا لـ "ConfirmationScreen".
6. معاينة حاوية ونشرها
ستتطابق قيم وحدات الماكرو دائمًا مع الإصدار المنشور الحالي. قبل نشر أحدث إصدار من الحاوية، يمكنك معاينة مسودة الحاوية.
لمعاينة حاوية، أنشئ عنوان URL للمعاينة في واجهة الويب الخاصة بأداة Google Tag Manager من خلال اختيار إصدار الحاوية الذي تريد معاينته، ثم النقر على Preview. احفظ عنوان URL الخاص بالمعاينة لأنّك ستحتاج إليه في خطوات لاحقة.
بعد ذلك، أضِف النشاط التالي إلى ملف AndroidManifest.xml في تطبيقك:
<!-- Google Tag Manager Preview Activity --> <activity android:name="com.google.tagmanager.PreviewActivity" android:label="@string/app_name" android:noHistory="true" > <!-- Optional, removes the PreviewActivity from activity stack. --> <intent-filter> <data android:scheme="tagmanager.c.application_package_name" /> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE"/> </intent-filter> </activity>
افتح الرابط على محاكي أو جهاز فعلي لمعاينة مسودة الحاوية في تطبيقك.
عندما تكون مستعدًا لإتاحة قيم الإعدادات الأولية في تطبيقك، انشر الحاوية.
إعدادات متقدّمة
تتضمّن أداة Google Tag Manager للأجهزة الجوّالة عددًا من خيارات الإعدادات المتقدّمة التي تتيح لك اختيار القيم استنادًا إلى شروط وقت التشغيل باستخدام القواعد، وتحديث الحاوية يدويًا، والحصول على خيارات إضافية لفتح الحاويات. توضّح الأقسام التالية بعض الإعدادات المتقدّمة الأكثر شيوعًا.
خيارات متقدّمة لفتح الحاويات
توفّر حزمة تطوير البرامج (SDK) الخاصة بأداة "إدارة العلامات من Google" عدة طرق لفتح الحاويات، ما يمنحك المزيد من التحكّم في عملية التحميل:
TagManager.openContainer()
TagManager.openContainer() هو أدنى مستوى وأكثر واجهات برمجة التطبيقات مرونة لفتح حاوية. تعرض هذه الطريقة الحاوية التلقائية على الفور، كما أنّها تحمّل بشكل غير متزامن حاوية من القرص أو الشبكة إذا لم تكن هناك حاوية محفوظة، أو إذا لم تكن الحاوية المحفوظة حديثة (أي مرّ عليها أكثر من 12 ساعة).
mContainer = tagManager.openContainer(CONTAINER_ID, new Container.Callback() { // Called when a refresh is about to begin for the given refresh type. @Override public void containerRefreshBegin(Container container, RefreshType refreshType) { // Notify UI that the Container refresh is beginning. } // Called when a successful refresh occurred for the given refresh type. @Override public void containerRefreshSuccess(Container container, RefreshType refreshType]) { // Notify UI that Container is ready. } // Called when a refresh failed for the given refresh type. @Override public void containerRefreshFailure(Container container, RefreshType refreshType, RefreshFailure refreshFailure) { // Notify UI that the Container refresh has failed. }
أثناء عملية التحميل، ترسل TagManager.openContainer() عدة عمليات ردّ عند استدعاء وظائف مرتبطة بدورة الحياة، وذلك لكي يتمكّن الرمز من معرفة وقت بدء طلب التحميل، وما إذا كان قد تعذّر أو نجح، وما إذا تم تحميل الحاوية في النهاية من القرص أو الشبكة.
ما لم يكن مقبولاً أن يستخدم تطبيقك القيم التلقائية، عليك استخدام عمليات معاودة الاتصال هذه لمعرفة وقت تحميل حاوية محفوظة أو حاوية على الشبكة. يُرجى العِلم أنّه لن تتمكّن من تحميل حاوية محفوظة أو حاوية شبكة إذا كانت هذه هي المرة الأولى التي يتم فيها تشغيل التطبيق ولم يكن هناك اتصال بالشبكة.
تمرِّر TagManager.openContainer() قيم enum التالية كوسيطات إلى عمليات معاودة الاتصال هذه:
RefreshType
| القيمة | الوصف |
|---|---|
Container.Callback.SAVED
|
يؤدي طلب إعادة التحميل إلى تحميل حاوية محفوظة على الجهاز. |
Container.Callback.NETWORK
|
يحمّل طلب إعادة التحميل حاوية عبر الشبكة. |
RefreshFailure
| القيمة | الوصف |
|---|---|
Container.Callback.NO_SAVED_CONTAINER
|
لا تتوفّر حاوية بيانات تجارب مخزّنة. |
Container.Callback.IO_ERROR
|
حدث خطأ في الإدخال/الإخراج منع إعادة تحميل الحاوية. |
Container.Callback.NO_NETWORK
|
لا يتوفّر اتصال بالشبكة. |
Container.Callback.NETWORK_ERROR
|
حدث خطأ في الشبكة. |
Container.Callback.SERVER_ERROR
|
حدث خطأ في الخادم. |
Container.Callback.UNKNOWN_ERROR
|
حدث خطأ لا يمكن تصنيفه. |
طُرق فتح الحاويات غير التلقائية والجديدة
تتضمّن ContainerOpener TagManager.openContainer()
وتوفّر طريقتَين مناسبتَين لفتح الحاويات:
ContainerOpener.openContainer(..., Notifier notifier) و
ContainerOpener.openContainer(..., Long timeoutInMillis).
تتلقّى كل طريقة من هذه الطرق تعدادًا يطلب إما حاوية غير تلقائية أو حاوية جديدة.
ننصح باستخدام OpenType.PREFER_NON_DEFAULT لمعظم التطبيقات، وهو يحاول عرض الحاوية الأولى غير التلقائية المتوفّرة خلال فترة المهلة المحدّدة، سواء من القرص أو الشبكة، حتى إذا كان عمر تلك الحاوية أكثر من 12 ساعة. إذا عرض حاوية محفوظة قديمة، سيُرسل أيضًا طلب شبكة غير متزامن للحصول على حاوية جديدة.
عند استخدام OpenType.PREFER_NON_DEFAULT، سيتم عرض حاوية تلقائية في حال عدم توفّر أي حاوية أخرى أو في حال تجاوزت الفترة الزمنية المحدّدة.
تحاول OpenType.PREFER_FRESH عرض حاوية جديدة من القرص أو الشبكة خلال فترة المهلة المحدّدة.
تعرض هذه الطريقة حاوية محفوظة في حال عدم توفّر اتصال بالشبكة و/أو تجاوز فترة المهلة.
لا يُنصح باستخدام OpenType.PREFER_FRESH
في المواضع التي قد يؤثّر فيها وقت الطلب الأطول بشكل ملحوظ في تجربة المستخدم،
مثل علامات واجهة المستخدم أو سلاسل العرض. يمكنك أيضًا استخدام
Container.refresh()
في أي وقت
لفرض طلب حاوية شبكة.
كلتا الطريقتين المريحتين لا تحظران التنفيذ.
تعرض الدالة ContainerOpener.openContainer(..., Long timeoutInMillis) عنصر ContainerOpener.ContainerFuture، ويعرض الإجراء get الخاص بهذا العنصر عنصر Container فور تحميله (ولكن سيتم حظره حتى ذلك الحين).
تتلقّى الطريقة ContainerOpener.openContainer(..., Notifier notifier) عملية ردّ نداء واحدة،
يتم تنفيذها عندما يصبح الحاوية متاحًا،
ويمكن استخدامها لمنع حظر سلسلة التعليمات الرئيسية.
تتضمّن كلتا الطريقتَين مدة مهلة تلقائية تبلغ 2000 مللي ثانية.
تقييم وحدات الماكرو في وقت التشغيل باستخدام القواعد
يمكن للحاويات تقييم القيم في وقت التشغيل باستخدام القواعد. قد تستند القواعد إلى معايير مثل لغة الجهاز أو النظام الأساسي أو أي قيمة ماكرو أخرى. على سبيل المثال، يمكن استخدام القواعد لاختيار سلسلة عرض مترجَمة استنادًا إلى لغة الجهاز في وقت التشغيل. يمكن ضبط ذلك باستخدام القاعدة التالية:
يمكنك بعد ذلك إنشاء وحدات ماكرو لجمع القيم لكل لغة، وإضافة هذه القاعدة إلى كل وحدة ماكرو، مع إدراج رمز اللغة المناسب. عند نشر هذا الحاوية، سيتمكّن تطبيقك من عرض سلاسل العرض المترجَمة، وذلك حسب لغة جهاز المستخدم في وقت التشغيل.
يُرجى العِلم أنّه إذا كانت الحاوية التلقائية تتطلّب قواعد، عليك استخدام ملف حاوية ثنائي كحاوية تلقائية.
مزيد من المعلومات حول ضبط القواعد (مركز المساعدة)
ملفات الحاويات الثنائية التلقائية
يجب أن تستخدم الحاويات التلقائية التي تحتاج إلى قواعد ملف حاوية ثنائيًا بدلاً من ملف JSON كحاوية تلقائية. تتيح الحاويات الثنائية إمكانية تحديد قيم وحدات الماكرو في وقت التشغيل باستخدام قواعد "إدارة العلامات من Google"، بينما لا تتيح ملفات JSON ذلك.
يمكن تنزيل ملفات الحاويات الثنائية من واجهة الويب الخاصة بأداة "إدارة العلامات من Google"، ويجب إضافتها إلى مجلد /assets/tagmanager/ في مشروعك واتّباع النمط التالي: /assets/tagmanager/GTM-XXXX، حيث يمثّل اسم الملف رقم تعريف الحاوية.
في الحالات التي يتوفّر فيها ملف JSON بالإضافة إلى ملف حاوية ثنائي، ستستخدم حزمة SDK ملف الحاوية الثنائي كحاوية تلقائية.
استخدام وحدات ماكرو لاستدعاء الدوال
وحدات ماكرو استدعاء الدوال هي وحدات ماكرو يتم ضبطها على قيمة العرض لدالة محدّدة في تطبيقك. يمكن استخدام وحدات ماكرو استدعاء الدوال البرمجية من أجل دمج قيم وقت التشغيل مع قواعد Google Tag Manager، مثل تحديد السعر الذي سيتم عرضه للمستخدم في وقت التشغيل استنادًا إلى اللغة والعملة المحدّدتَين على الجهاز.
لضبط وحدة ماكرو لاستدعاء دالة، اتّبِع الخطوات التالية:
- حدِّد ماكرو استدعاء الدالة في واجهة الويب الخاصة بأداة "إدارة العلامات من Google". يمكن ضبط الوسيطات اختياريًا كأزواج مفتاح/قيمة.
- سجِّل
FunctionCallMacroHandlerفي تطبيقك باستخدامContainer.registerFunctionCallMacroHandler()واسم الدالة الذي ضبطته في واجهة الويب الخاصة بأداة Google Tag Manager، مع تجاهل طريقةgetValue():/** * Registers a function call macro handler. * * @param functionName The function name field, as defined in the Google Tag * Manager web interface. */ mContainer.registerFunctionCallMacroHandler(functionName, new FunctionCallMacroHandler() { /** * This code will execute when any custom macro's rule(s) evaluate to true. * The code should check the functionName and process accordingly. * * @param functionName Corresponds to the function name field defined * in the Google Tag Manager web interface. * @param parameters An optional map of parameters * as defined in the Google Tag Manager web interface. */ @Override public Object getValue(String functionName, Map<String, Object> parameters)) { if (functionName.equals("myConfiguredFunctionName")) { // Process and return the calculated value of this macro accordingly. return macro_value } return null; } });
استخدام علامات استدعاء الدوال
تتيح علامات استدعاء الدوال تنفيذ الدوال المسجّلة مسبقًا كلما تم إرسال حدث إلى طبقة البيانات وتم تقييم قواعد العلامة على أنّها true.
لضبط علامة استدعاء دالة:
- حدِّد علامة استدعاء الدالة في واجهة الويب الخاصة بأداة Google Tag Manager. يمكن ضبط الوسيطات اختياريًا كأزواج مفتاح/قيمة.
- سجِّل معالج علامة استدعاء دالة في تطبيقك باستخدام
Container.registerFunctionCallTagHandler():/** * Register a function call tag handler. * * @param functionName The function name, which corresponds to the function name field * Google Tag Manager web interface. */ mContainer.registerFunctionCallTagHandler(functionName, new FunctionCallTagHandler() { /** * This method will be called when any custom tag's rule(s) evaluates to true. * The code should check the functionName and process accordingly. * * @param functionName The functionName passed to the functionCallTagHandler. * @param parameters An optional map of parameters as defined in the Google * Tag Manager web interface. */ @Override public void execute(String functionName, Map<String, Object> parameters) { if (functionName.equals("myConfiguredFunctionName")) { // Process accordingly. } } });
ضبط فترة إعادة تحميل مخصّصة
سيحاول حزمة تطوير البرامج (SDK) الخاصة بـ Google Tag Manager استرداد حاوية جديدة إذا تجاوز عمر الحاوية الحالية 12 ساعة. لضبط فترة إعادة تحميل مخصّصة للحاوية، استخدِم Timer، كما في المثال التالي:
timer.scheduleTask(new TimerTask() { @Override public void run() { mContainer.refresh(); } }, delay, <new_period_in milliseconds>);
تصحيح الأخطاء باستخدام Logger
تعرض حزمة تطوير البرامج (SDK) الخاصة بأداة Google Tag Manager الأخطاء والتحذيرات في السجلات تلقائيًا.
يمكن أن يساعد تفعيل التسجيل المطوَّل في تصحيح الأخطاء، ويمكنك إجراء ذلك من خلال تنفيذ Logger الخاص بك باستخدام TagManager.setLogger، كما هو موضّح في المثال التالي:
TagManager tagManager = TagManager.getInstance(this); tagManager.setLogger(new Logger() { final String TAG = "myGtmLogger"; // Log output with verbosity level of DEBUG. @Override public void d(String arg0) { Log.d(TAG, arg0); } // Log exceptions when provided. @Override public void d(String arg0, Throwable arg1) { Log.d(TAG, arg0); arg1.printStackTrace(); } // Rest of the unimplemented Logger methods. });
أو يمكنك ضبط LogLevel الخاص بـ Logger الحالي باستخدام
TagManager.getLogger().setLogLevel(LogLevel)
،
كما في المثال التالي:
// Change the LogLevel to INFO to enable logging at INFO and higher levels. TagManager tagManager = TagManager.getInstance(this); tagManager.getLogger().setLogLevel(LogLevel.INFO);