# الإرشاد 4.8 من Apple: هل تسجيل الدخول بـ Apple إلزامي؟

> الإرشاد 4.8: إذا كان تطبيقك يوفر الدخول بـ Google أو Facebook، فأضف خيار دخول يحمي البريد مثل Apple. الاستثناءات وكود Expo وحذف الحساب.

الصفحة الأصلية: [الإرشاد 4.8 من Apple: هل تسجيل الدخول بـ Apple إلزامي؟](https://devoria.fr/ar/blog/guideline-4-8-sign-in-with-apple-login-services)
الكاتب: [Mehdi Azizi](https://devoria.fr/ar/mehdi-azizi)
النشر: 2026-10-27
آخر مراجعة للمحتوى: 2026-10-27


ينطبق الإرشاد 4.8 بمجرد أن يستخدم تطبيقك Google أو Facebook أو أي خدمة دخول خارجية أخرى لإنشاء الحساب الرئيسي. وفي هذه الحالة يفرض عليك خيار دخول آخر مكافئًا، يقتصر على الاسم والبريد الإلكتروني، ويتيح إخفاء البريد، ولا يتتبع المستخدم لأغراض إعلانية دون موافقته. **منذ يناير 2024 لم يعد هذا الخيار بالضرورة «Sign in with Apple»، لكنه الخيار الذي تذكره Apple بنفسها في رسائل الرفض.**

في تطبيقاتي، يوفر Solys وNolera الدخول عبر Apple وGoogle والبريد الإلكتروني. ينطلق هذا الدليل من نص Apple الحالي، ثم يشرح كيف أضيف الدخول بـ Apple إلى تطبيق Expo مربوط بـ Supabase، وما الذي يغيّره ذلك في حذف الحساب. وللاطلاع على الصورة الكاملة لأسباب الرفض، اقرأ [لماذا ترفض Apple تطبيقًا](https://devoria.fr/ar/blog/apple-app-rejection-reasons-real-cases).

## ماذا يقول الإرشاد 4.8 Login Services؟

يقع الإرشاد 4.8 في القسم 4، «Design»، من [App Review Guidelines](https://developer.apple.com/app-store/review/guidelines/#login-services). وهو يستهدف التطبيقات التي تستخدم «a third-party or social login service» لإنشاء الحساب الرئيسي أو التحقق منه: Facebook Login وGoogle Sign-In وLog in with X وLinkedIn وAmazon وWeChat. على هذه التطبيقات أن توفر أيضًا، «as an equivalent option»، خدمة دخول أخرى تستوفي ثلاثة شروط.

| شرط Apple             | بوضوح                             |
| --------------------- | --------------------------------- |
| بيانات محدودة         | الاسم والبريد الإلكتروني، لا أكثر |
| إمكانية إخفاء البريد  | يستطيع المستخدم إخفاءه            |
| لا إعلانات دون موافقة | لا تتبع إعلاني دون موافقة         |

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

### ما الذي تغيّر في يناير 2024

قبل 2024، كانت القاعدة تفرض «Sign in with Apple» على التطبيقات التي تستخدم دخولًا خارجيًا للحساب الرئيسي. وفي [25 يناير 2024](https://developer.apple.com/news/?id=f1v8pyay) خففت Apple هذه النقطة: يمكنك أن توفر الدخول بـ Apple، أو خدمة مكافئة تحمي الخصوصية. صفحات كثيرة ما زالت تقول العكس. فـ[توثيق Expo](https://docs.expo.dev/versions/latest/sdk/apple-authentication/) ما زال يكتب أن التطبيق الذي يوفر دخولًا خارجيًا يجب أن يوفر Apple.

عمليًا، تنتهي رسالة رفض 4.8 المنشورة في [منتديات مطوري Apple](https://developer.apple.com/forums/thread/765145) بهذه العبارة: «Note that Sign in with Apple meets the requirements specified in guideline 4.8». لا تذكر Apple أي خدمة أخرى مطابقة. **حتى لا ألعب لعبة التخمين مع المراجع، أضيف الدخول بـ Apple.**

## الاستثناءات الخمسة التي ينص عليها الإرشاد

تذكر Apple خمس حالات لا يُشترط فيها أي خيار دخول آخر:

1. **تطبيقك يستخدم نظام حسابات خاصًا بك فقط**، مثل البريد الإلكتروني مع كلمة مرور أو رمز يُرسل بالبريد.
2. تطبيقك متجر تطبيقات بديل، أو يوزَّع عبر أحدها، مع دخول خاص بذلك المتجر.
3. تطبيقك تعليمي أو للمؤسسات أو مهني، ويتطلب حساب مدرسة أو شركة موجودًا مسبقًا.
4. تطبيقك يستخدم نظام هوية إلكترونية تدعمه دولة أو قطاع.
5. تطبيقك عميل لخدمة خارجية محددة: يسجل الشخص دخوله إلى بريده أو شبكته الاجتماعية ليصل إلى محتواه الخاص.

وقبل هذه الاستثناءات، اسأل نفسك: هل يحتاج تطبيقك إلى حساب أصلًا؟ إن لم يكن كذلك، فالإرشاد 5.1.1(v) يطلب أن يبقى قابلًا للاستخدام دون تسجيل دخول، كما أشرح في [دليل الإرشاد 5.1.1](https://devoria.fr/ar/blog/guideline-5-1-1-app-store-rejection-fix).

| شاشة الدخول في تطبيقك     | هل ينطبق 4.8؟    |
| ------------------------- | ---------------- |
| لا حساب                   | لا               |
| بريد إلكتروني أو رمز فقط  | لا               |
| Google وحده               | نعم              |
| Google والبريد الإلكتروني | نعم، على الأرجح  |
| Google وApple             | نعم، ومطابق      |
| حساب مدرسة موجود مسبقًا   | لا               |
| Google للاستيراد          | لا، لا يوجد حساب |

## إضافة «Sign in with Apple» إلى تطبيق Expo

### 1. تثبيت الوحدة وتفعيل القدرة

```bash
npx expo install expo-apple-authentication
```

بعد ذلك يطلب توثيق Expo تفعيل القدرة في إعدادات التطبيق:

```json
{
  "expo": {
    "ios": {
      "usesAppleSignIn": true,
      "infoPlist": { "CFBundleAllowMixedLocalizations": true }
    }
  }
}
```

السطر الثاني يعرض الزر بلغة الـ iPhone. ومع EAS Build تُفعَّل القدرة على معرّف تطبيقك لحظة البناء. **هذا إعداد أصلي (native): يصل مع build جديد، ولا يصل أبدًا عبر تحديث عن بُعد.**

فخ اكتشفته وأنا أراجع الكود الأساسي لحزمي: هذه القدرة تفرض التوقيع، حتى لتشغيل التطبيق على المحاكي. على جهاز Mac بلا شهادة «Apple Development»، كانت الترجمة المحلية تفشل برسالة «No code signing certificates are available to use». الحل: لا تفعّل الدخول بـ Apple إلا عندما يكون خادم المصادقة مُعدًّا.

### 2. عرض الزر الرسمي، بوضوح زر Google نفسه

[قواعد التصميم لدى Apple](https://developer.apple.com/design/human-interface-guidelines/sign-in-with-apple) واضحة: يجب ألا يكون زر Apple أصغر من أزرار الدخول الأخرى، ويجب ألا يضطر المستخدم إلى التمرير لرؤيته. مكوّن Expo يرسم الزر الرسمي، بعنوان تسمح به Apple.

```tsx
import * as AppleAuthentication from "expo-apple-authentication";
import { useEffect, useState } from "react";

export function BoutonApple({ onPress }: { onPress: () => void }) {
  const [disponible, setDisponible] = useState(false);

  useEffect(() => {
    AppleAuthentication.isAvailableAsync().then(setDisponible);
  }, []);

  // Android والويب: لا دخول بـ Apple، فلا زر.
  if (!disponible) return null;

  return (
    <AppleAuthentication.AppleAuthenticationButton
      buttonType={AppleAuthentication.AppleAuthenticationButtonType.CONTINUE}
      buttonStyle={AppleAuthentication.AppleAuthenticationButtonStyle.BLACK}
      cornerRadius={12}
      style={{ width: "100%", height: 50 }}
      onPress={onPress}
    />
  );
}
```

يوضح Expo أن الزر لا يظهر دون عرض وارتفاع. اللون واستدارة الحواف يمرّان عبر `buttonStyle` و`cornerRadius`، لا عبر style.

### 3. فتح الجلسة في Supabase

```ts
import * as AppleAuthentication from "expo-apple-authentication";
import { supabase } from "./supabase";

export async function connexionApple(): Promise<"ok" | "annule"> {
  try {
    const credential = await AppleAuthentication.signInAsync({
      requestedScopes: [
        AppleAuthentication.AppleAuthenticationScope.FULL_NAME,
        AppleAuthentication.AppleAuthenticationScope.EMAIL,
      ],
    });
    if (!credential.identityToken) throw new Error("رمز Apple غير موجود");
    const { error } = await supabase.auth.signInWithIdToken({
      provider: "apple",
      token: credential.identityToken,
    });
    if (error) throw error;
    // الاسم الأول لا يصل إلا عند أول تفويض: نحفظه فورًا.
    const prenom = credential.fullName?.givenName;
    if (prenom) await supabase.auth.updateUser({ data: { prenom } });
    return "ok";
  } catch (e) {
    if ((e as { code?: string }).code === "ERR_REQUEST_CANCELED")
      return "annule";
    throw e;
  }
}
```

أربع تفاصيل مهمة، مأخوذة من [توثيق Supabase](https://supabase.com/docs/guides/auth/social-login/auth-apple) وتوثيق Expo وقواعد التصميم لدى Apple:

- **في Supabase، أضف معرّف الـ bundle الخاص بك** في Client IDs لمزوّد Apple. التطبيق الأصلي فقط لا يحتاج إلى مفتاح سري لتسجيل الدخول. أضف `host.exp.Exponent` إذا كنت تختبر في Expo Go.
- **الاسم الأول والبريد الإلكتروني لا يصلان إلا مرة واحدة.** لا تعيدهما Apple في عمليات الدخول التالية: احفظهما من أول استجابة.
- **قد يكون البريد عنوان ترحيل (relay).** توصي Apple بعدم طلب عنوان شخصي بعد ذلك.
- **الإلغاء ليس خطأ.** في Nolera، إغلاق نافذة Apple لا يُظهر أي رسالة حمراء: إنه تصرف مقصود.

حالة عشتها مع Solys في أغسطس 2026: كان زرا Apple وGoogle في التطبيق، لكن لم يكن أي من المزوّدين مفعّلًا في Supabase. كان الكود سليمًا، وتم الإصلاح من جهة الخادم، دون build جديد. **زر Apple يفشل أمام المراجع يعني رفضًا وفق 2.1 بدلًا من رفض وفق 4.8.** التفاصيل في [دليل الإرشاد 2.1](https://devoria.fr/ar/blog/guideline-2-1-app-store-rejection-fix).

### 4. الاختبار على iPhone حقيقي

ينبّه Expo إلى أن المحاكي لا يسمح إلا باختبار محدود، وأن المعرّفات التي تصل في Expo Go تختلف عن معرّفات التطبيق المنشور. اختبر الدخول ثم الخروج ثم الدخول مجددًا على iPhone حقيقي، باستخدام build عبر [TestFlight](https://devoria.fr/ar/blog/testflight-test-iphone-app-before-submission).

## الدخول بـ Apple وحذف الحساب

يطلب الإرشاد 5.1.1(v) أن يكون الحساب المُنشأ في التطبيق قابلًا للحذف من داخل التطبيق. ومع الدخول بـ Apple، تضيف [صفحة Apple حول حذف الحساب](https://developer.apple.com/support/offering-account-deletion-in-your-app) خطوة: استخدام REST API الخاصة بـ Sign in with Apple لـ[إبطال رموز](https://developer.apple.com/documentation/signinwithapplerestapi/revoke-tokens) الشخص.

يتطلب هذا الإبطال أمرين: رمزًا خاصًا بالشخص، تحصل عليه بالتحقق من رمز تفويض، وسرًّا موقّعًا بمفتاحك الخاص لـ Sign in with Apple. **حتى لو كان الدخول الأصلي لا يحتاج إلى مفتاح سري، فالإبطال يحتاج إليه، ويبقى على خادمك.** السبب مشروح في [مفتاح API سري في تطبيق Expo](https://devoria.fr/ar/blog/expo-secret-api-key-what-to-protect).

في Nolera، عند حذف الحساب، يطلب التطبيق تسجيل الدخول بـ Apple مجددًا للحصول على رمز تفويض جديد. ثم يرسله إلى دالة على الخادم، تبادله لدى Apple ثم تُبطل الرمز. وإذا ألغى الشخص العملية، تخبره رسالة واضحة بذلك ولا يُحذف شيء. بقية المسار، بما فيه البيانات والاشتراك والاختبارات، تجده في [حذف الحساب على iOS](https://devoria.fr/ar/blog/ios-account-deletion-test-before-apple-review).

## بماذا ترد على Apple بعد رفض 4.8

تقترح رسالة Apple مخرجين. إما أن تضيف خيارًا مكافئًا. وإما أن تطبيقك يملكه أصلًا: فترد في App Store Connect، وتذكر أي خيار هو ولماذا يستوفي الشروط الثلاثة. تقترح Apple أيضًا تحديث لقطات الشاشة التي تعرض شاشة الدخول. وطريقة [الرد على App Review](https://developer.apple.com/help/app-store-connect/manage-submissions-to-app-review/reply-to-app-review-messages/) هي نفسها كما في القواعد الأخرى.

إليك نموذجًا بالإنجليزية، عدّله حسب حالتك (استبدل رقم الـ build):

```text
Hello,

Thank you for your review.

Build X adds Sign in with Apple as an equivalent login option.
It appears on the same screen as Google Sign-In, with the same
size, and is visible without scrolling.

How to verify: launch the app, open the sign-in screen and
tap "Continue with Apple".

We also updated the screenshots that show the sign-in screen.

Best regards,
```

## قائمة تحقق 4.8 قبل الإرسال

- تعرف هل يحتاج تطبيقك إلى حساب. وإن لم يكن، فهو يُستخدم دون تسجيل دخول.
- إذا كان Google أو Facebook أو X ينشئ الحساب، فالدخول بـ Apple موجود على الشاشة نفسها.
- زر Apple هو الزر الرسمي، بحجم الأزرار الأخرى، ومرئي دون تمرير.
- مزوّد Apple مفعّل من جهة الخادم، مع معرّف الـ bundle الخاص بك.
- الإلغاء يعيد إلى شاشة الدخول، دون رسالة خطأ.
- الاسم الأول والبريد الإلكتروني يُحفظان من أول دخول.
- حذف الحساب يُبطل رمز Apple، من خادمك.
- كل شيء مُختبر على iPhone حقيقي، بحساب Apple لم يسجل الدخول إلى التطبيق من قبل.
- لقطات الشاشة تعرض شاشة الدخول كما هي في الـ build المُرسل.

## أصلح سبب الرفض قبل إعادة إرسال التطبيق

إذا رُفض تطبيقك للتو وفق 4.8، فإن [Apple Review Kit](https://devoria.fr/ar/kits/app-review) يجمع ما أتحقق منه قبل كل إرسال، مع مهارتين (skills) تراجعان مشروعك في Claude Code وتجهّزان ردك إذا رفضت Apple. وإذا أردت نظرة بشرية، [احجز ساعة معي](https://devoria.fr/ar/coaching): نقرأ الرسالة معًا وننظر في شاشة الدخول لديك. والخطوات الكاملة بعد الرفض موجودة في صفحة [تطبيق رفضته Apple](https://devoria.fr/ar/expertise/app-rejected-by-apple).

إذا كنت تحضّر لإطلاقك الأول، [قم بالتشخيص المجاني](https://devoria.fr/ar/diagnostic): يخبرك بالمرحلة التي تبدأ بها أولًا ويرسل لك قائمتي لتجنب رفض Apple.

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

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

### هل تسجيل الدخول بـ Apple إلزامي على iOS؟

لا، ليس في كل الحالات. لا يُشترط إلا إذا كان تطبيقك يوفر دخولًا خارجيًا، مثل Google أو Facebook، لإنشاء الحساب الرئيسي. ومنذ يناير 2024 يمكن أن تحل محله خدمة أخرى مكافئة، لكن Apple لا تذكر إلا الدخول بـ Apple على أنه مطابق.

### ماذا تعني «Guideline 4.8 - Design - Login Services»؟

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

### هل يكفي التسجيل بالبريد الإلكتروني إلى جانب Google؟

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

### هل يجب توفير الدخول بـ Apple على Android؟

لا. الإرشاد 4.8 قاعدة خاصة بالـ App Store، ووحدة Expo لا تعمل إلا على iOS. على Android تُرجع `isAvailableAsync()` القيمة false: لا يظهر زر Apple، ويمكن أن يبقى Google وحده.

### هل يلزم build جديد بعد رفض 4.8؟

نعم، في أغلب الحالات. الدخول بـ Apple يتطلب قدرة أصلية تُفعَّل لحظة البناء، ولا يستطيع تحديث عن بُعد إضافتها. الاستثناء الوحيد: أن يكون تطبيقك يملك أصلًا خيارًا مطابقًا، ويكفي أن تشرح ذلك لـ Apple في ردك.


## مشروعك

[Apple Review Kit](https://devoria.fr/ar/kits/app-review): قائمة تحقق مراجعة App Store التي أستخدمها، وحالات رفض Apple التي صححتها، وملاحظات للمراجع، ومهارتان في Claude Code تراجعان تطبيقك. 29 €.

[iOS Kit](https://devoria.fr/ar/kits/ios): أنشئ تطبيق iPhone مع Claude Code: الكود الأساسي لتطبيقاتي، والمهارات التي تتحقق من عمله، وحزم Apple Review Kit وApp Store Screenshots Kit وASO Kit. 129,99 €.
