Guideline 4.5.4:推播通知被 Apple 退件怎麼辦
作者:Mehdi Azizi
發布於 ,9 分鐘
Guideline 4.5.4:行銷推播需在 App 內取得明確同意並提供退出方式,App 也必須在不開通知時正常運作。
Guideline 4.5.4 規範的是推播通知。你的 App 必須在沒有通知的情況下也能運作,通知裡絕不能放敏感資訊,也絕不能在未經同意下拿來做促銷。行銷通知除了 iOS 的授權之外,還需要你在 App 內以文字取得同意,並提供一個可以撤回同意的開關。
我用 Expo 發布自己的 iOS App。在我的交易模擬器 TradaZen 上,我拿掉了一則宣傳折扣的通知,換成一則不含任何優惠的提醒,並向審查人員說明。這篇指南根據 Apple 的條文、開發者授權協議、官方文件和這個案例寫成。想看所有退件原因的總覽,請讀Apple 為什麼退件你的 App。
Guideline 4.5.4 寫了什麼?
這條規則位於 App Review Guidelines 第 4 節「Design」的 4.5「Apple Sites and Services」。所以退件標題會是「Guideline 4.5.4 - Design - Apple Sites and Services」。條文劃了三條界線。
- 通知不能是必要條件。「Push Notifications must not be required for the app to function.」拒絕 iOS 的授權視窗,不應該擋住任何東西。
- 不能有敏感資訊。通知「should not be used to send sensitive personal or confidential information」。通知會顯示在鎖定畫面上,任何人都看得到。
- 未經同意不能促銷。行銷內容是被禁止的,「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) 禁止以開啟通知作為使用功能、內容或獎勵的條件。
開發者授權協議補充了什麼
Guidelines 談的是推播通知。你註冊時同意的 Apple Developer Program License Agreement 附件 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 論壇的一則討論串中,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 頁面提到了訂閱:如果使用者已接受行銷通知,可能會樂於收到「an offer to become a subscriber」。它還加了兩項義務:App 內要有可以改變心意的設定畫面,以及行銷內容絕不能使用「Time Sensitive」等級。
我抓的界線是:告知已完成購買資訊的提醒不是優惠,推人購買的訊息才是。「你的試用 12 日結束」是告知。「24 小時內 5 折」是推銷。通知開啟的購買畫面仍受 3.1.2 規則約束。
溫和通知,也就是臨時通知
Apple 在授權相關文件中稱之為「provisional authorization」。App 可以不跳出 iOS 授權視窗就發送通知。通知送達時沒有聲音也沒有橫幅,只出現在通知中心的歷史紀錄裡,並附有保留或關閉的按鈕。在 Expo 裡,這是 requestPermissionsAsync 的一個選項:
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 實作明確同意
- 在情境中請求 iOS 授權。Apple 建議在某個能展現通知價值的操作之後再請求,而不是第一次啟動就問。在 TradaZen 上,授權請求特別會出現在新手引導的獎勵或完成一堂課之後。這和請求評分的邏輯一樣。
- 另外加一個行銷同意。一個預設關閉的開關,搭配清楚的文字,例如:「接收優惠與新功能消息,每週最多一次。」
- 提供設定畫面。提醒和優惠要能在 App 內關閉,而不只是在 iOS 的「設定」裡。
- 發送時過濾。你的伺服器或本機排程器,只把促銷發給已同意的人。
- 沒開也要一切正常。拒絕不會擋住任何畫面、功能或獎勵。
TradaZen:我拿掉的那則通知
2026 年 10 月 12 日,TradaZen 的一個版本因規則 5.6 被退件,這條規則針對的是透過操弄取得的購買。Apple 沒有指出是哪個元素。所以我把整個購買流程重看了一遍,包括通知。
有一則通知有問題。在新手引導期間或訂閱畫面上離開 App,會排程這則本機訊息:「我有一個專屬於你的獨家折扣。」它只依賴 iOS 的授權,沒有另外的行銷同意。這正是 4.5.4 和授權協議所描述的未經明確同意的促銷。我在 App 的三十種語言中全部刪除了它。
取而代之的是一則只發一次的提醒:「你的學習進度在等你。想回來隨時都可以,不急。」它的限制:
- 只有在通知已獲授權時才會發送;
- 每次安裝只發一次,在離開新手引導或訂閱畫面五分鐘後;
- 如果使用者在那之前回來,就會取消;
- 沒有價格、沒有折扣、沒有倒數計時、沒有聲音。
這則提醒仍處於前面提到的灰色地帶。我沒有隱瞞:審查備註和我給審查人員的回覆裡都有說明。說明清楚的提醒可以討論,藏起來的提醒看起來就像在耍手段。
如何回應 4.5.4 退件?
溝通在 App Store Connect 進行,你可以在那裡回覆 App Review 的訊息。先修正:拿掉強制要求、加上行銷同意或清理文字,然後重新建置。以下是我會用的範本,請自行調整:
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 指南說明如何安裝你的 build 來做這個測試。
送出前檢查你的資料
Review Kit 收錄了我的送審前檢查清單、給測試人員的備註範本,以及會檢查你專案的 Claude Code skills。想要真人幫你看,跟我預約一小時:我們透過視訊一起檢查你的通知和設定畫面。完整流程請見App 被 Apple 退件頁面。
正在準備你的第一次上架嗎?做免費診斷:它會幫你把步驟排好順序,並寄給你我的 Apple 防退件檢查清單。
常見問題
「Guideline 4.5.4 - Design - Apple Sites and Services」是什麼意思?
這是 Apple 認定你的通知屬於強制、太過暴露隱私,或未經同意就促銷時的退件標題。請看標題後面那句話:它寫的是審查人員發現的問題。
可以在新手引導期間請求通知授權嗎?
可以,只要拒絕不會擋住任何東西,而且請求是在能展現通知價值的時刻之後。絕對不要把獎勵綁在同意上:5.1.2(i) 禁止這麼做。
試用結束通知算行銷嗎?
我的解讀:如果它只告知目前的試用狀態,就不算。如果它提供折扣或其他訂閱方案,就變成促銷,需要行銷同意。
本機通知也受 4.5.4 規範嗎?
Guideline 談的是推播通知,但開發者授權協議附件 1 把促銷規則也套用到本機通知上。請用同樣的方式處理。
臨時通知可以免除行銷同意嗎?
不行。它只是一開始不跳出 iOS 授權視窗,但促銷就是促銷:仍需要在 App 內取得明確同意,並提供退出方式。

