# Guideline 4.5.4：推播通知被 Apple 退件怎麼辦

> Guideline 4.5.4：行銷推播需在 App 內取得明確同意並提供退出方式，App 也必須在不開通知時正常運作。

原始頁面：[Guideline 4.5.4：推播通知被 Apple 退件怎麼辦](https://devoria.fr/zh-hant/blog/guideline-4-5-4-push-notifications-rejected)
作者：[Mehdi Azizi](https://devoria.fr/zh-hant/mehdi-azizi)
發布日期：2026-11-04
內容最後修訂：2026-11-04


Guideline 4.5.4 規範的是推播通知。你的 App 必須在沒有通知的情況下也能運作，通知裡絕不能放敏感資訊，也絕不能在未經同意下拿來做促銷。**行銷通知除了 iOS 的授權之外，還需要你在 App 內以文字取得同意，並提供一個可以撤回同意的開關。**

我用 Expo 發布自己的 iOS App。在我的交易模擬器 TradaZen 上，我拿掉了一則宣傳折扣的通知，換成一則不含任何優惠的提醒，並向審查人員說明。這篇指南根據 Apple 的條文、開發者授權協議、官方文件和這個案例寫成。想看所有退件原因的總覽，請讀[Apple 為什麼退件你的 App](https://devoria.fr/zh-hant/blog/apple-app-rejection-reasons-real-cases)。

## Guideline 4.5.4 寫了什麼？

這條規則位於 [App Review Guidelines](https://developer.apple.com/app-store/review/guidelines/#4.5.4) 第 4 節「Design」的 4.5「Apple Sites and Services」。所以退件標題會是「Guideline 4.5.4 - Design - Apple Sites and Services」。條文劃了三條界線。

1. **通知不能是必要條件。**「Push Notifications must not be required for the app to function.」拒絕 iOS 的授權視窗，不應該擋住任何東西。
2. **不能有敏感資訊。**通知「should not be used to send sensitive personal or confidential information」。通知會顯示在鎖定畫面上，任何人都看得到。
3. **未經同意不能促銷。**行銷內容是被禁止的，「unless customers have explicitly opted in to receive them via consent language displayed in your app's UI」，而且要有「a method in your app for a user to opt out」。

最後一句警告，濫用可能讓你失去使用這項服務的權限。另外有兩條相關規則補足全貌。4.5.3 禁止用通知發送垃圾訊息。[5.1.2(i)](https://devoria.fr/zh-hant/blog/guideline-5-1-2-third-party-ai-att-data-sharing) 禁止以開啟通知作為使用功能、內容或獎勵的條件。

## 開發者授權協議補充了什麼

Guidelines 談的是推播通知。你註冊時同意的 [Apple Developer Program License Agreement](https://developer.apple.com/support/terms/apple-developer-program-license-agreement/#A1) 附件 1 在三點上規定得更多。

- **本機通知也適用。**第 2.2 條針對的是「the APN or Local Notifications」。在 App 內排程、不經伺服器的提醒，也適用同一條規則。
- **促銷的定義很廣。**包含加購，以及「sending any messages to promote the use of Your Application or advertise the availability of new features or versions」。
- **iOS 的授權視窗不能動。**第 1.3 條禁止繞過 Apple 的同意面板。如果使用者拒絕或撤回同意，你就不能再發送任何通知。

我的解讀：**「回來用 App 吧」這類訊息很接近促銷，就算沒有價格也一樣。**Apple 沒有對這種情況下定論，所以我會把這類提醒向審查人員說明清楚。

## 4.5.4 退件訊息是什麼意思？

紀錄最完整的退件案例，是一個沒開通知就無法運作的 App。在 2018 年 [B4X 論壇的一則討論串](https://www.b4x.com/android/forum/threads/apple-app-store-rejected.89295/)中，Apple 寫道：「Push notifications must be optional and must obtain the user's consent to be used within the app.」開發者接著回報，拒絕授權後會出現黑畫面。討論串中提出的可能原因：介面在等通知 token 才會顯示。

**請預設審查人員會拒絕各種授權，看看會發生什麼事。**如果 App 卡住、一直要求或拿掉某個功能，就會吃到 4.5.4 或 5.1.2(i)。至於未經同意的行銷通知，我沒找到近期公開的退件訊息。

## 哪種通知需要哪種同意？

我的對照表綜合了 Apple 條文、授權協議和介面指南。「試用結束」和「回訪提醒」這兩列是我的解讀，不是 Apple 的書面立場。

| 通知類型         | 需要的同意          | 合規範例               |
| ---------------- | ------------------- | ---------------------- |
| 回應使用者操作   | iOS 授權視窗        | 「你的匯出已完成」     |
| 使用者自選的提醒 | iOS 授權視窗        | 每天晚上 7 點的課程    |
| 試用結束、續訂   | iOS 授權視窗        | 「你的試用 12 日結束」 |
| 回訪提醒         | iOS 授權視窗 + 謹慎 | 不含價格，只發一次     |
| 優惠或折扣       | iOS 授權視窗 + 同意 | App 內勾選的選項       |
| App 新功能       | iOS 授權視窗 + 同意 | 只發給已訂閱者         |
| 私人訊息、健康   | 絕不顯示內容        | 「新訊息」             |
| 臨時通知         | 一開始不跳視窗      | 無聲音、無橫幅送達     |

「iOS 授權視窗」指的是系統授權。「同意」指的是你 App 內另外的選項：一句說明你會發送什麼的文字，加上一個預設關閉的開關。

### 訂閱提醒與優惠

Apple 介面指南的 [Managing notifications](https://developer.apple.com/design/human-interface-guidelines/managing-notifications) 頁面提到了訂閱：如果使用者已接受行銷通知，可能會樂於收到「an offer to become a subscriber」。它還加了兩項義務：App 內要有可以改變心意的設定畫面，以及行銷內容絕不能使用「Time Sensitive」等級。

我抓的界線是：**告知已完成購買資訊的提醒不是優惠，推人購買的訊息才是。**「你的試用 12 日結束」是告知。「24 小時內 5 折」是推銷。通知開啟的購買畫面仍受 [3.1.2 規則](https://devoria.fr/zh-hant/blog/guideline-3-1-2-app-subscription-rejected)約束。

## 溫和通知，也就是臨時通知

Apple 在[授權相關文件](https://developer.apple.com/documentation/usernotifications/asking-permission-to-use-notifications)中稱之為「provisional authorization」。App 可以不跳出 iOS 授權視窗就發送通知。通知送達時沒有聲音也沒有橫幅，只出現在通知中心的歷史紀錄裡，並附有保留或關閉的按鈕。在 Expo 裡，這是 [requestPermissionsAsync](https://docs.expo.dev/versions/latest/sdk/notifications/) 的一個選項：

```ts
import * as Notifications from "expo-notifications";

await Notifications.requestPermissionsAsync({
  ios: {
    allowAlert: true,
    allowBadge: true,
    allowSound: true,
    allowProvisional: true,
  },
});
```

在使用者做出選擇之前，`ios.status` 欄位的值會是 `IosAuthorizationStatus.PROVISIONAL`。**臨時通知取代的是 iOS 授權視窗，不是行銷同意。**以臨時方式發送的促銷，仍然是促銷。

注意用詞。在 TradaZen 上，我說的「溫和通知」是指語氣平和、而且只在使用者接受 iOS 授權視窗後才發送的提醒。這不是臨時授權。

## 用 Expo 實作明確同意

1. **在情境中請求 iOS 授權。**Apple 建議在某個能展現通知價值的操作之後再請求，而不是第一次啟動就問。在 TradaZen 上，授權請求特別會出現在新手引導的獎勵或完成一堂課之後。這和[請求評分](https://devoria.fr/zh-hant/blog/guideline-5-6-3-app-review-request-rejection)的邏輯一樣。
2. **另外加一個行銷同意。**一個預設關閉的開關，搭配清楚的文字，例如：「接收優惠與新功能消息，每週最多一次。」
3. **提供設定畫面。**提醒和優惠要能在 App 內關閉，而不只是在 iOS 的「設定」裡。
4. **發送時過濾。**你的伺服器或本機排程器，只把促銷發給已同意的人。
5. **沒開也要一切正常。**拒絕不會擋住任何畫面、功能或獎勵。

## TradaZen：我拿掉的那則通知

2026 年 10 月 12 日，TradaZen 的一個版本因規則 5.6 被退件，這條規則針對的是透過操弄取得的購買。Apple 沒有指出是哪個元素。所以我把整個購買流程重看了一遍，包括通知。

有一則通知有問題。在新手引導期間或訂閱畫面上離開 App，會排程這則本機訊息：「我有一個專屬於你的獨家折扣。」它只依賴 iOS 的授權，沒有另外的行銷同意。**這正是 4.5.4 和授權協議所描述的未經明確同意的促銷。**我在 App 的三十種語言中全部刪除了它。

取而代之的是一則只發一次的提醒：「你的學習進度在等你。想回來隨時都可以，不急。」它的限制：

- 只有在通知已獲授權時才會發送；
- 每次安裝只發一次，在離開新手引導或訂閱畫面五分鐘後；
- 如果使用者在那之前回來，就會取消；
- 沒有價格、沒有折扣、沒有倒數計時、沒有聲音。

這則提醒仍處於前面提到的灰色地帶。我沒有隱瞞：審查備註和我給審查人員的回覆裡都有說明。**說明清楚的提醒可以討論，藏起來的提醒看起來就像在耍手段。**

## 如何回應 4.5.4 退件？

溝通在 App Store Connect 進行，你可以在那裡[回覆 App Review 的訊息](https://developer.apple.com/help/app-store-connect/manage-submissions-to-app-review/reply-to-app-review-messages/)。先修正：拿掉強制要求、加上行銷同意或清理文字，然後重新建置。以下是我會用的範本，請自行調整：

```text
Hello,

Thank you for your feedback on Guideline 4.5.4.

In the new build:
- The app works fully if notifications are denied.
- Promotional notifications are sent only to users
  who turn on "[toggle name]" in [screen]. It is off
  by default and can be turned off at any time.
- Notifications never include [sensitive data].

How to test:
1. Deny notifications at the first prompt.
2. Open [feature]: it works without them.
3. Open [screen] to see both toggles.

Best regards,
```

## 送審前的 4.5.4 檢查清單

- 拒絕授權後 App 仍可完整使用，沒有卡住的畫面，也沒有被拿走的獎勵。
- iOS 授權視窗出現在有用的操作之後，絕不在第一個畫面。
- 每則促銷，無論本機或遠端，都取決於一個預設關閉的行銷同意。
- App 內有設定畫面可以關閉提醒和優惠。
- 沒有任何通知文字會顯示健康資料、金額或私人訊息。
- 沒有任何促銷使用「Time Sensitive」等級。
- 審查備註列出了頭幾天會發送的通知。
- 你已經在拒絕每一項授權的情況下測試過流程。[TestFlight](https://devoria.fr/zh-hant/blog/testflight-test-iphone-app-before-review) 指南說明如何安裝你的 build 來做這個測試。

## 送出前檢查你的資料

[Review Kit](https://devoria.fr/zh-hant/kits/app-review) 收錄了我的送審前檢查清單、給測試人員的備註範本，以及會檢查你專案的 Claude Code skills。想要真人幫你看，[跟我預約一小時](https://devoria.fr/zh-hant/coaching)：我們透過視訊一起檢查你的通知和設定畫面。完整流程請見[App 被 Apple 退件](https://devoria.fr/zh-hant/expertise/app-rejected-by-apple)頁面。

正在準備你的第一次上架嗎？[做免費診斷](https://devoria.fr/zh-hant/diagnostic)：它會幫你把步驟排好順序，並寄給你我的 Apple 防退件檢查清單。

## 常見問題

### 「Guideline 4.5.4 - Design - Apple Sites and Services」是什麼意思？

這是 Apple 認定你的通知屬於強制、太過暴露隱私，或未經同意就促銷時的退件標題。請看標題後面那句話：它寫的是審查人員發現的問題。

### 可以在新手引導期間請求通知授權嗎？

可以，只要拒絕不會擋住任何東西，而且請求是在能展現通知價值的時刻之後。絕對不要把獎勵綁在同意上：5.1.2(i) 禁止這麼做。

### 試用結束通知算行銷嗎？

我的解讀：如果它只告知目前的試用狀態，就不算。如果它提供折扣或其他訂閱方案，就變成促銷，需要行銷同意。

### 本機通知也受 4.5.4 規範嗎？

Guideline 談的是推播通知，但開發者授權協議附件 1 把促銷規則也套用到本機通知上。請用同樣的方式處理。

### 臨時通知可以免除行銷同意嗎？

不行。它只是一開始不跳出 iOS 授權視窗，但促銷就是促銷：仍需要在 App 內取得明確同意，並提供退出方式。


## 你的專案

[Review Kit](https://devoria.fr/zh-hant/kits/app-review)：我的 App Store 審查檢查清單、我被 Apple 退件後的修正、Google Play 檢查清單，以及三個 Claude Code skill。$1,749。

[iOS & Android Kit](https://devoria.fr/zh-hant/kits/ios)：用 Claude Code 打造你的 iPhone 和 Android App：我自己 App 的起始程式碼、上架商店的完整流程，以及所有套件。$3,599。

[診斷：你離自己的 iPhone App 還差什麼](https://devoria.fr/zh-hant/diagnostic)：7 個問題，60 秒：找出真正卡住你發布 iPhone App 的原因，拿到你的 4 步驟路線，以及最適合你的套件。
