ContainerOpener

حصة عامة ContainerOpener (أداة فتح الحاويات)

فئة مساعدة لفتح الحاويات

وهذا برنامج تضمين حول طريقة openContainer(String, Container.Callback) للمستخدمين الذين لا يحتاجون إلى مستوى التحكّم الدقيق الذي توفّره.

هناك ثلاث حالات يمكن أن تكون فيها الحاوية:

  • الإعدادات التلقائية: هذه هي الحاوية التي يتم شحنها مع التطبيق (إما حاوية ثنائية أو ملف json يتم تحويله إلى حاوية).
  • قديمة: حاوية تم تنزيلها من الخادم، ولكن ليس مؤخرًا.
  • حديثة: حاوية تم تنزيلها من الخادم مؤخرًا.

في ما يلي مثال يريد فيه المتصل الانتظار حتى 100 مللي ثانية للحصول على الحاوية غير التلقائية (استرداد الحاوية التلقائية في حال انتهاء المهلة).

   ContainerFuture future =
       ContainerOpener.openContainer(tagManager, containerId, OpenType.PREFER_NON_DEFAULT, 100);
   Container container = future.get();
 

إذا أراد المتصل أن يتم إشعاره بشكل غير متزامن عندما تكون الحاوية متاحة، ولكنه يريد تحديد المهلة الزمنية يدويًا لتكون 0.5 ثانية، يجب أن يتضمن المتصل الفئة الفرعية ContainerOpener.Notifier. مثال على الاستخدام:

   ContainerOpener.openContainer(tagManager, containerId, OpenType.PREFER_NON_DEFAULT,
       500, new ContainerOpener.Notifier() {
         @Override
         void containerAvailable(Container container) {
           // Code to handle the container available notification and save the container.
         }
       });
 

ملخص الفئة المدمَجة

واحدة ContainerOpener.ContainerFuture تمثّل هذه السمة كائنًا يعرض حاوية. 
واحدة ContainerOpener.Notifier الكائن الذي سيتلقى إشعارًا عندما تكون الحاوية متاحة للاستخدام. 
تعداد ContainerOpener.OpenType الإعدادات المفضَّلة لفتح حاوية

الملخّص الثابت

شعر طويل DEFAULT_TIMEOUT_IN_MILLIS المهلة التلقائية بالملي ثانية لطلب الحاوية.

ملخّص الطريقة العلنية

static ContainerOpener.ContainerFuture
openContainer(TagManager tagManager, String containerId, ContainerOpener.OpenType openType, Long timeoutInMillis)
قيمة فارغة
openContainer(TagManager tagManager وString containerId وContainerOpener.OpenType openType وLong timeoutInMillis وContainerOpener.Notifier notifier)

الثوابت

نهائي ثابت طويل DEFAULT_TIMEOUT_IN_MILLIS

المهلة التلقائية بالملي ثانية لطلب الحاوية.

القيمة الثابتة: 2000

الطرق العامة

