إنشاء تنسيقات متجر مخصصة

يتيح لك "Google Play للأعمال" تصميم تنسيقات المتاجر وإنشائها لعملاء مؤسستك. يمكنك تخصيص تصميم المتجر عن طريق تجميع التطبيقات في مجموعات، وإعداد صفحات المتجر، وإضافة روابط سريعة تتيح الوصول إلى عدة صفحات داخل المتجر.

يجب أولاً الموافقة على جميع التطبيقات التي يتم توفيرها للمستخدم في "متجر Google Play للأعمال" من قِبل مشرف تكنولوجيا المعلومات، ثم الموافقة عليها للمستخدم وإضافتها إلى مجموعة. (راجع إضافة تطبيقات إلى تنسيق المتجر للحصول على مزيد من التفاصيل حول هذه العملية).

عناصر تصميم المتجر

يتألف تنسيق المتجر عادةً من سلسلة من الصفحات المعروضة للمستخدمين في "Google Play للأعمال". يمكن أن تحتوي كل صفحة على مجموعة واحدة أو أكثر من التطبيقات، يشار إليها باسم المجموعات. تحتوي كل مجموعة على تطبيق واحد أو أكثر.

تتيح لك المجموعات العنقودية تجميع التطبيقات ذات الصلة. على سبيل المثال، يمكنك إنشاء صفحة للتطبيقات المرتبطة بالعمل تحتوي على مجموعة Essentials ومجموعة إنجازات إنجاز. يمكن أن تحتوي مجموعة Essentials على تطبيقات مثل Notepad+ وGoogle Slides، وما إلى ذلك. يمكن أن تتضمن مجموعة "Get Things Done" (إنجاز المهام) تطبيقات مثل OneNote وWunderlist وAny.do وتطبيقات أخرى للتتبّع والتقويم والتخطيط للاجتماعات (انظر الشكل 1).

عند إنشاء صفحة، يمكنك أيضًا إضافة ما يصل إلى 10 روابط سريعة في أعلى الصفحة. الروابط السريعة تسمح للمستخدمين بالانتقال إلى الصفحات الأخرى. على سبيل المثال، يوضح الشكل 1 روابط سريعة لصفحات الأعمال والاتصالات والشؤون المالية.

يوضح الشكل 1 بعض العناصر الرئيسية لتصميم المتجر كما هو موضح على أحد الأجهزة:

نموذج شاشة من جهاز مستخدم تعرض عناصر تنسيق المتجر، بما في ذلك الروابط السريعة والصفحات ومجموعات التطبيقات
الشكل 1: نموذج شاشة من جهاز مستخدم
  • روابط سريعة: روابط اختيارية تتيح الوصول إلى صفحات أخرى. تأخذ الروابط السريعة اسم الصفحة التي تشير إليها.
  • الصفحة: صفحة مُسمّاة قابلة للتمرير عموديًا تضم مجموعات من التطبيقات.
  • المجموعة (المعروفة أيضًا باسم المجموعة): وهي لوحة عرض دوّارة للتطبيقات محدّدة ويمكن التمرير أفقيًا. يتم توسيع الصفحة إلى صفحة كاملة إذا كانت الصفحة تحتوي على مجموعة واحدة (أو انقر على "المزيد" لجعلها قابلة للتمرير عموديًا).

حدود عناصر تنسيق المتجر

عند تصميم تخطيطات المتجر وتنفيذها لعملائك، ضع هذه الحدود في الاعتبار (ترجع معظم هذه الحدود إلى مبادئ التصميم الجيد لواجهة المستخدم):

  • 100 تطبيق لكل مجموعة
  • 30 مجموعة لكل صفحة
  • 10 روابط سريعة لكل صفحة
  • 100 صفحة لكل متجر
  • 1000 منتج (تطبيق موافَق عليه) لكل مؤسسة

أسماء الصفحات والمجموعات المترجَمة

يتيح تنسيق "متجر Google Play للأعمال" استخدام الأسماء المترجمة على صفحات المتجر ومجموعات المتاجر. عند إنشاء صفحة أو مجموعة، يمكنك تقديم قائمة باللغات المتوافقة، مثل علامات اللغة في ITF والأسماء المترجَمة المرتبطة بها. إذا لم تكن لغة المستخدم مدرَجة في القائمة المتوافقة، يختار النظام أقرب مطابقة متاحة. على سبيل المثال، إذا لم يكن en-GB متاحًا، يختار النظام en-US بدلاً من ذلك. وإذا لم تتوفر أي نتائج مطابقة تقريبية، فسيختار النظام الاسم الأول في القائمة.

