استخدام الروابط العميقة لتعزيز التفاعل عبر الهاتف المحمول في Braze

استخدام الروابط العميقة لتعزيز التفاعل عبر الهاتف المحمول في Braze

توجه الروابط العميقة المستخدم من رسالة Braze مباشرة إلى شاشة معينة داخل تطبيقك. نوع الرابط الذي تحتاجه يعتمد على القناة التي ترسل من خلالها، وليس على الوجهة. تناسب المخططات المخصصة (Custom schemes) رسائل الدفع، والرسائل داخل التطبيق، وبطاقات المحتوى. بينما تناسب الروابط العالمية (Universal links) البريد الإلكتروني والرسائل النصية القصيرة، حيث يقوم تتبع النقرات بإعادة كتابة العنوان قبل أن يضغط عليه المستخدم.

ما هو نوع الرابط الذي يجب عليك استخدامه؟

توثق Braze ثلاث طرق للتعامل مع الروابط الواردة من الرسائل. الاختيار هنا ليس مسألة تفضيل شخصي، فكل طريقة تتطلب إعدادات مختلفة وتفشل بطريقة مختلفة.

نوع الرابطمثالمناسب لـيفتح بدون تثبيت التطبيقالمخطط المخصصmyapp://products/123رسائل الدفع، الرسائل داخل التطبيق، بطاقات المحتوىلا، يفشل الرابطالرابط العالميhttps://myapp.com/products/123البريد الإلكتروني، الرسائل النصية، القنوات التي تستخدم تتبع النقراتنعم، يتم الانتقال إلى المتصفحفتح رابط ويب داخل التطبيقأي https:// رابطمحتوى الويب في نافذة WebViewمنبثقةلا ينطبق، يُعرض داخل WebView

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

هذا التسلسل هو وجهة نظرنا المستمدة من تجربة التنفيذ، وليس توصية رسمية من Braze. فالفرق التي تختار الوجهة أولاً ثم نوع الرابط لاحقاً غالباً ما تكتشف عدم التوافق في مرحلة الاختبار (staging)، عندما يكون كود التطبيق قد كُتب بالفعل باستخدام طريقة تفويض (delegate method) غير صحيحة.

لماذا تحتاج الروابط العميقة في البريد الإلكتروني إلى إعدادات إضافية؟

توضح Braze بشكل صريح أن مزود خدمة البريد الإلكتروني يقوم بتغليف الروابط في نطاق تتبع النقرات. والمزودون الثلاثة الذين تذكرهم هم:

  • SendGrid
  • SparkPost
  • Amazon SES

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

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

تم توثيق الفشل المعاكس أيضاً. إذا كان ملف الربط على نطاق تتبع النقرات يستخدم نمط مسار يطابق كل شيء على ذلك النطاق، فسيؤدي كل رابط في البريد الإلكتروني إلى فتح التطبيق، بما في ذلك رابط إلغاء الاشتراك في التذييل. الحل الذي تقدمه Braze هو تقييد المسارات. بالنسبة لـ SendGrid، التوجيه هو المطابقة مع /uni/ وحدد تلك الروابط فقط على أنها عالمية.

ما الذي يتطلبه كل نوع من أنواع الروابط فعلياً؟

تعد المخططات المخصصة (Custom schemes) خياراً أقل تكلفة في البناء. حيث تقوم بتسجيل المخطط ضمن CFBundleURLTypes في ملف Info.plist، وتضيفه إلى قائمة السماح (allowlist)، وتنفذ دالة application(_:open:options:). لا حاجة لملف ربط (association file)، ولا حاجة لتهيئة حزمة تطوير برمجيات Braze، لأن الحزمة تفتح روابط المخططات المخصصة افتراضياً.

تتطلب الروابط العالمية (Universal links) تكلفة إضافية في ثلاثة جوانب في آن واحد:

  1. استضافة ملف الربط على الرابط https://yourdomain.com/.well-known/apple-app-site-association.
  2. إضافة applinks:yourdomain.com ضمن قسم Signing and Capabilities في Xcode.
  3. تنفيذ دالة application(_:continue:restorationHandler:) وتعيين configuration.forwardUniversalLinks إلى true.

هناك سلوك واحد يجدر بك معرفته قبل البدء في التصميم بناءً على استثناءات المسارات. لا يقرأ Braze SDK ملف الربط الخاص بك. فهو يفصل الروابط العالمية (Universal Links) عن روابط الويب العادية من خلال النظر إلى اسم النطاق فقط، لذا فإن أي قاعدة استثناء مكتوبة في ذلك الملف لن يكون لها أي تأثير على كيفية توجيه SDK للرابط.

كيف يمكنك عزل رابط عميق (Deep Link) معطل؟

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

الحلقة الأولى، خارج التطبيق. بالنسبة للمخطط المخصص، قم بتشغيل xcrun simctl openurl booted "myapp://products/123". بالنسبة للرابط العالمي، الصقه في تطبيق الملاحظات (Notes) على جهاز فعلي واضغط عليه. ينصح Braze بعدم الاختبار من شريط عنوان Safari، لأن نظام iOS يعامل الرابط المكتوب بشكل مختلف عن الرابط الذي يتم الضغط عليه. إذا فشل الرابط هنا، فالخطأ يكمن في تطبيقك، ولن يؤدي أي تغيير في الحملة إلى إصلاحه.

الحلقة الثانية، قناة واحدة. أرسل الرابط عبر قناة Braze واحدة مع تفعيل التسجيل المفصل (verbose logging). يقوم SDK بطباعة إدخال Opening يحمل القناة، وعلامة useWebView وعلامة isUniversalLink .

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

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

