Catch up on highlights from Firebase at Google I/O 2023. Learn more

قم بإعداد مجال مخصص للروابط الديناميكية

يمكنك التحكم بشكل أكبر في العلامة التجارية للروابط الديناميكية الخاصة بك عن طريق استخدام المجال الخاص بك بدلاً من النطاق الفرعي page.link . باستخدام المجالات المخصصة ، يمكنك إنشاء روابط ديناميكية مثل الأمثلة التالية:

https://example.com/link-suffix
https://example.com/links/promos/link-suffix
https://links.example.com/link-suffix
https://ex.amp.le/link-suffix

يسمى جزء عنوان URL الموجود قبل لاحقة link-suffix ببادئة URL ، ويحتوي على كل من مجال الارتباط الديناميكي المخصص وبادئة المسار. ستحتاج إلى توفير بادئة عنوان URL عند إنشاء روابط ديناميكية.

يتطلب إعداد مجال مخصص إذن محرر أو إذن مالك في مشروع Firebase.

استخدام مجال الويب الخاص بك للارتباطات الديناميكية

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

على سبيل المثال ، إذا كنت تريد إنشاء رابط ديناميكي للمورد https://example.com/my-resource (صفحة ويب أو رابط عالمي أو رابط تطبيق) ، فلا يمكنك استخدام https://example.com/ كبادئة عنوان URL للروابط الديناميكية ، لأن القيام بذلك سيؤدي إلى معاملة https://example.com/my-resource على أنه رابط ديناميكي. بدلاً من ذلك ، يجب عليك استخدام بادئة عنوان URL مع مجال مختلف أو بادئة مسار مختلفة.

لذلك ، لن تعمل الروابط الديناميكية الطويلة التالية (والروابط القصيرة المكافئة) على النحو المنشود لأن عناوين URL المحددة بواسطة معلمة link تبدأ ببادئة عنوان URL للرابط الديناميكي ، https://example.com/ :

 https://example.com/?link=https://example.com/my-resource
 https://example.com/?link=https://example.com/resources/my-resource

لكن الروابط الديناميكية الطويلة التالية (والروابط القصيرة المكافئة) يمكن أن تعمل ، لأن بادئات عنوان URL لا تتعارض مع عناوين URL link :

 https://link.example.com/?link=https://example.com/my-resource
 https://example.com/links/?link=https://example.com/my-resource
 https://ex.amp.le/?link=https://example.com/my-resource

قم بإعداد مجال مخصص في وحدة تحكم Firebase

يمكنك عادةً إعداد مجال مخصص بالكامل في وحدة تحكم Firebase. لنفعل ذلك:

  1. إذا لم تكن قد أعددت Firebase Hosting لمشروعك ، فافتح صفحة الاستضافة في وحدة تحكم Firebase ، وانقر على البدء ، وانقر فوق تعليمات الإعداد. ليس عليك إكمال الخطوات المشار إليها في هذا الوقت.

  2. افتح صفحة الروابط الديناميكية لوحدة تحكم Firebase.

  3. إذا لم تكن قد استخدمت الروابط الديناميكية من قبل ، فانقر فوق البدء . بخلاف ذلك ، انقر فوق إضافة بادئة URL من القائمة المنسدلة.

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

  4. iOS فقط : في ملف Info.plist الخاص بمشروع Xcode الخاص بك ، قم بإنشاء مفتاح يسمى FirebaseDynamicLinksCustomDomains وقم بتعيينه على بادئات URL للروابط الديناميكية الخاصة بالتطبيق. على سبيل المثال:

    <key>FirebaseDynamicLinksCustomDomains</key>
    <array>
      <string>https://example.com/link</string>
      <string>https://example.com/promos</string>
    </array>
    

قم بإعداد مجال مخصص يدويًا

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

