Guideline 3.1.2: رفض التطبيق بسبب الاشتراك
بقلم Mehdi Azizi
نُشر في ، 9 د
Guideline 3.1.2: يجب أن يكون المبلغ المُحصَّل أبرز سعر في شاشة الدفع، مع المدة والتجديد وروابط الشروط. حالتا رفض حقيقيتان وطريقة إصلاحهما.
تنظّم الإرشادات 3.1.2 الاشتراكات ذات التجديد التلقائي. إذا استشهدت بها Apple، فتحقّق من أمرين: يجب أن يكون المبلغ الذي يُحصَّل فعلًا هو أبرز سعر في شاشة الدفع (paywall)، ويجب أن يذكر التطبيق وصفحته في المتجر المدة والسعر، مع روابط تعمل إلى شروط الاستخدام وسياسة الخصوصية.
وصلني هذا الرفض على تطبيقين من تطبيقاتي في أكتوبر 2026: Solys في العاشر منه، وTradaZen في الثاني عشر. السبب كان نفس طريقة العرض: سعر أسبوعي بخط كبير، والمبلغ الحقيقي المُحصَّل بخط صغير. إليك نص القاعدة، ثم الحالتين، ثم قائمة التحقق التي أطبّقها الآن. وللأسباب الأخرى، اقرأ لماذا ترفض Apple تطبيقًا.
ماذا تقول الإرشادات 3.1.2؟
تقع 3.1.2، بعنوان "Subscriptions"، في القسم 3 "Business" من App Review Guidelines، ضمن الجزء 3.1 "Payments". ومن هنا يأتي عنوان الرسالة: "Guideline 3.1.2 - Business - Payments - Subscriptions". تتكوّن من ثلاث فقرات، والحرف بين القوسين يخبرك أين تبحث.
| الفقرة | ما تطلبه Apple | الرفض المعتاد |
|---|---|---|
| 3.1.2(a) Permissible uses | قيمة مستمرة، 7 أيام على الأقل | اشتراك بلا محتوى يتطوّر |
| 3.1.2(b) Upgrades and Downgrades | تغيير الخطة دون ازدواج | خطتان مدفوعتان في الوقت نفسه |
| 3.1.2(c) Subscription Information | ما يحصل عليه المستخدم وبأي سعر | سعر محسوب أكبر من المبلغ المُحصَّل |
نص 3.1.2(c) قصير. قبل أن تطلب من أحد الاشتراك، عليك أن "clearly describe what the user will get for the price"، أي أن تصف بوضوح ما سيحصل عليه مقابل هذا السعر. ثم يحيل إلى الملحق 2 (Schedule 2) من اتفاقية ترخيص برنامج المطوّرين. يسرد هذا الملحق ما يجب أن تعرضه "clearly and conspicuously"، أي بوضوح وبشكل ظاهر:
- عنوان الاشتراك؛
- مدته؛
- سعره، وسعر الوحدة إن كان ذلك مناسبًا؛
- روابط إلى سياسة الخصوصية وشروط الاستخدام، يمكن الوصول إليها داخل التطبيق.
قاعدة حجم الأسعار موجودة في صفحة Apple الخاصة بالاشتراكات. في مسار الشراء، "the amount that will be billed must be the most prominent pricing element in the layout": المبلغ الذي سيُخصم يجب أن يكون أبرز عنصر سعري. يبقى مسموحًا عرض ما يعادله شهريًا أو نسبة التوفير، بشرط أن يكونا في موضع ثانوي وأصغر حجمًا. وتطلب الصفحة نفسها، في حالة التجربة المجانية، ذكر مدتها والسعر الذي سيُحصَّل عند نهايتها.
حالتا الرفض 3.1.2(c) اللتان وصلتاني
Solys: 0.38 يورو بخط كبير، و19.99 يورو بخط صغير
Solys هو منبّهي الذي يُنيم شبكاتك الاجتماعية. في شاشة الدفع ضمن التعريف الأوّلي (onboarding)، كانت بطاقة "سنوي" تعرض "0.38 يورو/أسبوع" بحجم 21 نقطة وبخط عريض. وتحتها بحجم 15 نقطة: "أي 19.99 يورو/سنة". لكن المبلغ الذي يُخصم هو 19.99 يورو، وليس 0.38 يورو.
في 10 أكتوبر 2026، رفضت Apple الإصدار مستشهدة بـ 3.1.2(c). تطلب الرسالة أن يكون المبلغ المُحصَّل أوضح عنصر سعري وأبرزه. التجربة المجانية وسعر الإطلاق والأسعار المحسوبة يجب أن تبقى تابعة له. وتذكر Apple معاييرها: الخط، والحجم، واللون، والموضع.
كنت قد أبقيت هذا العرض عن وعي: إصدار سابق من TradaZen، مبني على المبدأ نفسه، قُبل. كانت مجازفة، وكلّفتني دورة مراجعة كاملة.
الإصلاح: "19.99 يورو/سنة" بخط كبير، و"أي 0.38 يورو/أسبوع" كتعليق رمادي تحته، في اللغات الثلاثين للتطبيق. ولأن شاشة الدفع موجودة في الكود، احتجت إلى build جديد قبل إعادة إرسال الإصدار.
TradaZen: السبب نفسه، بعد يومين
TradaZen هو محاكي التداول الخاص بي. في 12 أكتوبر 2026، رُفض الإصدار 1.5.1 للقاعدة نفسها. تتحدّث الرسالة عن سعر "weekly calculated" معروض "more clearly and conspicuously than the billed amount": المعادل الأسبوعي كان أبرز من المبلغ المُحصَّل.
إصلاحي الأول لم يكن كافيًا، وانتبهت لذلك قبل الإرسال. كنت قد صغّرت "0.92 يورو/أسبوع" لكنني تركته على اليمين، في سطر السعر. غير أن بطاقة الاشتراك الأسبوعي كانت تعرض في العمود نفسه سعرها الحقيقي: "8.99 يورو/أسبوع". فصار المبلغان يُقرآن في المستوى نفسه. السعر المحسوب الموضوع في عمود الأسعار الحقيقية يُقرأ كسعر مُحصَّل، حتى لو كان صغيرًا.
الإصلاح المعتمد: كل بطاقة تحمل مبلغها المُحصَّل بخط كبير على اليمين. ينتقل السعر الأسبوعي إلى تعليق رمادي تحته. وعلى اليسار، اسم الخطة فقط. في المراجعة التالية، لم تعد Apple تذكر 3.1.2(c).
الدروس الأخرى من هذا التطبيق موجودة في دراسة حالة TradaZen.
ما رفضته Apple، وما مرّ
إليك طرق العرض الحقيقية، بالترتيب، مع نتيجتها.
| طريقة عرض السعر | النتيجة |
|---|---|
| TradaZen، إصدار سابق: السعر الأسبوعي في الواجهة | قُبل في مراجعة سابقة |
| Solys: "0.38 يورو/أسبوع" بخط عريض، و"19.99 يورو/سنة" تحته | رُفض في 10/10/2026، 3.1.2(c) |
| TradaZen 1.5.1: السعر الأسبوعي أبرز من المبلغ المُحصَّل | رُفض في 12/10/2026، 3.1.2(c) |
| TradaZen: السعر الأسبوعي مصغّر، لكن في عمود الأسعار | استبعدته بنفسي قبل الإرسال |
| TradaZen: المُحصَّل بخط كبير على اليمين، والأسبوعي كتعليق | لم يُذكر في المراجعة التالية |
| Solys: "19.99 يورو/سنة" بخط كبير، والأسبوعي كتعليق رمادي | صُحّح وأُعيد إرساله إلى Apple |
السطر الأول هو الأهم. المراجعة المقبولة لا تعتمد شاشة الدفع الخاصة بك للمراجعة التالية. كل إصدار يمرّ من جديد أمام مراجع، وقد يقرأ القاعدة بصرامة أكبر من سابقه. العرض الآمن الوحيد هو الذي يحترم النص.
المبلغ المخصوم هو السعر الوحيد بالخط الكبير. أي معادل، أسبوعي أو شهري أو يومي، هو تعليق أصغر وأبهت، ولا يحتلّ مكانه أبدًا.
قائمة التحقق لشاشة دفع مطابقة لـ 3.1.2
هذه هي القائمة التي أمرّ عليها الآن في كل شاشة دفع في تطبيقاتي، قبل كل إرسال:
- في كل بطاقة، المبلغ المُحصَّل هو أكبر سعر وأكثره تباينًا وأفضله موضعًا.
- أي سعر محسوب (أسبوعي، شهري، يومي) يكون تعليقًا، أصغر وأبهت، تحت المبلغ المُحصَّل.
- لا يحتلّ أي سعر محسوب العمود الذي تعرض فيه خطة أخرى سعرها الحقيقي.
- المدة مكتوبة بوضوح: "سنويًا"، "أسبوعيًا".
- التجربة المجانية تذكر مدتها والمبلغ الذي سيُحصَّل عند نهايتها.
- جملة تقول إن الاشتراك يتجدّد تلقائيًا ويُلغى من إعدادات حساب Apple.
- ما يفتحه الاشتراك مكتوب قبل زر الشراء.
- زر "Restore Purchases" ظاهر في شاشة الدفع.
- روابط شروط الاستخدام وسياسة الخصوصية موجودة في شاشة الدفع وتفتح فعلًا.
- إذا كنت تقدّم عدة خطط، فهي في مجموعة اشتراكات واحدة، كما تنصح Apple.
- العرض مُختبر على أصغر iPhone ومع أطول سعر. في TradaZen، أختبر السعر بالدونغ الفيتنامي: مبلغ ينتقل إلى سطر جديد يكسر التسلسل البصري.
إذا كنت تستخدم شاشات الدفع من RevenueCat، فإن توثيق RevenueCat يحذّر التحذير نفسه: متغيّر السعر الشهري وحده لا يكفي إذا لم يظهر المبلغ المُحصَّل ودوريته في مكان آخر. الربط الكامل موجود في RevenueCat: إعداد اشتراك داخل التطبيق، وأخطاء التصميم في شاشة الدفع في iOS: 7 أخطاء للمبتدئين.
روابط الشروط والخصوصية: في التطبيق وفي صفحة المتجر
الشكل الآخر من رفض 3.1.2 لا يستهدف شاشة الدفع، بل البيانات الوصفية (metadata). الرسائل التي نشرها مطوّرون على منتديات Apple توضّح المكان المتوقّع: رابط سياسة الخصوصية في الحقل المخصّص له في App Store Connect، ورابط شروط الاستخدام (EULA) في الوصف أو في حقل EULA.
الفخّ يأتي من العقد القياسي. وفقًا لـمساعدة App Store Connect، إذا لم تضف عقدًا مخصّصًا، يُطبَّق عقد Apple القياسي و"the license agreement link isn't shown on your App Store product page": لا يظهر أي رابط في صفحتك. إذا كنت تستخدم العقد القياسي، فعليك أنت أن تضع رابطه في الوصف، إلى صفحة شروطك أو إلى عقد الترخيص القياسي من Apple.
في تطبيقاتي ذات الاشتراك، أختم الوصف بسطرين، بكل لغة من لغات الصفحة. إليك النموذج، عدّله حسب عرضك ونطاقك:
تجربة مجانية لمدة 7 أيام، ثم اشتراك سنوي أو أسبوعي،
يمكن إلغاؤه في أي وقت.
الشروط: https://your-domain.com/terms
الخصوصية: https://your-domain.com/privacy
افتح الرابطين قبل لصقهما: الصفحة غير الموجودة تساوي رابطًا غائبًا. ما يجب أن تحتويه السياسة مفصّل في سياسة الخصوصية لتطبيق، وبقية صفحة المتجر في صفحة ASO App Store.
هذه النقطة تُصلح دون build جديد: الوصف وحقول App Store Connect بيانات وصفية.
3.1.2(a): يجب أن يقدّم الاشتراك قيمة مستمرة
الفقرة الأخرى التي تسبّب الرفض تستهدف النموذج، لا الشاشة. تطلب 3.1.2(a) "ongoing value": قيمة تستمر مع الوقت. تدوم الفترة سبعة أيام على الأقل، ويعمل الاشتراك على كل أجهزة المستخدم. يحصل المشترك على ما دفع مقابله دون مهمة إضافية، مثل النشر على شبكة اجتماعية.
إذا كان تطبيقك يقدّم خدمة لمرة واحدة، فربما يناسبه الشراء لمرة واحدة أكثر. النموذجان مقارنان في اشتراك أم شراء لمرة واحدة.
بماذا ترد على Apple بعد رفض 3.1.2
تجري المحادثة في قسم App Review الخاص بتطبيقك. إجراء الرد على App Review هو نفسه كما في القواعد الأخرى. هناك حالتان:
- المشكلة في التطبيق (حجم الأسعار، بيانات شاشة الدفع): تحتاج إلى build جديد، كما في Solys وTradaZen. المراجع يختبر الكود المضمَّن، وأشرح ذلك في الدليل الخاص بـguideline 2.1.
- المشكلة في صفحة المتجر (روابط غائبة أو معطّلة): تصحّح البيانات الوصفية، وترد، فينطلق الإرسال نفسه من جديد.
اكتب بالإنجليزية، باختصار: ما كانت المشكلة، وما الذي تغيّر، وكيف يُتحقَّق منه. إليك النموذج الذي أستخدمه (استبدل رقم الـ build والأسعار والمسار بما يخصّك):
Hello,
Thank you for your review.
Issue: on the paywall, the weekly equivalent price was displayed
more prominently than the billed amount.
Fix in build X:
- Each plan now shows its billed amount (e.g. "€19.99/year")
as the largest price on the card.
- The weekly equivalent is a smaller grey caption below it.
- The paywall states the duration, the auto-renewal, and links
to our Terms of Use and Privacy Policy.
How to verify: launch the app and complete the onboarding.
The paywall appears at the end.
Best regards,
أصلح شاشة الدفع قبل الإرسال القادم
إذا رُفض تطبيقك للتو بسبب 3.1.2، فإن Apple Review Kit يساعدك على تحديد القاعدة المذكورة، وما تطلبه، ومثال على الإصلاح والرد. كما أن مهارات Claude Code فيه تراجع شاشة الدفع وصفحة المتجر قبل الإرسال. ولنظرة بشرية، احجز ساعة معي: نقرأ رسالة Apple ونعيد العمل على شاشة الدفع على شاشتك. الخطوات الكاملة في صفحة تطبيق مرفوض من Apple، وإعداد الاشتراك في صفحة الاشتراك داخل تطبيق iOS.
إذا كنت تحضّر إطلاقك الأول، أجرِ تشخيصك المجاني: يرتّب لك الخطوات ويرسل إليك قائمتي لتجنّب رفض Apple. ولكي تنشئ تطبيق جوال يحقّق دخلًا منذ إطلاقه، يخصّص iOS Kit مرحلته الثالثة، "ربط المال"، للاشتراك وشاشة الدفع.
لا أحد يستطيع أن يضمن أن Apple ستقبل تطبيقك. ما أستطيع فعله هو أن أجنّبك رفض 3.1.2(c) الذي دفعت ثمنه مرتين.
الأسئلة الشائعة
ماذا يعني "Guideline 3.1.2 - Business - Payments - Subscriptions"؟
هو العنوان الكامل للقاعدة الخاصة بالاشتراكات. يشير إلى سعر بتسلسل بصري خاطئ، أو معلومة ناقصة في شاشة الدفع، أو رابط غائب عن صفحة المتجر، أو اشتراك بلا قيمة مستمرة. الحرف بين القوسين، مثل 3.1.2(c)، يحدّد الفقرة المقصودة.
هل ما زال بالإمكان عرض سعر أسبوعي أو شهري؟
نعم. تسمح Apple بمعادل أسبوعي أو شهري، أو بنسبة توفير، بشرط أن تبقى أصغر وأقل بروزًا من المبلغ المُحصَّل فعلًا. في تطبيقاتي، المعادل تعليق رمادي تحت السعر المُحصَّل، ولا يكون أبدًا في عمود الأسعار الحقيقية.
هل أحتاج إلى build جديد بعد رفض 3.1.2؟
نعم إذا كانت المشكلة في شاشة الدفع، لأن المراجع يختبر الكود المضمَّن. ولا إذا كانت في صفحة المتجر، مثل رابط غائب عن الوصف: تصحّح البيانات الوصفية فينطلق الإرسال نفسه من جديد.
أين أضع رابط شروط الاستخدام (EULA)؟
في التطبيق، على شاشة الدفع. وفي صفحة المتجر، في الوصف أو في حقل EULA في App Store Connect إذا كان لديك عقد مخصّص. مع عقد Apple القياسي، لا يظهر أي رابط في صفحتك: أضفه بنفسك في الوصف، بكل لغة.
شاشة الدفع قُبلت من قبل، فلماذا تُرفض الآن؟
لأن كل إصدار يمرّ بالمراجعة من جديد، وأحيانًا أمام مراجع آخر. السعر الأسبوعي في الواجهة قُبل في TradaZen، ثم رُفض في Solys وفي TradaZen في أكتوبر 2026. وحده نص القاعدة يحميك.