إضافة التطبيقات إلى تنسيق المتجر

تتم تلقائيًا إضافة جميع التطبيقات المتوفّرة في policy.productPolicy إذا كانت المؤسسة تستخدم تنسيق المتجر الأساسي. إذا كانت إحدى المؤسسات تستخدم تنسيق متجر مخصّصًا، سيتم عرض التطبيقات المتاحة بالتنسيق المخصّص وقائمة productPolicy فقط على الجهاز. جميع العناصر الموجودة في policy.productPolicy قابلة للبحث في متجر Play.

ليتمكّن المستخدم النهائي من تثبيت تطبيق من "متجر Google Play للأعمال"، يجب أن يكون التطبيق متوافقًا مع جهاز المستخدم وأن يستوفي الشرط التالي:

  • تمت إضافته إلى قائمة السماح للمستخدم (باستخدام policy.productPolicy في مورد الجهاز) وتم ضبط policy.productAvailabilityPolicy على WHITELIST، أو ضبط policy.productAvailabilityPolicy على ALL (ما يسمح بالبحث عن أي تطبيق وتثبيته).

يمكن للمستخدم استخدام ميزة البحث المضمّنة في "Google Play للأعمال" للعثور على أي تطبيق يستوفي هذه الشروط وتثبيته. ومع ذلك، لن يظهر التطبيق إلا في تنسيق المتجر الأساسي أو إذا أضفت التطبيق إلى مجموعة/مجموعة.

التطبيقات التي تم إبطال الموافقة

يمكن للمشرفين إلغاء الموافقة على التطبيق (إبطال الموافقة عليه) في أي وقت. سيظل من الممكن إضافة التطبيقات التي تم إبطال الموافقة عليها إلى المجموعات وقوائم السماح الخاصة بالمستخدمين، ولكن لن يتمكّن المستخدمون من الاطّلاع عليها أو عدم إمكانية تثبيتها من "متجر Google Play للأعمال". إذا تمت الموافقة مجددًا على تطبيق تم إبطال الموافقة عليه، ستتم إتاحة التطبيق للمستخدمين مرة أخرى في "متجر Google Play للأعمال".

التصميم الأساسي للمتجر

يكون تنسيق المتجر الأساسي مفعّلاً تلقائيًا لكل عميل من عملائك. يضم التنسيق الأساسي صفحة واحدة ومجموعة واحدة، وتعرض 1000 تطبيق كحد أقصى. يتم ترتيب التطبيقات على الصفحة حسب قيمة product ID الخاصة بها. إذا أنشأت تنسيق متجر مخصصًا (من خلال ضبط storeLayoutType ="custom")، سيتم إيقاف تنسيق المتجر الأساسي.

إنشاء تنسيقات متجر مخصَّصة

يمكن لمزوّدي إدارة الخدمات الجوّالة للمؤسسات (EMM) إنشاء تنسيقات متاجر مخصَّصة لكل عميل من عملاء المؤسسة. تتيح لك تخطيطات المتجر المخصصة إعداد مجموعات من التطبيقات وإضافة مجموعات محددة إلى الصفحات وتحديد الروابط السريعة. بما أنّك تحدّد التطبيقات التي تشكِّل كل مجموعة، يمكنك استخدام المجموعات لتجميع التطبيقات ذات الصلة (على سبيل المثال، "Essentials" و "إنجاز المهام"). لا يرى المستخدمون سوى التطبيقات التي وافق مشرف تكنولوجيا المعلومات على أذوناتها.

يحتوي مرجع واجهة برمجة التطبيقات لإدارة الخدمات الجوّالة للمؤسسات (EMM) في Google Play على معلومات عن الموارد والطرق المرتبطة التي تستخدمها لإنشاء تنسيق متجر مخصّص، وتحديدًا Storelayoutpages وStorelayouts. ترشدك الخطوات الموضحة في الأقسام أدناه إلى مثال أساسي.

مهام البرمجة

لإنشاء تنسيق مخصص على "متجر Google Play للأعمال" للعملاء، يجب عليك:

  1. إنشاء صفحة
  2. أنشئ مجموعة واحدة أو أكثر داخل الصفحات.
  3. ضبط الصفحة الرئيسية