public static ContainerOpener.ContainerFuture openContainer (TagManager tagManager, سلسلة containerId, ContainerOpener.OpenType {12Long4}TagManager

الانتظار لمدة تصل إلى timeoutInMillis مرة ليتم تحميل الحاوية (غير تلقائي أو حديث استنادًا إلى openType محدّد).

إذا كان النوع المفتوح هو PREFER_NON_DEFAULT، يتم تحميل حاوية غير تلقائية (تم حفظها أو استردادها من الشبكة) وستتم إزالة حظر ContainerFuture فور حدوث أي مما يلي:

  • تحميل حاوية محفوظة.
  • إذا لم تكن هناك حاوية محفوظة، يتم تحميل حاوية شبكة أو يحدث خطأ في الشبكة.
  • تنتهي صلاحية الموقّت.

في حال حدوث خطأ في الشبكة أو انتهاء صلاحية الموقّت، قد يعرض get() حاوية تلقائية.

إذا كان النوع المفتوح هو PREFER_FRESH، يتم تحميل حاوية جديدة (محفوظة أو مُستردَّة من الشبكة) وتتم إزالة حظر ContainerFuture حال حدوث أي مما يلي:

  • يتم تحميل حاوية جديدة محفوظة.
  • إذا لم تكن هناك أي حاوية محفوظة أو أي حاوية محفوظة قديمة، يتم تحميل حاوية شبكة أو يحدث خطأ في الشبكة.
  • تنتهي صلاحية الموقّت.

وفي حال حدوث خطأ في الشبكة أو انتهاء صلاحية الموقّت، قد يعرض get() حاوية تلقائية أو حاوية قديمة محفوظة.

إذا اتصلت بـ openContainer في المرة الثانية باستخدام containerId محدّد، سيتم عرض ContainerFuture وسيعرض get() الحاوية نفسها كما في المكالمة الأولى.

المَعلمات
tagManager TagManager التي يتم طلب openContainer عليها
containerId رقم تعريف الحاوية المطلوب تحميلها
openType اختيار كيفية فتح الحاوية
timeoutInMillis الحدّ الأقصى لعدد الملي ثانية للانتظار لتحميل الحاوية (من المتجر المحفوظ). في حال عدم تضمين قيمة فارغة، سيتم استخدام DEFAULT_TIMEOUT_IN_MILLIS.
المرتجعات
  • كائن تُرجع طريقة get إليه الحاوية، مع إمكانية حظر ما يصل إلى المهلة inMillis حتى تصبح الحاوية متاحة.

public static void openContainer (TagManager tagManager, String tagManager, ContainerOpener.OpenType openContainer (TagManager tagManager?tagManagerContainerOpener.Notifier

الانتظار لمدة تصل إلى timeoutInMillis مرة ليتم تحميل الحاوية (غير تلقائي أو حديث استنادًا إلى openType محدّد).

إذا كان النوع المفتوح هو PREFER_NON_DEFAULT، يتم تحميل حاوية غير تلقائية (محفوظة أو يتم استردادها من الشبكة) وتمريرها إلى جهاز الإشعار. يتم استدعاء جهاز التنبيه فور حدوث أحد الحالات التالية:

  • تحميل حاوية محفوظة.
  • إذا لم تكن هناك حاوية محفوظة، يتم تحميل حاوية شبكة أو يحدث خطأ في الشبكة.
  • تنتهي صلاحية الموقّت.

وفي حال حدوث خطأ في الشبكة أو انتهاء صلاحية الموقّت، تكون الحاوية التي تم تمريرها إلى containerAvailable(Container) هي حاوية تلقائية.

إذا كان النوع المفتوح هو PREFER_FRESH، يتم تحميل حاوية جديدة (محفوظة أو مُستردَّة من الشبكة) وتمريرها إلى جهاز الإشعار. يتم استدعاء جهاز التنبيه فور حدوث أحد الحالات التالية:

  • يتم تحميل حاوية جديدة محفوظة.
  • إذا لم تكن هناك أي حاوية محفوظة أو أي حاوية محفوظة قديمة، يتم تحميل حاوية شبكة أو حدوث خطأ في الشبكة.
  • تنتهي صلاحية الموقّت.

في حال حدوث خطأ في الشبكة أو انتهاء صلاحية الموقّت، قد تكون الحاوية التي تم تمريرها إلى containerAvailable(Container) عبارة عن حاوية تلقائية أو قديمة محفوظة.

إذا اتصلت بـ openContainer(TagManager, String, ContainerOpener.OpenType, Long) للمرة الثانية باستخدام عنصر containerId محدّد، سيتم تمرير الحاوية نفسها التي تم عرضها من المكالمة السابقة إلى المُرسِل فور توفّره.

المَعلمات
tagManager TagManager التي يتم طلب openContainer عليها
containerId رقم تعريف الحاوية المطلوب تحميلها
openType اختيار كيفية فتح الحاوية
timeoutInMillis الحدّ الأقصى لعدد المللي ثانية للانتظار لتحميل الحاوية (من المتجر و/أو الشبكة المحفوظة). في حال عدم تضمين قيمة فارغة، سيتم استخدام DEFAULT_TIMEOUT_IN_MILLIS.
جهاز التنبيه هو الإشعار الذي سيتم استدعاؤه عند توفر الحاوية. سيتم طلبها مع الحاوية المحفوظة أو الشبكة، إذا كانت متاحة وتحميلها قبل انتهاء المهلة. وبخلاف ذلك، سيتم طلبها باستخدام الحاوية التلقائية. قد يتم استدعاء مُرسِل الإشعار من سلسلة محادثات مختلفة.