لنفعل ذلك:

  1. قم بتوصيل نطاقك بـ Firebase Hosting إذا لم تكن قد قمت بذلك بالفعل.

    يتضمن إعداد نطاقك باستخدام Firebase Hosting إنشاء ملف التكوين firebase.json في دليل مشروعك المحلي.

  2. قم بالتحديث إلى أحدث إصدار من Firebase CLI (v6.5.0 أو أحدث).

  3. قم بتكوين موقع الاستضافة الخاص بك للروابط الديناميكية في ملف firebase.json الخاص بمشروعك. إذا كان مشروعك يحتوي على عدة مواقع ، فتأكد من تكوين الموقع المتصل بالمجال الذي تريد استخدامه.

    • تعيين appAssociation إلى AUTO . باستخدام هذا الإعداد ، تُنشئ الاستضافة بشكل ديناميكي ملفات assetlinks.json و apple-app-site-association عند طلبها.

    • حدد بادئات المسار التي تريد استخدامها للارتباطات الديناميكية عن طريق تعيين قواعد إعادة الكتابة مع ضبط dynamicLinks على true . يتم ربط الطلبات إلى هذه المسارات بالوكيل للروابط الديناميكية.

      على عكس القواعد التي تعيد كتابة المسارات إلى عناوين URL ، لا يمكن أن تحتوي قواعد إعادة كتابة الرابط الديناميكي على تعبيرات عادية.

      إذا كانت لديك قواعد إعادة كتابة متعددة لموقعك ، فاعلم أن الاستضافة تنفذ قاعدة إعادة الكتابة الأولى التي تطابق الطلب.

    على سبيل المثال:

    "hosting": {
      // ...
      "appAssociation": "AUTO",
      "rewrites": [
        {
          "source": "/promos/**",
          "dynamicLinks": true
        },
        {
          "source": "/links/share/**",
          "dynamicLinks": true
        }
      ]
    }
    

    باستخدام التكوين أعلاه ، يمكنك إنشاء روابط ديناميكية ببادئات URL مثل الأمثلة التالية:

    https://your-domain/promos/link-suffix
    https://your-domain/links/share/link-suffix
    

    إذا كنت تستخدم هذا المجال للارتباطات الديناميكية فقط ، فيمكنك استخدام مسار مصدر /** لإنشاء روابط ديناميكية بدون بادئة مسار:

    {
      "source": "/**",
      "dynamicLinks": true
    }
    

    باستخدام القاعدة المذكورة أعلاه ، يمكنك إنشاء روابط ديناميكية مثل المثال التالي:

    https://your-domain/link-suffix

  4. انشر تغييرات تكوين الاستضافة:

    firebase deploy --only hosting

    (اختياري) يمكنك التحقق من محتوى firebase.json المنشور باستخدام واجهة برمجة تطبيقات Hosting REST .

  5. iOS فقط : في ملف Info.plist الخاص بمشروع Xcode الخاص بك ، قم بإنشاء مفتاح يسمى FirebaseDynamicLinksCustomDomains وقم بتعيينه على بادئات URL للروابط الديناميكية الخاصة بالتطبيق. على سبيل المثال:

    <key>FirebaseDynamicLinksCustomDomains</key>
    <array>
      <string>https://example.com/promos</string>
      <string>https://example.com/links/share</string>
    </array>
    

ترتيب الأولوية للروابط الديناميكية والاستضافة

بالنسبة للروابط الديناميكية ، كن على دراية خاصة بترتيب أولوية الاستضافة .

  • تأكد من أن بادئة عنوان URL للارتباطات الديناميكية لا تتعارض مع تكوينات الاستضافة ذات الأولوية الأعلى (على سبيل المثال ، المحتوى الثابت المستضاف له الأولوية دائمًا على عمليات إعادة الكتابة).
  • ضمن سمة rewrites ، ستمتثل استجابة الاستضافة للقاعدة المحددة بواسطة source glob الأول الذي يلتقط المسار المطلوب .

على سبيل المثال ، إذا قمت بإعداد رابط ديناميكي your-domain / source-path / link-suffix ولكن لديك أيضًا محتوى ثابت في your-domain / source-path /index.html ، فإن المحتوى الثابت يكون له الأسبقية. سيرى المستخدم index.html بدلاً من الارتباط الديناميكي. وبالمثل ، إذا كان لديك محتوى ثابت في your-domain / source-path / link-suffix ، سيرى المستخدم النهائي المحتوى الثابت بدلاً من الارتباط الديناميكي.

إذا كنت ترغب في استخدام نفس العلامة التجارية لكل من الروابط الديناميكية والاستضافة ، ففكر في أحد الخيارات التالية لبادئة عنوان URL للروابط الديناميكية:

  • قم بتعيين سمة source الخاصة بك لمطابقة بادئة المسار. على سبيل المثال ، إذا كان لديك مجال مخصص لـ example.com ، فيمكن أن تكون قاعدة إعادة الكتابة الخاصة بك:

    // Domain is example.com
    "rewrites": [ {
      "source": "/links/**",  // Dynamic Links start with "https://example.com/links/"
      "dynamicLinks": true
    } ]
    
  • قم بإعداد نطاق فرعي لاستخدامه مع الروابط الديناميكية ، ثم قم بتعيين سمة source الخاصة بك لمطابقة هذا النطاق الفرعي. على سبيل المثال ، إذا كان لديك مجال فرعي لـ links.example.com ، فيمكن أن تكون قاعدة إعادة الكتابة:

    // Domain is links.example.com
    "rewrites": [ {
      "source": "/**",  // Dynamic Links start with "https://links.example.com/"
      "dynamicLinks": true
    } ]