على الأقل، يجب إنشاء صفحة واحدة على الأقل تتكون من مجموعة واحدة لتنسيق المتجر، ويجب أن تحتوي المجموعة على تطبيق واحد على الأقل. ويجب أيضًا ضبط الصفحة الرئيسية. إذا أنشأت أكثر من صفحة واحدة، يتوفّر لك خيار ضبط الروابط السريعة لعرضها في أعلى كل صفحة.

تم توضيح مهام البرمجة لإنشاء تنسيق مخصّص على "متجر Play للأعمال" أدناه، يليها مثال كامل لتخطيط المتجر.

إنشاء صفحة

تتكوّن الصفحة من مجموعة واحدة أو أكثر. تحتوي كل مجموعة على تطبيق واحد على الأقل. تم إنشاء الصفحات لمؤسسات محدّدة، لذا عليك استدعاء العمليات على مثيلات مؤسسات معيّنة (enterpriseId). يمكنك تقديم اسم سهل الاستخدام ومعلومات أقلمة لكل صفحة، بالإضافة إلى قائمة pageId التي يمكن للمستخدمين الوصول إليها من الصفحة. يتم إنشاء الصفحة الجديدة باستخدام عملية insert (Storelayoutpages.insert) على النحو الموضّح هنا:

public StorePage createPage(String enterpriseId, String name)
    throws IOException {
  List<LocalizedText> names =
      ImmutableList.of(
          new LocalizedText().setLocale("en").setText(name));
  StorePage storePage = new StorePage();
  storePage.setName(names);
  return androidEnterprise.storelayoutpages()
    .insert(enterpriseId, storePage)
    .execute();
}

إنشاء مجموعة

تحتوي المجموعات على مجموعات من التطبيقات. يتم إنشاء المجموعة أولاً، ومن ثم يمكن إضافتها إلى صفحة. لإنشاء مجموعة، استدعِ العملية insert في Storelayoutclusters ومرِّر القيم للسمات التالية:

  • قائمة productId التي يجب أن تحتويها المجموعة (على سبيل المثال، قيمة productId في Gmail هي app:com.google.android.gm)
  • اسم سهل الاستخدام للمجموعة، مثل إيجاد المهام "تم"
  • سمة enterpriseId التي يجب ربطها بالمجموعة
  • pageId (للصفحة التي يجب أن تحتوي على المجموعة)
  • موضع تصنيفات المجموعات على الصفحة (الأول، الثاني، وهكذا)

وفي ما يلي مثال لذلك:

private String insertCluster(String enterpriseId, String pageId, String name,
    List<String> productIds, String orderInPage) throws IOException {
  StoreCluster storeCluster = new StoreCluster();
  storeCluster.setName(
      ImmutableList.of(
          new LocalizedText().setLocale("en").setText(name)));
  storeCluster.setProductId(productIds);
  storeCluster.setOrderInPage(orderInPage);
  return androidEnterprise.storelayoutclusters()
    .insert(enterpriseId, pageId, storeCluster)
    .execute()
    .getId();
}

ضبط الصفحة الرئيسية

إن الصفحة الأولى التي يتم عرضها في "Google Play للأعمال" على جهاز المستخدم هو الصفحة الرئيسية. بالنسبة إلى إدارة الخدمات الجوّالة للمؤسسات (EMM)، يمكنك تحديد صفحة رئيسية لكل عميل من عملائك. وتكون الصفحة مرئية دائمًا، حتى إذا كانت فارغة ولا يمكن حذفها.

في هذا المثال، يتم استرجاع رقم تعريف الصفحة الرئيسية للسمة enterpriseId المحدّدة:

public StoreLayout getStoreLayout(String enterpriseId) throws IOException {
  return androidEnterprise
    .enterprises()
    .getStoreLayout(enterpriseId)
    .execute();
}

يحدّد المثال التالي الصفحة الرئيسية لأحد العملاء من خلال توفير enterpriseId وpageId للصفحة الرئيسية الخاصة ببيانات العميل على:

public StoreLayout setStoreLayout(String enterpriseId, String homepageId)
    throws IOException {
  StoreLayout storeLayout = new StoreLayout();
  storeLayout.setHomepageId(homepageId);

  return androidEnterprise
    .enterprises()
    .setStoreLayout(enterpriseId, storeLayout)
    .execute();
}