ما هي الأعطال التي تبدو وكأنها مشكلة في Braze؟

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

العرضالسبب الموثق الرابط العالمي يفتح المتصفح بعد أن كان يعمل بالأمسالضغط المطول على الرابط واختيار "فتح" قد يؤدي إلى كسر ارتباط النطاق. يمكن إعادة ضبطه بالضغط المطول واختيار "فتح في التطبيق" الروابط العالمية لا تعمل أبداً في المحاكيتتطلب عملية التوجيه صلاحيات التطبيق، وهو ما لا يوفره المحاكي بشكل مباشر رابط الويب يفتح صفحة فارغةتقوم الصفحة المستهدفة بتعيين رأس أمان للإطار أو المحتوى مما يمنع العرض داخل WebView إشعار دفع أندرويد يفتح التطبيق ولكن ليس الشاشة المحددةcom_braze_handle_push_deep_links_automatically لم يتم ضبطه على true في braze.xml

هناك نقطتان إضافيتان تجدر إضافتهما إلى قائمة التحقق الخاصة بالبناء. التطبيقات التي تم إنشاؤها باستخدام Xcode 27 وما بعده تعتمد دورة حياة UIScene ، مما يعني أن روابط المخطط المخصصة تصل إلى SceneDelegate بدلاً من AppDelegate. وفي أندرويد، يجب أن يقوم مندوب واحد بتنفيذ IBrazeDeeplinkHandler تتعامل مع الروابط عبر بطاقات المحتوى، والرسائل داخل التطبيق، وإشعارات الدفع معاً.

أين تُحدث الروابط العميقة تغييراً في تصميم الحملات؟

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

تُعد عملية تهيئة المستخدم (Onboarding) أوضح مثال على ذلك. فخطوة التنشيط التي تشير إلى ميزة معينة يجب أن توجه المستخدم مباشرة إلى تلك الميزة، و رحلة تهيئة المستخدم المعتمدة على Canvas تمنحك هيكلية التفرع لإرسال مستخدمين مختلفين إلى شاشات مختلفة. و حملات التنشيط التي كتبنا عنها سابقاً تشير كل منها إلى وجهة محددة، وتمثل كل واحدة منها مساراً منفصلاً في ملف الربط (association file).

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

الأسئلة الشائعة

هل تعمل الروابط العميقة ذات المخطط المخصص (custom scheme) في البريد الإلكتروني؟
لا. توضح Braze أن مزودي خدمات البريد الإلكتروني يقومون بتغليف الروابط في نطاق لتتبع النقرات، وهذا التعديل يؤدي إلى كسر المخطط المخصص. استخدم رابطاً عالمياً (universal link) للبريد الإلكتروني وقم باستضافة ملف Apple App Site Association على نطاق تتبع النقرات بالإضافة إلى نطاقك الأساسي.

هل أحتاج إلى ملف Apple App Site Association لروابط الدفع العميقة؟
ليس لروابط المخطط المخصص. تذكر Braze أن ملف الربط غير مطلوب للمخططات المخصصة، والتي تحتاج فقط إلى مخطط مسجل في Info.plist ومعالج. ستحتاج إلى واحد إذا كنت ترسل روابط عالمية من إشعارات الدفع مع forwardUniversalLinks مفعّل.

ما هو الحد الأقصى لحجم ملف Apple App Site Association؟
تحدد قائمة التحقق من صحة Braze سقفاً قدره 128 كيلوبايت، بالإضافة إلى شهادة صالحة، و Content-Type من نوع application/json، و appID يطابق معرف الفريق (Team ID) ومعرف الحزمة (Bundle ID) الخاصين بك.

لماذا يعمل الرابط العميق من إشعارات الدفع ولكن لا يعمل من رسائل داخل التطبيق؟
قم بتفعيل التسجيل المفصل (verbose logging) وقارن إدخال Opening لكل قناة. تشير Braze إلى الاختلافات في قيم useWebView و isUniversalLink كإشارة إلى أن حزمة تطوير البرمجيات (SDK) تفسر الرابط نفسه بشكل مختلف.

هل يمكنني اختبار الروابط العالمية (Universal Links) في محاكي iOS؟
تنصح Braze باستخدام جهاز فعلي، لأن إعادة توجيه الروابط العالمية تتطلب صلاحيات تطبيق لا يوفرها المحاكي بشكل مباشر. إضافة ملف .entitlements إلى مرحلة بناء Copy Bundle Resources يضيف دعمًا للمحاكي.

المصادر

تُعد CustomerIK شريك تنفيذ معتمد لـ Braze.

التفضيلات

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

قبول جميع ملفات تعريف الارتباط
قبول جميع ملفات تعريف الارتباط

هذه العناصر مطلوبة لتمكين الوظائف الأساسية للموقع.

نشط دائماً

تُستخدم هذه العناصر لتقديم إعلانات أكثر صلة بك وباهتماماتك.

تسمح هذه العناصر للموقع بتذكر الاختيارات التي تقوم بها (مثل اسم المستخدم، أو اللغة، أو المنطقة التي تتواجد فيها) وتوفير ميزات محسنة وأكثر تخصيصاً.

تساعد هذه العناصر مشغل الموقع على فهم كيفية أداء موقعه، وكيفية تفاعل الزوار معه، وما إذا كانت هناك أي مشكلات تقنية.

شكراً لك! لقد تم استلام طلبك بنجاح.
عذراً! حدث خطأ ما أثناء إرسال النموذج.