# Guideline 4.8 Login Services: חובה Sign in with Apple?

> Guideline 4.8: אם באפליקציה יש התחברות עם Google או Facebook, צריך להוסיף התחברות שמגינה על המייל, כמו של Apple. חריגים, קוד Expo ומחיקת חשבון.

עמוד מקורי: [Guideline 4.8 Login Services: חובה Sign in with Apple?](https://devoria.fr/he/blog/guideline-4-8-login-services-sign-in-with-apple)
כותב: [Mehdi Azizi](https://devoria.fr/he/mehdi-azizi)
פרסום: 2026-10-27
עדכון תוכן אחרון: 2026-10-27


Guideline 4.8 חלה ברגע שהאפליקציה שלך משתמשת ב-Google, ב-Facebook או בהתחברות צד שלישי אחרת כדי ליצור את החשבון הראשי. במקרה כזה היא מחייבת אפשרות התחברות נוספת ושוות ערך, שמגבילה את הנתונים לשם ולמייל, מאפשרת להסתיר את המייל ולא עוקבת אחרי המשתמש לצורכי פרסום בלי הסכמתו. **מאז ינואר 2024 האפשרות הזו כבר לא חייבת להיות Sign in with Apple, אבל זו האפשרות ש-Apple עצמה מזכירה בהודעות הדחייה שלה.**

באפליקציות שלי, Solys ו-Nolera מציעות התחברות עם Apple, עם Google ועם מייל. המדריך הזה יוצא מהנוסח הנוכחי של Apple, ואז מראה איך אני מוסיף התחברות עם Apple לאפליקציית Expo שמחוברת ל-Supabase, ומה זה משנה במחיקת חשבון. לתמונה הכללית של סיבות הדחייה, עדיף לקרוא [למה Apple דוחה אפליקציה](https://devoria.fr/he/blog/apple-app-rejection-reasons-real-cases).

## מה אומרת Guideline 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. האפליקציה שלך היא לקוח של שירות צד שלישי מסוים: האדם מתחבר לתיבת המייל או לרשת החברתית שלו כדי לגשת לתוכן שלו.

עוד לפני החריגים, תשאל את עצמך: האפליקציה שלך בכלל צריכה חשבון? אם לא, Guideline 5.1.1(v) דורשת שאפשר יהיה להשתמש בה בלי התחברות, כמו שאני מסביר ב-[מדריך ל-Guideline 5.1.1](https://devoria.fr/he/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 }
    }
  }
}
```

השורה השנייה מציגה את הכפתור בשפה של האייפון. עם EAS Build, היכולת מופעלת על מזהה האפליקציה שלך בזמן ה-build. **זו הגדרה נייטיב: היא יוצאת עם 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 ו-web: אין התחברות עם 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 identifier שלך** ב-Client IDs של ספק Apple. אפליקציה נייטיב בלבד לא צריכה מפתח סודי כדי להתחבר. תוסיף `host.exp.Exponent` אם אתה בודק ב-Expo Go.
- **השם הפרטי והמייל מגיעים רק פעם אחת.** Apple לא שולחת אותם שוב בהתחברויות הבאות: תשמור אותם כבר בתשובה הראשונה.
- **המייל יכול להיות כתובת ממסר.** Apple ממליצה לא לבקש אחר כך כתובת אישית.
- **ביטול הוא לא שגיאה.** ב-Nolera, סגירת החלונית של Apple לא מקפיצה שום הודעה אדומה: זו פעולה מכוונת.

מקרה שקרה לי ב-Solys, באוגוסט 2026: כפתורי Apple ו-Google היו באפליקציה, אבל אף אחד משני הספקים לא היה מופעל ב-Supabase. הקוד היה תקין, התיקון נעשה בצד השרת, בלי build חדש. **כפתור Apple שנכשל מול הבודק זה דחייה של 2.1 במקום דחייה של 4.8.** הפירוט נמצא ב-[מדריך ל-Guideline 2.1](https://devoria.fr/he/blog/guideline-2-1-app-store-rejection-fix).

### 4. לבדוק על אייפון אמיתי

Expo מזהירים שהסימולטור מאפשר רק בדיקה מוגבלת, ושהמזהים שמתקבלים ב-Expo Go שונים מאלה של האפליקציה המפורסמת. תבדוק התחברות, התנתקות ואז התחברות מחדש על אייפון אמיתי, עם build של [TestFlight](https://devoria.fr/he/blog/testflight-test-iphone-app-before-submission).

## התחברות עם Apple ומחיקת חשבון

Guideline 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) של האדם.

הביטול הזה דורש שני דברים: טוקן של האדם, שמקבלים על ידי אימות של authorization code, וסוד שנחתם עם המפתח הפרטי שלך של Sign in with Apple. **גם אם ההתחברות הנייטיב מסתדרת בלי מפתח סודי, הביטול דורש אחד, והוא נשאר על השרת שלך.** הסיבה מוסברת ב-[מפתח API סודי באפליקציית Expo](https://devoria.fr/he/blog/secret-api-key-expo-app-what-to-protect).

ב-Nolera, ברגע מחיקת החשבון, האפליקציה מבקשת שוב התחברות עם Apple כדי לקבל authorization code טרי. היא שולחת אותו לפונקציית שרת, שמחליפה אותו מול Apple ואז מבטלת את הטוקן. אם האדם מבטל, הודעה ברורה אומרת את זה ושום דבר לא נמחק. שאר התהליך, כולל נתונים, מנוי ובדיקות, נמצא ב-[מחיקת חשבון ב-iOS](https://devoria.fr/he/blog/ios-account-deletion-test-before-apple).

## מה לענות ל-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 identifier שלך.
- ביטול מחזיר למסך ההתחברות, בלי הודעת שגיאה.
- השם הפרטי והמייל נשמרים כבר בהתחברות הראשונה.
- מחיקת החשבון מבטלת את הטוקן של Apple, מהשרת שלך.
- הכול נבדק על אייפון אמיתי, עם חשבון Apple שאף פעם לא התחבר לאפליקציה.
- צילומי המסך שלך מראים את מסך ההתחברות כמו שהוא ב-build שנשלח.

## לתקן את הדחייה לפני ששולחים שוב

אם האפליקציה שלך נדחתה הרגע על 4.8, ה-[Apple Review Kit](https://devoria.fr/he/kits/app-review) מרכז את מה שאני בודק לפני כל שליחה, עם שני skills שעוברים על הפרויקט שלך ב-Claude Code ומכינים את התשובה שלך אם Apple דוחה. בשביל עין אנושית, [תקבע איתי שעה](https://devoria.fr/he/coaching): נקרא את ההודעה ביחד ונסתכל על מסך ההתחברות שלך. התהליך המלא אחרי דחייה נמצא בעמוד [אפליקציה שנדחתה על ידי Apple](https://devoria.fr/he/expertise/app-rejected-by-apple).

אם אתה מתכונן להשקה הראשונה שלך, [תעשה את האבחון החינמי](https://devoria.fr/he/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 דורשת יכולת נייטיב, שמופעלת בזמן ה-build. עדכון מרחוק לא יכול להוסיף אותה. החריג היחיד: לאפליקציה שלך כבר הייתה אפשרות תואמת, ומספיק להסביר את זה ל-Apple בתשובה שלך.


## הפרויקט שלך

[Apple Review Kit](https://devoria.fr/he/kits/app-review): הצ'קליסט לביקורת App Store שאני משתמש בו, הדחיות שלי מאפל עם התיקונים, הערות לבודק ושני skills של Claude Code שעוברים על האפליקציה. 29 €.

[iOS Kit](https://devoria.fr/he/kits/ios): בנה אפליקציית אייפון עם Claude Code: קוד הבסיס של האפליקציות שלי, skills שבודקים את העבודה, ו-Apple Review Kit, App Store Screenshots Kit ו-ASO Kit. 129,99 €.