تظهر الروابط السريعة في أعلى كل صفحة، ما يتيح للمستخدمين التنقّل بسهولة بين الصفحات في المتجر. لاستخدام الروابط السريعة، عليك أولاً الحصول على pageId للصفحة (تم إرجاعها من خلال insert) وإضافة الرابط إلى الصفحة. على سبيل المثال، إذا أنشأت ثلاث صفحات تكون pageId فيها هي p1 وp2 وp3، يمكنك إضافة روابط سريعة من الصفحة الأولى إلى الصفحتين الأخريين باستخدام ما يلي:

StorePage storePage = new StorePage();
storePage.setName(
    ImmutableList.of(new LocalizedText().setLocale("en").setText(title)));
storePage.setLink(ImmutableList.of("p2", "p3");
return androidEnterprise.storelayoutpages()
  .update(enterpriseId, "p1", storePage)
  .execute();

مثال

إليك مثال كامل ينشئ متجرًا أساسيًا يتكون من ثلاث صفحات مترابطة. تشكل مجموعات التطبيقات المتشابهة كل صفحة. يتم إنشاء كل صفحة من خلال تحديد enterpriseId الخاص بالعميل وضبط name فقط للحصول على pageId الخاصة بها والتي يتم استخدامها بعد ذلك لإنشاء رابط سريع يؤدي إلى الصفحة.

// Create a basic page and return the pageId.
private String insertPage(String enterpriseId, String title,
    List<String> links) throws IOException {
  List<LocalizedText> names =
      ImmutableList.of(new LocalizedText().setLocale("en").setText(title));
  StorePage page = new StorePage();
  page.setName(names);
  page.setLink(links);
  return enterprise.storelayoutpages().insert(enterpriseId, page).execute().getId();
}

public StoreLayout setStoreLayout(String enterpriseId, String homepageId)
    throws IOException {
  StoreLayout storeLayout = new StoreLayout();
  storeLayout.setHomepageId(homepageId);

  return androidEnterprise
      .enterprises()
      .setStoreLayout(enterpriseId, storeLayout)
      .execute();
}

private String insertCluster(String enterpriseId, String pageId, String name,
    List<String> productIds, String orderInPage) throws IOException {
  StoreCluster cluster = new StoreCluster();
  List<LocalizedText> names =
      ImmutableList.of(new LocalizedText().setLocale("en").setText(name));
  cluster.setName(names);
  cluster.setProductId(productIds);
  cluster.setOrderInPage(orderInPage);
  return androidEnterprise.storelayoutclusters()
      .insert(enterpriseId, pageId, cluster)
      .execute()
      .getId();
}

private void updatePage(String enterpriseId, String pageId, String title,
    List<String> links) throws IOException {
  List<LocalizedText> names =
      ImmutableList.of(new LocalizedText().setLocale("en").setText(title));
  StorePage page = new StorePage();
  page.setName(names);
  page.setLink(links);
  enterprise.storelayoutpages()
      .update(enterpriseId, pageId, page).execute();
}

private void makeStore(String enterpriseId) throws IOException {
  // Create the pages.
  String page1 = insertPage(enterpriseId, "Home");
  String page2 = insertPage(enterpriseId, "Productivity");
  String page3 = insertPage(enterpriseId, "Accounting");

  // Set the homepage (page that displays by default when store is opened).
  setStoreLayout(enterpriseId, page1);

  // Add the links to the pages. This makes a small tree.
  updatePage(enterpriseId, page1, "Home", ImmutableList.of(page2, page3));
  updatePage(enterpriseId, page2, "Productivity", ImmutableList.of(page1));
  updatePage(enterpriseId, page3, "Accounting", ImmutableList.of(page1));

  // Add clusters with contents.
  insertCluster(
      enterpriseId,
      page1,
      "Getting Things Done",
      ImmutableList.of(
          "app:com.mytodolist",
          "app:com.google.android.gm",
          "app:com.google.android.docs"),
      "1");
  insertCluster(
      enterpriseId,
      page1,
      "Strategy",
      ImmutableList.of(
          "app:com.myplanner",
          "app:com.stratego"),
      "2");
  insertCluster(
      enterpriseId,
      page2,
      "Editors",
      ImmutableList.of(
          "app:com.myeditor",
          "app:com.betteredit",
          "app:com.lazyguy"),
      "1");
  insertCluster(
      enterpriseId,
      page2,
      "Time Management",
      ImmutableList.of(
          "app:com.mytimetracker",
          "app:com.lazygal",
          "app:com.lazyguy"),
      "2");
  insertCluster(
      enterpriseId,
      page2,
      "Accounting",
      ImmutableList.of(
          "app:com.mymoney",
          "app:com.taxpro",
          "app:com.balances"),
      "3");
}