مشاركة أذونات التطبيقات مع Google TV باستخدام حزمة Engage SDK

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

المتطلّبات الأساسية

يجب إعداد خلاصة إجراءات الوسائط قبل استخدام واجهة برمجة التطبيقات الخاصة بأذونات الجهاز. إذا لم يسبق لك ذلك، أكمل عملية إعداد خلاصة مهام الوسائط.

العمل التحضيري

قبل البدء، أكمِل الخطوات التالية تأكَّد من أنّ تطبيقك يستهدف المستوى 19 أو مستوى أحدث لواجهة برمجة التطبيقات لإجراء عملية الدمج هذه.

  1. أضِف مكتبة com.google.android.engage إلى تطبيقك باتّباع الخطوات التالية:

    تتوفّر حِزم SDK منفصلة لاستخدامها في عملية الدمج، إحداها للتطبيقات المتوافقة مع الأجهزة الجوّالة والأخرى للتطبيقات المتوافقة مع أجهزة التلفزيون.

    لأجهزة الجوّال

    
      dependencies {
        implementation 'com.google.android.engage:engage-core:1.5.5
      }
    

    للتلفزيون

    
      dependencies {
        implementation 'com.google.android.engage:engage-tv:1.0.2
      }
    
  2. اضبط بيئة خدمة Engage على الإنتاج في ملف AndroidManifest.xml.

    ملف APK للأجهزة الجوّالة

    
    <meta-data
          android:name="com.google.android.engage.service.ENV"
          android:value="PRODUCTION">
    </meta-data>
    

    حزمة APK للتلفزيون

    
    <meta-data
        android:name="com.google.android.engage.service.ENV"
        android:value="PRODUCTION">
    </meta-data>
    
  3. قبل إرسال حزمة APK إلى Google، اضبط بيئة خدمة التفاعل على الإنتاج في ملف AndroidManifest.xml. للحصول على أفضل أداء وضمان التوافق في المستقبل، لا تنشر البيانات إلا عندما يكون التطبيق في المقدّمة ويتفاعل معه المستخدم بشكل نشط، مثل عند تشغيل التطبيق أو بعد تسجيل الدخول أو أثناء الاستخدام النشط. ننصحك بعدم النشر من خلال عمليات الخلفية.

  4. نشر معلومات الاشتراك في الأحداث التالية:

    1. يسجّل المستخدم الدخول إلى تطبيقك.
    2. يبدّل المستخدم بين الملفات الشخصية (إذا كانت الملفات الشخصية متاحة).
    3. يشترك المستخدم في اشتراك جديد.
    4. يرقّي المستخدم اشتراكًا حاليًا.
    5. انتهاء صلاحية اشتراك المستخدم

التكامل

يقدّم هذا القسم أمثلة على الرموز والإرشادات اللازمة لتنفيذ AccountProfile وSubscriptionEntity من أجل إدارة أنواع الاشتراكات المختلفة.

حساب المستخدم وملفه الشخصي

للسماح باستخدام ميزات مخصّصة على Google TV، يجب تقديم معلومات الحساب. استخدِم AccountProfile لتقديم ما يلي:

  1. معرّف الحساب: معرّف فريد يمثّل حساب المستخدِم. يمكن أن يكون هذا المعرّف هو رقم تعريف الحساب الفعلي أو نسخة مشوّشة بشكل مناسب.
// Set the account ID to which the subscription applies.
// Don't set the profile ID because subscription applies to account level.
val accountProfile = AccountProfile.Builder()
  .setAccountId("user_account_id")
  .setProfileId("user_profile id")
  .build();

اشتراك في مستوى مشترك

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

  1. نوع الاشتراك: يجب الإشارة بوضوح إلى خطة الاشتراك المحدّدة التي اشترك فيها المستخدم.

    1. SUBSCRIPTION_TYPE_ACTIVE: يشير إلى أنّ المستخدم لديه اشتراك مدفوع نشط.
    2. SUBSCRIPTION_TYPE_ACTIVE_TRIAL: يملك المستخدم اشتراكًا تجريبيًا.
    3. SUBSCRIPTION_TYPE_INACTIVE: يعني أنّ المستخدم لديه حساب ولكن ليس لديه اشتراك نشط أو فترة تجريبية نشطة.
  2. وقت انتهاء الصلاحية: وقت اختياري بالمللي ثانية. حدِّد تاريخ انتهاء صلاحية الاشتراك.

  3. اسم حزمة مقدّم الخدمة: حدِّد اسم حزمة التطبيق الذي يتعامل مع الاشتراك.

مثال على خلاصة مقدّم المحتوى الإعلامي النموذجي

