العرض التمهيدي في App Store: التجربة المجانية في iOS
بقلم Mehdi Azizi
نُشر في ، 8 د
العرض التمهيدي هو التجربة المجانية أو السعر المخفّض في بداية اشتراك iOS، مرة واحدة لكل مجموعة ولكل حساب Apple. إليك طريقة إنشائه وعرضه.
العرض التمهيدي (introductory offer) هو السعر الذي يبدأ به الاشتراك ذو التجديد التلقائي، وله ثلاثة أشكال: تجربة مجانية، أو دفع مسبق، أو دفع على دفعات. لا يحق لكل عميل الاستفادة منه إلا مرة واحدة في كل مجموعة اشتراكات، لذلك يجب أن يتحقق تطبيقك من الأهلية قبل أن يكتب «تجربة مجانية». تنشئ العرض من صفحة أسعار الاشتراك، ويجب أن تُظهر شاشة الدفع (paywall) بوضوح مدة العرض والسعر الذي سيُدفع بعده.
في Solys وTradaZen، التجربة المجانية لمدة 7 أيام مرتبطة بالاشتراك السنوي. الخطة الأسبوعية ليس فيها تجربة. سأشرح هنا أنواع العروض الثلاثة، ومن يحق له الاستفادة منها، وطريقة الإنشاء، ثم خطأين وقعت فيهما عند العرض على الشاشة. وكثيرًا ما يُقصد بمصطلح «عرض الإطلاق» الشيء نفسه، ومن ذلك دليلي عن أخطاء شاشة الدفع.
ما هو العرض التمهيدي (introductory offer)؟
يعرّفه دليل مساعدة App Store Connect بأنه سعر مخفّض أو تجربة مجانية، لمدة محدودة، في الفترة الأولى من الاشتراك. وهو خاص بالاشتراكات ذات التجديد التلقائي فقط. عند انتهاء العرض، يتجدد الاشتراك بالسعر العادي، إلا إذا ألغاه الشخص قبل ذلك.
يظهر العرض في صفحة تطبيقك على App Store للأشخاص المؤهلين. وعند الشراء، تطبّقه Apple تلقائيًا إن كان الشخص مؤهلًا. مهمتك أنت ألا تَعِد على الشاشة بعرض لن تمنحه Apple.
أنواع العروض التمهيدية الثلاثة
تصف وثائق StoreKit ثلاث طرق للدفع. إليك كل واحدة مع مثال افتراضي: اشتراك سنوي بـ 39.99 يورو وشهري بـ 6.99 يورو، وهي ليست أسعار أي من تطبيقاتي.
| النوع | مثال افتراضي | المدفوع في البداية | بعد ذلك |
|---|---|---|---|
| تجربة مجانية | 7 أيام مجانًا | 0 يورو | 39.99 يورو سنويًا |
| دفع مسبق | 3 أشهر بـ 9.99 يورو | 9.99 يورو مرة واحدة | 39.99 يورو سنويًا |
| دفع على دفعات | 2.99 يورو شهريًا لمدة 3 أشهر | 2.99 يورو كل شهر | 6.99 يورو شهريًا |
وهذا ما يجب أن تقوله الشاشة في كل حالة، بالأسعار الافتراضية نفسها:
- تجربة مجانية: «7 أيام مجانًا، ثم 39.99 يورو سنويًا.» خلال التجربة يكون الاشتراك قد بدأ فعلًا، لكن لا يُخصم أي مبلغ قبل نهايتها.
- دفع مسبق: «9.99 يورو لأول 3 أشهر، ثم 39.99 يورو سنويًا.» يدفع الشخص مرة واحدة عن كامل الفترة المخفّضة.
- دفع على دفعات: «2.99 يورو شهريًا لمدة 3 أشهر، ثم 6.99 يورو شهريًا.» يتكرر السعر المخفّض في كل فترة.
في الحالات الثلاث، تتضمن الجملة السعر الذي سيُدفع بعد العرض.
من يحق له الاستفادة من العرض التمهيدي؟
دليل Apple واضح: عرض واحد ممكن لكل اشتراك، لكن عرض تمهيدي واحد فقط لكل شخص ولكل مجموعة اشتراكات. وتوضح وثائق StoreKit الحالات الثلاث:
- المشترك الجديد يحق له دائمًا؛
- المشترك السابق العائد يحق له إن لم يستخدم أي عرض تمهيدي من قبل في هذه المجموعة؛
- المشترك الحالي لا يحق له، حتى لو غيّر خطته داخل المجموعة نفسها.
الأهلية مرتبطة بحساب Apple الذي يدفع، لا بجهاز iPhone ولا بالحساب المُنشأ في تطبيقك. من جرّب ثم ألغى ثم أعاد تثبيت التطبيق لم يعد مؤهلًا. ومع ذلك يستمر المنتج في الإعلان عن عرضه: ومن هنا يولد العرض المضلِّل.
النتيجة المباشرة: التجربة على الخطة الأسبوعية ستستهلك حق التجربة على السنوية، لأن الاثنتين في المجموعة نفسها. لهذا السبب تجاربي على الاشتراك السنوي وحده.
قيد آخر: يمكن أن يكون لديك عرض تمهيدي حالي وعرض مستقبلي واحد لكل بلد. وإذا تداخل عرضان، يحل الأحدث إنشاءً محل الآخر. في يوليو 2026، أردت في TradaZen سعرًا مخفّضًا وتجربة مجانية معًا على الاشتراك السنوي. عرض واحد فقط في كل مرة: إما هذا أو ذاك. انتهى بي الأمر إلى إنشاء اشتراك سنوي ثانٍ، أرخص، يحمل التجربة.
إنشاء العرض في App Store Connect
تحتاج إلى أحد الأدوار التالية: Account Holder أو Admin أو App Manager أو Marketing. التسميات هي نفسها الواردة في دليل Apple:
- في Apps، افتح تطبيقك، ثم Subscriptions في الشريط الجانبي.
- اختر المجموعة، ثم الاشتراك.
- في قسم Subscription Prices، انقر على View all Subscription Pricing، ثم على Set up Introductory Offer.
- اختر البلدان أو المناطق، ثم تاريخي البداية والنهاية. إن بدأت اليوم، ينطلق العرض فورًا.
- اختر Free أو Pay up front أو Pay as you go، ثم المدة والسعر.
- يقترح App Store Connect أسعارًا مكافئة لـ 175 بلدًا. عدّلها إن لزم، ثم أكّد.
لا يمكن تعديل العرض بعد إنشائه: لتغيير مدته أو سعره، احذفه من تبويب Introductory Offers ثم أنشئه من جديد. قد يستغرق التعديل حتى ساعة ليصل إلى بيئة sandbox. كما تنصح وثائق RevenueCat بالانتظار حتى 24 ساعة قبل أن تستنتج أن العرض لا يُطبَّق.
المدد الممكنة
تدوم التجربة المجانية 3 أيام، أو أسبوعًا أو أسبوعين، أو شهرًا أو 2 أو 3 أو 6 أشهر، أو سنة، أيًّا كانت مدة الاشتراك. ويغطي الدفع المسبق شهرًا أو 2 أو 3 أو 6 أشهر، أو سنة. أما الدفع على دفعات فيعتمد على مدة الاشتراك:
| الاشتراك | الدفع على دفعات |
|---|---|
| أسبوع واحد | من 1 إلى 12 أسبوعًا |
| شهر واحد | من 1 إلى 12 شهرًا |
| شهران | من 2 إلى 12 شهرًا، بخطوة 2 |
| 3 أشهر | 3 أو 6 أو 9 أو 12 شهرًا |
| 6 أشهر | 6 أو 12 شهرًا |
| سنة واحدة | سنة واحدة |
في تطبيقاتي، اخترت 7 أيام على الاشتراك السنوي. هذه ليست قاعدة من Apple، بل اختيار متعلق بالمنتج، راجعه وفق قياساتك أنت.
اعرض التجربة فقط لمن يحق له
تقولها Apple في صفحة المساعدة نفسها: إن عرضت العرض داخل تطبيقك، فتأكد أن الشخص يستطيع فعلًا الاستفادة منه. اطرح على الكود سؤالين: هل يحمل المنتج تجربة مجانية؟ وهل ما زال هذا الشخص مؤهلًا لها؟
السؤال الأول تجد جوابه في المنتج. انتبه: العرض التمهيدي ليس مجانيًا بالضرورة. في TradaZen، كان الاشتراك السنوي العادي يحمل دفعًا مسبقًا، أي سنة أولى أرخص، بينما كانت التجربة على الاشتراك السنوي الآخر. وكلاهما يظهر على أنه «عرض تمهيدي». لذلك يقرأ الكود عندي سعر العرض: صفر يعني تجربة، وما فوقه يعني عرضًا مدفوعًا.
السؤال الثاني يُطرح على المتجر. في Swift، يوفّر StoreKit 2 الخاصية isEligibleForIntroOffer، بدءًا من iOS 15. وتوضح Apple أن هذه القيمة قد تكون صحيحة حتى دون إعداد أي عرض: ومن هنا أهمية السؤال الأول. ومع RevenueCat في تطبيق Expo، تستخدم checkTrialOrIntroductoryPriceEligibility، التي تُرجع: مؤهل، أو غير مؤهل، أو لا يوجد عرض، أو غير معروف. إليك الفكرة في TypeScript:
import Purchases, {
INTRO_ELIGIBILITY_STATUS as S,
type PurchasesStoreProduct,
} from "react-native-purchases";
type Essai = "oui" | "non" | "doute";
export async function essaiGratuit(p: PurchasesStoreProduct): Promise<Essai> {
if (!p.introPrice || p.introPrice.price > 0) return "non";
try {
const r = await Purchases.checkTrialOrIntroductoryPriceEligibility([
p.identifier,
]);
const statut = r[p.identifier]?.status;
if (statut === S.INTRO_ELIGIBILITY_STATUS_ELIGIBLE) return "oui";
if (statut === S.INTRO_ELIGIBILITY_STATUS_INELIGIBLE) return "non";
if (statut === S.INTRO_ELIGIBILITY_STATUS_NO_INTRO_OFFER_EXISTS)
return "non";
return "doute";
} catch {
return "doute";
}
}
حالة "doute" (الشك) هي لبّ المسألة. تصف RevenueCat تحققها بأنه تقدير بأفضل جهد، وورقة الدفع من Apple تعرض في كل الأحوال الشروط الحقيقية قبل التأكيد. وفي حالة الوضع غير المعروف، تنصح RevenueCat بعرض السعر العادي، حتى لا تضلل أحدًا.
تعلّمت الوجه الآخر للمشكلة في TradaZen. كانت النسخة الأولى تعامل خطأ القراءة على أنه رفض: أشخاص مؤهلون للتجربة لم يكونوا يرونها. اليوم، لا تُخفي تطبيقاتي التجربة إلا عند رفض صريح من المتجر: غير مؤهل أو لا يوجد عرض. أما في حالة الشك فيبقى عرض المنتج كما هو. هذه موازنة اخترتها، وليست توصية RevenueCat: إن كنت تفضّل الحذر، فاتبع توصيتهم. وفي الحالتين، لا تخلط أبدًا بين «لا أعرف» و«لا».
إن كنت تستخدم شاشات الدفع الخاصة بـ RevenueCat، فيمكن أن يكون لكل نص نسخة خاصة بالأشخاص المؤهلين للعرض، بحسب صفحتهم عن العروض. وبقية الإعداد في دليلي RevenueCat لاشتراك iOS.
ما تشترطه 3.1.2 على الشاشة
تسمح الإرشادات 3.1.2(a) بالتجربة المجانية على الاشتراك، بشرط تقديم المعلومات التي يحددها App Store Connect. وتوضح صفحة Apple عن الاشتراكات: في مسار شراء التجربة، اذكر بوضوح مدتها والسعر الذي سيُدفع عند انتهائها. ويجب أيضًا أن يكون المبلغ المدفوع هو عنصر السعر الأبرز على الشاشة.
الرفض الذي تلقاه Solys في 10 أكتوبر 2026 قالها صراحة: التجربة المجانية وسعر الإطلاق والأسعار المحسوبة يجب أن تبقى ثانوية أمام المبلغ المدفوع. يمكنك الإعلان عن التجربة، لكن السعر الذي سيُدفع بعدها يجب أن يبقى أوضح سعر على الشاشة. الرفضان وطريقة إصلاحهما في دليلي عن الإرشادات 3.1.2.
والخطأ المعاكس موجود أيضًا: أن تقدّم تجربة دون أن تذكرها. في فترة ما، كانت أزرار شاشات الدفع عندي تقول «متابعة». بل إن عبارة «7 أيام مجانًا» في Solys لم تكن موجودة إلا في وسم VoiceOver، لا في نص ظاهر.
اختبار العرض في sandbox
اشترِ الاشتراك بحساب sandbox: يجب أن تظهر التجربة في ورقة الدفع من Apple. ولإعادة تجربة مسار مشترك جديد، اختر Clear Purchase History من إعدادات حساب sandbox على iPhone. وبحسب وثائق Apple عن sandbox، يعود الحساب حينها مؤهلًا للعروض التمهيدية.
اختبر أيضًا حسابًا سبق أن استخدم التجربة: يجب ألا تعلن شاشة الدفع عن أي شيء مجاني. وإن لم يُحمَّل المنتج إطلاقًا، فاقرأ دليلي عن حالة Missing Metadata.
اربط تجربتك المجانية دون أخطاء
ينطلق iOS & Android Kit من الكود الأساسي لتطبيقاتي: شاشات الترحيب وشاشة الدفع والاشتراكات مبرمجة مسبقًا، وخطوته الثالثة، «ربط المال»، ترشدك لضبط المنتجات والتجربة. السلسلة كاملة موصوفة في صفحة الاشتراك داخل تطبيق iOS. وإن كنت ما زلت مترددًا في نموذج الربح، فابدأ بـ اشتراك أم شراء لمرة واحدة.
إن كنت تستعد لإصدارك الأول، فاحصل على التشخيص المجاني: يرتّب لك الخطوات ويرسل إليك قائمتي لتجنب رفض Apple. ولتقديم شهر مجاني أو استعادة مشترك سابق، تجد التتمة في دليلي عن أكواد العروض.
الأسئلة الشائعة
ما هو العرض التمهيدي (introductory offer) في App Store؟
هو السعر الذي يبدأ به الاشتراك ذو التجديد التلقائي: تجربة مجانية، أو دفع مسبق، أو دفع على دفعات. يُنشأ في App Store Connect، وتطبّقه Apple تلقائيًا عند الشراء على الأشخاص المؤهلين. بعد ذلك ينتقل الاشتراك إلى السعر العادي.
هل يمكن للمستخدم الاستفادة من تجربتين مجانيتين؟
ليس في مجموعة الاشتراكات نفسها: عرض تمهيدي واحد لكل مجموعة ولكل حساب Apple. وإعادة تثبيت التطبيق لا تعيد الحق. أما إن اشترك في مجموعة أخرى داخل تطبيقك، فيمكنه الاستفادة من عرض تلك المجموعة.
هل يمكن الجمع بين تجربة مجانية وتخفيض؟
ليس على الاشتراك نفسه في الوقت نفسه: عرض تمهيدي حالي واحد لكل بلد. يمكنك إنشاء اشتراك ثانٍ يحمل العرض الآخر، أو استخدام كود عرض، يمكن أن يأتي بعد العرض التمهيدي بحسب إعداداتك.
هل أحتاج إلى نسخة جديدة من التطبيق لإضافة تجربة؟
لا بالنسبة إلى العرض نفسه: يُضبط في App Store Connect ويُطبَّق عند الشراء. لكن إن كانت شاشة الدفع تكتب «7 أيام» ثابتة في الكود، فستحتاج إلى تحديثها. اقرأ المدة من المنتج الذي يُرجعه المتجر، وستتبعها الشاشة.
هل يحق للمشترك السابق الحصول على التجربة المجانية؟
نعم، إن لم يستخدم أي عرض تمهيدي من قبل في مجموعة الاشتراكات هذه. وإن سبق أن استفاد منه، فلم يعد مؤهلًا، حتى بعد أشهر. ولاستعادته، توفّر Apple عروض الاستعادة (win-back) والعروض الترويجية.