"actionAccessibilityRequirement": [
  {
    "@type": "ActionAccessSpecification",
    "category": "subscription",
    "availabilityStarts": "2022-06-01T07:00:00Z",
    "availabilityEnds": "2026-05-31T07:00:00Z",
    "requiresSubscription": {
    "@type": "MediaSubscription",
    // Don't match this string,
    // ID is only used to for reconciliation purpose
    "@id": "https://www.example.com/971bfc78-d13a-4419",
    // Don't match this, as name is only used for displaying purpose
    "name": "Basic common name",
    "commonTier": true
  }

ينشئ المثال التالي SubscriptionEntity لمستخدم:

val subscription = SubscriptionEntity
  .Builder()
  setSubscriptionType(
    SubscriptionType.SUBSCRIPTION_TYPE_ACTIVE
  )
  .setProviderPackageName("com.google.android.example")
  // Optional
  // December 30, 2025 12:00:00AM in milliseconds since epoch
  .setExpirationTimeMillis(1767052800000)
  .build();

اشتراك Premium

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

يتضمّن إذن الاستخدام هذا الحقول التالية:

  1. المعرّف: سلسلة المعرّف المطلوبة لهذا الاستحقاق. يجب أن يتطابق هذا المعرّف مع أحد معرّفات الأهلية (يُرجى العِلم أنّ هذا المعرّف ليس حقل المعرّف) المقدَّمة في خلاصة مقدّم خدمة الوسائط المنشورة على Google TV.
  2. الاسم: هذه معلومات مساعدة تُستخدَم لمطابقة الأهلية. على الرغم من أنّ توفير اسم إذن سهل القراءة للمستخدم أمر اختياري، إلا أنّه يحسّن فهم الأذونات الممنوحة للمستخدمين لكلّ من المطوّرين وفِرق الدعم. على سبيل المثال: Sling Orange.
  3. Expiration TimeMillis: يمكنك اختياريًا تحديد وقت انتهاء الصلاحية بالملي ثانية لإذن الاستخدام هذا، إذا كان يختلف عن وقت انتهاء صلاحية الاشتراك. بشكلٍ تلقائي، ستنتهي صلاحية الاستخدام عند انتهاء صلاحية الاشتراك.

إليك مقتطفًا من خلاصة مقدّم وسائط نموذجية:

"actionAccessibilityRequirement": [
  {
    "@type": "ActionAccessSpecification",
    "category": "subscription",
    "availabilityStarts": "2022-06-01T07:00:00Z",
    "availabilityEnds": "2026-05-31T07:00:00Z",
    "requiresSubscription": {
    "@type": "MediaSubscription",
    // Don't match this string,
    // ID is only used to for reconciliation purpose
    "@id": "https://www.example.com/971bfc78-d13a-4419",

    // Don't match this, as name is only used for displaying purpose
    "name": "Example entitlement name",
    "commonTier": false,
    // match this identifier in your API. This is the crucial
    // entitlement identifier used for recommendation purpose.
    "identifier": "example.com:entitlementString1"
  }

ينشئ المثال التالي SubscriptionEntity لمستخدم مشترك:

// Subscription with entitlements.
// The entitlement expires at the same time as its subscription.
val subscription = SubscriptionEntity
  .Builder()
  .setSubscriptionType(
    SubscriptionType.SUBSCRIPTION_TYPE_ACTIVE
  )
  .setProviderPackageName("com.google.android.example")
  // Optional
  // December 30, 2025 12:00:00AM in milliseconds
  .setExpirationTimeMillis(1767052800000)
  .addEntitlement(
    SubscriptionEntitlement.Builder()
    // matches with the identifier in media provider feed
    .setEntitlementId("example.com:entitlementString1")
    .setDisplayName("entitlement name1")
    .build()
  )
  .build();
// Subscription with entitlements
// The entitement has different expiration time from its subscription
val subscription = SubscriptionEntity
  .Builder()
  .setSubscriptionType(
    SubscriptionType.SUBSCRIPTION_TYPE_ACTIVE
  )
  .setProviderPackageName("com.google.android.example")
  // Optional
  // December 30, 2025 12:00:00AM in milliseconds
  .setExpirationTimeMillis(1767052800000)
  .addEntitlement(
    SubscriptionEntitlement.Builder()
    .setEntitlementId("example.com:entitlementString1")
    .setDisplayName("entitlement name1")
    // You may set the expiration time for entitlement
    // December 15, 2025 10:00:00 AM in milliseconds
    .setExpirationTimeMillis(1765792800000)
    .build())
  .build();

اشتراك في حزمة خدمات مرتبطة

على الرغم من أنّ الاشتراكات تكون عادةً خاصة بموفّر الوسائط في التطبيق الأصلي، يمكن ربط اشتراك بحزمة خدمة مرتبطة من خلال تحديد اسم حزمة الخدمة المرتبطة ضمن الاشتراك.

يوضّح نموذج الرمز البرمجي التالي كيفية إنشاء اشتراك مستخدم.

// Subscription for linked service package
val subscription = SubscriptionEntity
  .Builder()
  .setSubscriptionType(
    SubscriptionType.SUBSCRIPTION_TYPE_ACTIVE
  )
  .setProviderPackageName("com.google.android.example")
  // Optional
  // December 30, 2025 12:00:00AM in milliseconds since epoch
  .setExpirationTimeMillis(1767052800000)
  .build();

بالإضافة إلى ذلك، إذا كان لدى المستخدم اشتراك آخر في خدمة فرعية، أضِف اشتراكًا آخر واضبط اسم حزمة الخدمة المرتبطة وفقًا لذلك.

// Subscription for linked service package
val linkedSubscription = Subscription
  .Builder()
  .setSubscriptionType(
    SubscriptionType.SUBSCRIPTION_TYPE_ACTIVE
  )
  .setProviderPackageName("linked service package name")
  // Optional
  // December 30, 2025 12:00:00AM in milliseconds since epoch
  .setExpirationTimeMillis(1767052800000)
  .addBundledSubscription(
    BundledSubscription.Builder()
      .setBundledSubscriptionProviderPackageName(
        "bundled-subscription-package-name"
      )
      .setSubscriptionType(SubscriptionType.SUBSCRIPTION_TYPE_ACTIVE)
      .setExpirationTimeMillis(111)
      .addEntitlement(
        SubscriptionEntitlement.Builder()
        .setExpirationTimeMillis(111)
        .setDisplayName("Silver subscription")
        .setEntitlementId("subscription.tier.platinum")
        .build()
      )
      .build()
  )
    .build();

يمكنك أيضًا إضافة امتيازات إلى اشتراك في خدمة مرتبطة.

توفير مجموعة اشتراكات

تشغيل مهمة نشر المحتوى أثناء عمل التطبيق في المقدّمة

استخدِم طريقة publishSubscriptionCluster() من فئة AppEngagePublishClient لنشر عنصر SubscriptionCluster.

استخدِم isServiceAvailable للتحقّق مما إذا كانت الخدمة متاحة للتكامل.

client.publishSubscription(
  PublishSubscriptionRequest.Builder()
    .setAccountProfile(accountProfile)
    .setSubscription(subscription)
    .build();
  )

استخدِم setSubscription() للتأكّد من أنّ المستخدم يجب أن يكون لديه اشتراك واحد فقط في الخدمة.

استخدِم addLinkedSubscription() أو addLinkedSubscriptions() اللذين يقبلان قائمة بالاشتراكات المرتبطة، وذلك للسماح للمستخدم بالحصول على صفر أو أكثر من الاشتراكات المرتبطة.

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

تحديث الاشتراك

  1. لتقديم تحديثات فورية عند إجراء تغييرات، عليك استدعاء publishSubscriptionCluster() كلما تغيّرت حالة اشتراك المستخدم مثل التفعيل أو الإلغاء أو الترقية أو الرجوع إلى إصدار أقدم.
  2. لتقديم عملية تحقّق منتظمة من الدقة المستمرة، اتّصِل بالدالة publishSubscriptionCluster() مرة واحدة على الأقل شهريًا.

  3. لحذف بيانات "اقتراحات الفيديو"، عليك حذف بيانات المستخدم يدويًا من خادم Google TV قبل فترة الاحتفاظ العادية البالغة 60 يومًا، وذلك باستخدام الطريقة client.deleteClusters(). يؤدي هذا الإجراء إلى حذف جميع بيانات العثور على الفيديوهات الحالية لملف الحساب أو للحساب بأكمله، وذلك استنادًا إلى DeleteReason المحدّد.

    مقتطف الرمز البرمجي لإزالة اشتراك المستخدم

      // If the user logs out from your media app, you must make the following call
      // to remove subscription and other video discovery data from the current
      // google TV device.
      client.deleteClusters(
        new DeleteClustersRequest.Builder()
          .setAccountProfile(
            AccountProfile
              .Builder()
              .setAccountId()
              .setProfileId()
              .build()
          )
        .setReason(DeleteReason.DELETE_REASON_USER_LOG_OUT)
        .build()
        )
      ```
    Following code snippet demonstrates removal of user subscription
    when user revokes the consent.
    
    ```Kotlin
      // If the user revokes the consent to share across device, make the call
      // to remove subscription and other video discovery data from all google
      // TV devices.
      client.deleteClusters(
        new DeleteClustersRequest.Builder()
          .setAccountProfile(
            AccountProfile
            .Builder()
            .setAccountId()
            .setProfileId()
            .build()
          )
          .setReason(DeleteReason.DELETE_REASON_LOSS_OF_CONSENT)
          .build()
      )
      ```
    
    Following code demonstrates how to remove subscription data on user profile
    deletion.
    
    ```Kotlin
    // If the user delete a specific profile, you must make the following call
    // to remove subscription data and other video discovery data.
    client.deleteClusters(
      new DeleteClustersRequest.Builder()
      .setAccountProfile(
        AccountProfile
        .Builder()
        .setAccountId()
        .setProfileId()
        .build()
      )
      .setReason(DeleteReason.DELETE_REASON_ACCOUNT_PROFILE_DELETION)
      .build()
    )
    

الاختبار

يقدّم هذا القسم دليلاً تفصيليًا لاختبار عملية تنفيذ الاشتراكات. تأكَّد من دقة البيانات والوظائف المناسبة قبل الإطلاق.

قائمة التحقّق من عملية الدمج

  1. يجب أن يتم النشر عندما يكون التطبيق في المقدّمة ويتفاعل معه المستخدم بشكل نشط.

  2. النشر عند:

    • يسجّل المستخدم الدخول لأول مرة.
    • يغيّر المستخدم الملف الشخصي (في حال توفُّر الملفات الشخصية).
    • يشتري المستخدم اشتراكًا جديدًا.
    • يرقّي المستخدم اشتراكه.
    • انتهاء صلاحية اشتراك المستخدم
  3. تحقَّق مما إذا كان التطبيق يستدعي واجهات برمجة التطبيقات isServiceAvailable() وpublishClusters() بشكل صحيح في logcat عند نشر الأحداث.

  4. تأكَّد من أنّ البيانات ظاهرة في تطبيق التحقّق. يجب أن يعرض تطبيق التحقّق الاشتراك كصف منفصل. عند استدعاء واجهة برمجة التطبيقات الخاصة بالنشر، من المفترض أن تظهر البيانات في تطبيق التحقّق.

    • تأكَّد من عدم ضبط علامة خدمة التفاعل على الإنتاج في ملف بيان Android الخاص بالتطبيق.
    • ثبِّت تطبيق Engage Verification وافتحه.
    • إذا كانت قيمة isServiceAvailable هي false في تطبيق التحقّق، انقر على الزر Toggle داخل تطبيق التحقّق لضبطها على true.
    • أدخِل اسم حزمة التطبيق، وسيتم تلقائيًا عرض البيانات المنشورة.
  5. انتقِل إلى التطبيق ونفِّذ كلّاً من الإجراءات التالية:

    • سجِّل الدخول.
    • التبديل بين الملفات الشخصية (إذا كان ذلك متاحًا)
    • شراء اشتراك جديد
    • ترقية اشتراك حالي
    • انتهاء صلاحية الاشتراك

التأكّد من عملية الدمج

لاختبار عملية الدمج، استخدِم .

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

  1. بالنسبة إلى كل حدث من الأحداث، تحقَّق مما إذا كان التطبيق قد استدعى واجهة برمجة التطبيقات publishSubscription. تحقَّق من البيانات المنشورة في تطبيق التحقّق. التأكّد من أنّ كل شيء باللون الأخضر في تطبيق التحقّق
  2. إذا كانت جميع معلومات المؤسسة صحيحة، ستظهر علامة صح خضراء "كل شيء على ما يرام" في جميع المؤسسات.

    لقطة شاشة تبيّن نجاح عملية إثبات الملكية باستخدام التطبيق
    الشكل 1. الاشتراك بنجاح
  3. يتم أيضًا تمييز المشاكل في تطبيق التحقّق

    لقطة شاشة لخطأ في تطبيق التحقّق
    الشكل 2.تعذّر الاشتراك
  4. للاطّلاع على المشاكل في الاشتراك المجمّع، استخدِم جهاز التحكّم عن بُعد في التلفزيون للتركيز على هذا الاشتراك المجمّع المحدّد، ثم انقر للاطّلاع على المشاكل. قد تحتاج أولاً إلى التركيز على الصف والانتقال إلى اليسار للعثور على بطاقة "الاشتراك المجمّع". يتم تمييز المشاكل باللون الأحمر كما هو موضّح في الشكل 3. يمكنك أيضًا استخدام جهاز التحكّم عن بُعد للانتقال إلى الأسفل والاطّلاع على المشاكل في الأذونات ضمن الاشتراك المجمّع.

    لقطة شاشة لتفاصيل خطأ تطبيق التحقّق
    الشكل 3:أخطاء الاشتراك
  5. للاطّلاع على المشاكل في حق الوصول، استخدِم جهاز التحكّم عن بُعد في التلفزيون للتركيز على حق الوصول المحدّد هذا، ثم انقر عليه للاطّلاع على المشاكل. يتم تمييز المشاكل باللون الأحمر.

    لقطة شاشة لخطأ في تطبيق التحقّق
    الشكل 4:تفاصيل خطأ الاشتراك

تنزيل

قبل تنزيل التطبيق، عليك الموافقة على الأحكام والشروط التالية.

الأحكام والشروط

هذه هي اتفاقية ترخيص "حزمة تطوير برامج Android".

1. المقدّمة

1.1 يتم ترخيص "حزمة تطوير برامج Android" (المشار إليها في اتفاقية الترخيص باسم "SDK" وعلى وجه التحديد ملفات نظام Android وواجهات برمجة التطبيقات المجمّعة وإضافات Google APIs) بموجب بنود اتفاقية الترخيص. تشكِّل "اتفاقية الترخيص" عقدًا ملزمًا قانونًا بينك وبين Google في ما يتعلّق باستخدامك لحزمة تطوير البرامج (SDK). 1.2 يشير "Android" إلى حزمة برامج Android للأجهزة، وفقًا لما هو متاح ضمن مشروع Android Open Source Project، المتاح على عنوان URL التالي: https://source.android.com/، وفقًا لما يتم تحديثه من حين لآخر. 1.3 يعني "التنفيذ المتوافق" أي جهاز Android (1) يتوافق مع مستند "تعريف التوافق مع Android"، الذي يمكن العثور عليه على موقع التوافق مع Android (https://source.android.com/compatibility) والذي يمكن تحديثه من حين لآخر، و (2) يجتاز بنجاح مجموعة اختبار التوافق مع Android (CTS). 1.4 تشير "Google" إلى شركة Google LLC، المنظّمة بموجب قوانين ولاية ديلاوير في الولايات المتحدة الأمريكية، وتعمل بموجب قوانين الولايات المتحدة الأمريكية ويقع مقرّها الرئيسي في 1600 Amphitheatre Parkway, Mountain View, CA 94043, USA.

2. قبول اتفاقية الترخيص هذه

2.1 لاستخدام حزمة SDK، يجب عليك أولاً الموافقة على اتفاقية الترخيص. ولا يجوز لك استخدام حزمة تطوير البرامج (SDK) في حال عدم قبول اتفاقية الترخيص. 2.2 يعني النقر لقبول و/أو استخدام حزمة تطوير البرامج (SDK) هذه أنك توافق بموجب هذه الاتفاقية على بنود اتفاقية الترخيص. 2.3 لا يجوز لك استخدام حزمة تطوير البرامج (SDK) ولا يجوز لك قبول اتفاقية الترخيص إذا كنت شخصًا محظورًا من استلام حزمة تطوير البرامج (SDK) بموجب قوانين الولايات المتحدة أو البلدان الأخرى، بما في ذلك البلد الذي تقيم فيه أو الذي تستخدم الحزمة منه. 2.4 إذا كنت توافق على الالتزام باتفاقية الترخيص بالنيابة عن صاحب العمل الذي تعمل لديه أو كيان آخر، فإنك تقر وتضمن أن لديك كامل السلطة القانونية لإلزام صاحب العمل أو الكيان باتفاقية الترخيص. وإذا لم يكن لديك التفويض اللازم، لا يجوز لك قبول "اتفاقية الترخيص" أو استخدام حزمة تطوير البرامج (SDK) نيابةً عن صاحب العمل أو الكيان الآخر.

3. ترخيص حزمة تطوير البرامج (SDK) من Google

3.1 بموجب بنود اتفاقية الترخيص، تمنحك Google ترخيصًا محدودًا وعالميًا وغير خاضع لحقوق الملكية وغير قابل للتنازل عنه وغير حصري وغير قابل للترخيص من الباطن لاستخدام حزمة SDK فقط لتطوير تطبيقات متوافقة مع تطبيقات Android. 3.2 لا يجوز لك استخدام حزمة تطوير البرامج (SDK) هذه لتطوير تطبيقات لأنظمة أساسية أخرى (بما في ذلك عمليات التنفيذ غير المتوافقة لنظام التشغيل Android) أو لتطوير حزمة تطوير برامج (SDK) أخرى. يمكنك بالطبع تطوير تطبيقات لأنظمة أساسية أخرى، بما في ذلك عمليات التنفيذ غير المتوافقة لنظام التشغيل Android، بشرط عدم استخدام حزمة تطوير البرامج (SDK) هذه لهذا الغرض. 3.3 أنت توافق على أنّ Google أو الجهات الخارجية تمتلك كل الحقوق القانونية والملكية والمصلحة في حزمة تطوير البرامج (SDK)، بما في ذلك أي حقوق ملكية فكرية تتضمّنها حزمة تطوير البرامج (SDK). وتعني "حقوق الملكية الفكرية" أي حقوق بموجب قانون براءات الاختراع وقانون حقوق الطبع والنشر وقانون سر المهنة وقانون العلامة التجارية وأي حقوق ملكية أخرى. تحتفظ Google بجميع الحقوق غير الممنوحة لك صراحةً. 3.4 لا يجوز لك استخدام حزمة تطوير البرامج (SDK) لأي غرض غير مسموح به صراحةً في اتفاقية الترخيص. باستثناء الحدّ الذي تقتضيه التراخيص السارية التابعة لجهات خارجية، لا يجوز لك نسخ حزمة تطوير البرامج (SDK) أو أي جزء منها أو تكييفها أو إعادة توزيعها أو تفكيكها أو هندسة عكسية أو تفكيكها أو إنشاء أعمال اشتقاقية منها (إلا لأغراض الاحتفاظ بنسخة احتياطية). 3.5 يخضع استخدام وإعادة إنتاج وتوزيع مكونات حزمة تطوير البرامج (SDK) المرخَّصة بموجب ترخيص البرامج المفتوحة المصدر فقط لبنود ترخيص البرنامج مفتوح المصدر هذا وليس لاتفاقية الترخيص. 3.6 أنت توافق على أنه قد يتغير شكل وطبيعة حزمة SDK التي تقدمها Google بدون إشعار مسبق لك، وأن الإصدارات المستقبلية من حزمة SDK قد لا تتوافق مع التطبيقات التي تم تطويرها في الإصدارات السابقة من SDK. وأنت توافق على أنه يجوز لشركة Google التوقف (بشكل دائم أو مؤقت) عن توفير حزمة SDK (أو أي ميزات ضمن حزمة SDK) لك أو للمستخدمين عمومًا وفقًا لتقدير Google وحدها، وبدون إشعار مسبق. 3.7 لا يرد في اتفاقية الترخيص ما يمنحك الحق في استخدام أي من أسماء Google التجارية أو علاماتها التجارية أو علامات الخدمة أو الشعارات أو أسماء النطاقات أو غيرها من ميزات العلامات التجارية الفريدة. 3.8 أنت توافق على أنك لن تزيل أي إشعارات حقوق ملكية أو تحجبها أو تغيِّرها (بما في ذلك إشعارات حقوق الطبع والنشر والعلامات التجارية) التي قد تكون ملحقة بحزمة SDK أو مضمّنة فيها.

4. استخدامك لحزمة SDK

4.1 توافق Google على أنها لا تملك أي حق أو حق ملكية أو مصلحة منك (أو من الجهات المرخِّصة) بموجب اتفاقية الترخيص في أي من تطبيقات البرامج التي تطوِّرها باستخدام SDK، بما في ذلك أي حقوق ملكية فكرية تتعلق بهذه التطبيقات. 4.2 أنت توافق على استخدام حزمة تطوير البرامج (SDK) وكتابة التطبيقات فقط لأغراض تسمح بها (أ) اتفاقية الترخيص و(ب) أي قانون سارٍ أو لائحة تنظيمية أو ممارسات أو إرشادات مقبولة بوجه عام في نطاقات السلطة ذات الصلة (بما في ذلك أي قوانين تتعلق بتصدير البيانات أو البرامج إلى ومن الولايات المتحدة أو غيرها من البلدان ذات الصلة). 4.3 أنت توافق على أنه في حالة استخدام SDK لتطوير تطبيقات لعامة المستخدمين، فإنك تلتزم بحماية الخصوصية والحقوق القانونية لهؤلاء المستخدمين. فإذا قام المستخدمون بتقديم أسماء المستخدمين أو كلمات المرور أو معلومات تسجيل الدخول الأخرى أو معلومات شخصية، فيجب توعية هؤلاء المستخدمين بأن المعلومات ستكون متاحة للتطبيق الخاص بك، كما يجب إمدادهم بإشعار خصوصية ملائم من الناحية القانونية وكذلك توفير الحماية لأولئك المستخدمين. إذا خزن تطبيقك معلومات شخصية أو حساسة قدمها المستخدمون، فيجب أن يتم ذلك بشكل آمن. وفي حال تقديم المستخدم لتطبيقك معلومات حساب Google، لا يجوز لتطبيقك استخدام تلك المعلومات للوصول إلى حساب المستخدم على Google إلا عندما يمنحك المستخدم إذنًا لإجراء ذلك وللأغراض المحدودة التي يمنحك المستخدم إذنًا بذلك. 4.4 أنت توافق على عدم المشاركة في أي نشاط لحزمة تطوير البرامج (SDK)، بما في ذلك تطوير أو توزيع تطبيق، يؤدي إلى التداخل مع أي من الأطراف أو الشبكات أو الخدمات التابعة لمشغّل شبكة الجوّال أو تعطلها أو تلفها أو الوصول إليها بطريقة غير مصرَّح بها أو تابعة لمشغّل شبكة الجوّال، وذلك لأي غرض آخر غير مصرّح به. 4.5 أنت توافق على أنك المسؤول الوحيد (وأن Google لا تتحمل أي مسؤولية تجاهك أو تجاه أي طرف ثالث) عن أي بيانات أو محتوى أو موارد تنشئها أو تنقلها أو تعرضها من خلال Android و/أو تطبيقات Android، وعن العواقب الناجمة عن أفعالك (بما في ذلك أي خسائر أو أضرار قد تلحق بشركة Google) عند القيام بذلك. 4.6 توافق على أنك المسؤول الوحيد عن أي خسارة أو أي طرف ثالث بموجب هذا الترخيص (وأن Google لا تتحمل أي مسؤولية تجاه أي طرف ثالث أو بموجب هذا الترخيص) أو تجاه

5. بيانات اعتماد مُطوّر البرامج

5.1 أنت توافق على أنك المسؤول عن الحفاظ على سرية أي بيانات اعتماد لمُطوّر البرامج قد تصدرها Google أو التي قد تختارها بنفسك، وأنك المسؤول الوحيد عن جميع التطبيقات التي يتم تطويرها بموجب بيانات اعتماد مُطوّر البرامج.

‫6. الخصوصية والمعلومات

6.1 في إطار سعينا المستمر للابتكار وتحسين حزمة SDK، يجوز لشركة Google جمع إحصاءات استخدام معيّنة من البرنامج، على سبيل المثال لا الحصر، المعرّف الفريد وعنوان IP المرتبط ورقم إصدار البرنامج ومعلومات عن الأدوات و/أو الخدمات التي يجري استخدامها في حزمة تطوير البرامج (SDK) وكيفية استخدامها. وقبل أن يتم جمع أيٍّ من هذه المعلومات، سترسل إليك حزمة تطوير البرامج (SDK) إشعارًا بذلك وتطلب موافقتك. في حال تعليق موافقتك، لن يتم جمع المعلومات. 6.2 يتم فحص البيانات التي يتم جمعها بشكل مجمل لتحسين حزمة تطوير البرامج (SDK) ويتم الاحتفاظ بها وفقًا لسياسة خصوصية Google المتوفّرة على عنوان URL التالي: https://policies.google.com/privacy 6.3 قد تتم مشاركة مجموعات البيانات المجمَّعة ومجهولة الهوية مع شركاء Google لتحسين حزمة تطوير البرامج (SDK).

7. التطبيقات التابعة لجهات خارجية

7.1 إذا استخدمت حزمة SDK لتشغيل تطبيقات طورتها جهة خارجية أو تطبيقات يمكنها الوصول إلى بيانات أو محتوى أو موارد توفرها جهة خارجية، فأنت توافق على أن Google لا تتحمل مسؤولية هذه التطبيقات أو البيانات أو المحتوى أو الموارد. أنت تدرك أن جميع البيانات أو المحتوى أو الموارد التي يمكنك الوصول إليها من خلال هذه التطبيقات التابعة لجهات خارجية تكون مسؤولية الشخص الذي أنشأ منها هذه التطبيقات فقط، وأن Google غير مسؤولة عن أي خسارة أو ضرر قد يحدث نتيجة استخدام أو دخول أي من هذه التطبيقات أو البيانات أو المحتوى أو الموارد التابعة لجهات خارجية. 7.2 ينبغي أن تعرف أنّ البيانات والمحتوى والموارد المقدَّمة إليك من خلال تطبيق تابع لجهة خارجية قد تكون محمية بموجب حقوق الملكية الفكرية التي يملكها مقدّمو الخدمات (أو يملكها أشخاص آخرون أو شركات أخرى نيابةً عنهم). ولا يجوز لك تعديل أو استئجار أو تأجير أو إقراض أو بيع أو توزيع أو إنشاء أعمال اشتقاقية استنادًا إلى هذه البيانات أو المحتوى أو الموارد (سواء بشكل كلي أو جزئي) ما لم يمنحك المالكون المعنيون الإذن تحديدًا لإجراء ذلك. 7.3 أنت تقر بأن استخدامك للتطبيقات أو البيانات أو المحتوى أو الموارد التابعة لطرف ثالث قد يخضع لبنود منفصلة بينك وبين الطرف الثالث ذي الصلة. وفي هذه الحالة، لا تؤثر اتفاقية الترخيص في علاقتك القانونية بهذه الأطراف الثالثة.

8. استخدام واجهات برمجة تطبيقات Android

8.1 واجهات برمجة التطبيقات لبيانات Google 8.1.1 إذا كنت تستخدم أي واجهة برمجة تطبيقات لاسترداد البيانات من Google، أنت تقرّ بأنّ البيانات قد تكون محمية بموجب حقوق الملكية الفكرية التي تملكها Google أو تلك الأطراف التي توفّر البيانات (أو يملكها أشخاص آخرون أو شركات أخرى نيابةً عنها). وقد يخضع استخدامك لأي من واجهات برمجة التطبيقات هذه لبنود خدمة إضافية. ولا يجوز لك تعديل أو استئجار أو تأجير أو إقراض أو بيع أو توزيع أو إنشاء أعمال اشتقاقية استنادًا إلى هذه البيانات (سواء بشكل كلي أو جزئي) ما لم تسمح بنود الخدمة ذات الصلة بذلك. 8.1.2 إذا كنت تستخدم أي واجهة برمجة تطبيقات لاسترداد بيانات المستخدم من Google، تقرّ وتوافق على أنّك لن تسترد البيانات إلا بموافقة صريحة من المستخدم، وذلك فقط عندما يمنحك المستخدم إذنًا لإجراء ذلك وللأغراض المحدودة. وفي حال استخدام واجهة برمجة تطبيقات Android Recognition Service API، والموثَّقة على عنوان URL التالي: https://developer.android.com/reference/android/speech/learningService من Google في الوقت التالي الذي يتم فيه تعديل بيانات "معالجة البيانات" من "وقت المعالجة" إلى "مدة المعالجة"، يشير النقر على زر القبول إلى موافقتك على أحكام "ملحق معالجة البيانات" للمنتجات التي تكون "Google" فيها جهة معالجة بيانات.

9. إنهاء اتفاقية الترخيص هذه

9.1 تظل اتفاقية الترخيص سارية إلى أن تنهي أنت أو Google العمل بها كما هو موضح أدناه. 9.2 إذا أردت إنهاء اتفاقية الترخيص، يمكنك إجراء ذلك من خلال إيقاف استخدام حزمة تطوير البرامج (SDK) وأي بيانات اعتماد ذات صلة بالمطوّرين. 9.3 يجوز لشركة Google في أي وقت إنهاء اتفاقية الترخيص معك في أي وقت: (أ) خرقت أي بند من بنود اتفاقية الترخيص أو (ب) مطالبة Google بإجراء ذلك بموجب القانون أو (ج) إنهاء الشريك الذي وفرت لك Google أجزاءً معينةً من حزمة SDK (مثل واجهات برمجة التطبيقات) من خلالها علاقته مع Google أو توقفك عن تقديم أجزاء معينة من حزمة SDK لك، أو (د) إذا قررت Google أن تستخدم، أو لم تعد Google، في الخدمة المحددة لحزمة SDK، أو لم تعد Google توفّر لك في أي من هذه الخدمات، أو في أحد هذه الخدمات، 9.4 عند انتهاء اتفاقية الترخيص، فإن جميع الحقوق القانونية والالتزامات والمسؤوليات التي استفدت منها أنت وGoogle أو التي استفدت منها أو (أو التي استُحقت بمرور الوقت أثناء تنفيذ اتفاقية الترخيص) أو التي تم التعبير عن استمرارها إلى أجل غير مسمى، لا يتأثر بها هذا التوقف، ولا تزال الأحكام الواردة في الفقرة 14.7 سارية على هذه الحقوق والالتزامات والمسؤوليات إلى أجل غير مسمى.

‫10. إخلاء المسؤولية عن الضمانات

10.1 أنت تدرك وتوافق صراحةً على أنّ استخدامك لحزمة SDK يقع على عاتقك وحدك وأنّه يتم توفير حزمة SDK "كما هي" و "حسبما هو متاح" بدون أي ضمانات من أي نوع من Google. 10.2 يقع استخدامك لحزمة SDK وأي مواد يتم تنزيلها أو الحصول عليها بطريقة أخرى من خلال استخدام حزمة SDK على مسؤوليتك الشخصية وتتحمّل مسؤوليتها وحدك عن أي ضرر يحدث لجهاز أو جهاز آخر. 10.3 تُخلي Google أخرى مسؤوليتها صراحةً عن جميع الضمانات والشروط من أي نوع، سواء كانت صريحة أو ضمنية، بما في ذلك على سبيل المثال لا الحصر، الضمانات والشروط الضمنية الخاصة بمطابقة الأوصاف والصلاحية لغرض معيّن وغير ذلك.

11. تحديد المسؤولية

11.1 أنت تدرك وتوافق صراحةً على أنّ

12. التعويض

12.1 إلى أقصى حد يسمح به القانون، توافق على الدفاع عن Google والشركاء التابعين لها ومديريها ومسؤوليها وموظفيها ووكلائها وتعويضهم والمحافظة على ذلك من أي ضرر أو جميع

13. التغييرات التي يتم إجراؤها على اتفاقية الترخيص

13.1 يجوز لشركة Google إجراء تغييرات على اتفاقية الترخيص أثناء توزيعها للإصدارات الجديدة من حزمة تطوير البرامج (SDK). عند إجراء هذه التغييرات، ستوفّر Google نسخة جديدة من اتفاقية الترخيص على الموقع الإلكتروني الذي تتوفّر فيه حزمة تطوير البرامج (SDK). 14.1 تشكّل اتفاقية الترخيص مجمل الاتفاقية القانونية المبرمة بينك وبين Google، كما أنها تحكم استخدامك لحزمة SDK (باستثناء أي خدمات قد توفرها لك Google بموجب اتفاقية كتابية مستقلة)، وتحل تمامًا محل أي اتفاقيات سابقة مبرمة بينك وبين Google في ما يتعلق بحزمة SDK. 14.2 أنت توافق على أنه في حالة عدم ممارسة Google أو تنفيذها لأي حقوق أو تعويضات قانونية واردة في اتفاقية الترخيص (أو تلك التي تستفيد منها Google بموجب أي قانون سارٍ)، لن يُعد ذلك تنازلاً رسميًا عن حقوق Google، بل ستظل هذه الحقوق أو التعويضات متاحة لها. 14.3 إذا قضت أي محكمة قضائية، مختصة بالبت في هذه المسألة، حكمًا يقضي بعدم صلاحية أي بند في اتفاقية الترخيص، فيتم حذف هذا الحكم من اتفاقية الترخيص بدون أن يؤثر ذلك في بقية اتفاقية الترخيص. وتظل بقية بنود اتفاقية الترخيص صالحة وواجبة النفاذ. 14.4 تقر أنت وتوافق على أن كل عضو ضمن مجموعة الشركات التي تعد Google الشركة الأم لها سيكون ضمن الأطراف الخارجية المستفيدة من اتفاقية الترخيص وأن هذه الشركات الأخرى تكون مخولة لفرض أي أحكام في اتفاقية الترخيص والاعتماد عليها بشكل مباشر، والتي تعود بالفائدة عليها (أو تمنحها حقوقًا لصالحها). وبخلاف ذلك، لا يتم اعتبار أي شخص آخر أو شركة أخرى أطرافًا خارجية في اتفاقية الترخيص. 14.5 قيود التصدير: تخضع حزمة تطوير البرامج (SDK) لقوانين ولوائح التصدير في الولايات المتحدة. عليك الالتزام بجميع قوانين ولوائح التصدير المحلية والدولية التي تسري على حزمة تطوير البرامج (SDK). تشمل هذه القوانين قيودًا على الوجهات والمستخدمين النهائيين والاستخدام النهائي. 14.6 لا يجوز لك أو لشركة Google التنازل عن الحقوق الممنوحة في اتفاقية الترخيص أو نقلها بدون موافقة كتابية مسبقة من الطرف الآخر. لا يجوز لك أو لشركة Google تفويض المسؤوليات أو الالتزامات بموجب اتفاقية الترخيص بدون موافقة كتابية مسبقة من الطرف الآخر. 14.7 تخضع اتفاقية الترخيص، وعلاقتك مع Google بموجب اتفاقية الترخيص، إلى قوانين ولاية كاليفورنيا بغض النظر عن تعارض نصوص القوانين. توافق أنت وشركة Google على الالتجاء إلى المحاكم ذات نطاق السلطة القضائي الحصري والواقعة في مقاطعة سانتا كلارا بولاية كاليفورنيا لفض أي نزاع قانوني قد ينشأ عن اتفاقية الترخيص. وبالرغم من ذلك، فإنك توافق على أنه لا يزال مسموحًا لشركة Google بالمطالبة بتعويضات زجرية (أو ما يقابلها من تعويض قانوني عاجل) في أي نطاق سلطة. 27 تموز (يوليو) 2021
.
تنزيل

verify_app_multiplatform_public_20250602.apk