# App Store Connect 優惠代碼：建立訂閱促銷碼

> 自 2026 年 3 月起，優惠代碼取代 App 內購買的促銷碼：可建立一次性或自訂代碼，透過連結、App Store 或 App 內兌換。

原始頁面：[App Store Connect 優惠代碼：建立訂閱促銷碼](https://devoria.fr/zh-hant/blog/app-store-connect-offer-codes-promo-code)
作者：[Mehdi Azizi](https://devoria.fr/zh-hant/mehdi-azizi)
發布日期：2026-11-04
內容最後修訂：2026-11-04


在 App Store Connect 裡，訂閱或 App 內購買的「促銷碼」現在叫做優惠代碼（offer code）。**自 2026 年 3 月 26 日起，Apple 不再允許為 App 內購買建立促銷碼**：促銷碼只剩下一個用途，就是免費送出付費 App 的下載。你要先在產品上建立一個優惠，再產生一次性代碼或自訂代碼。對方可以透過連結、在 App Store 裡，或直接在你的 App 內兌換。

我的 App 都是免費下載、靠訂閱賺錢，所以 App 促銷碼對我沒有任何用處。因此在 TradaZen 的程式碼裡，推薦獎勵是用優惠代碼發放的，而且由 App 自己開啟兌換流程。以下依序說明：改了什麼、Apple 的優惠總表、如何建立代碼、如何兌換，以及 3.1.1 條款禁止的做法。

## 促銷碼與優惠代碼：2026 年改了什麼

Apple 在 2025 年 10 月 29 日的[開發者新聞](https://developer.apple.com/news/?id=gf6mgrs6)中宣布：優惠代碼現在涵蓋所有 App 內購買。除了自動續訂型訂閱，消耗型、非消耗型與非續訂型訂閱也都納入。因此從 2026 年 3 月 26 日起，你無法再為 App 內購買建立促銷碼。之前建立的仍可使用，直到過期為止。

App 促銷碼則依然存在。根據 [App Store Connect 說明](https://developer.apple.com/help/app-store-connect/offer-promo-codes/request-and-manage-promo-codes/)，它可以免費送出一份付費 App。每個代碼只能用一次，有效期四週。每個版本、每個平台最多可申請 100 個，從 App 側邊欄的 Promo Codes 申請。使用代碼的人不能為 App 評分或撰寫評論。

**對於免費下載、販售訂閱的 App 來說，App 促銷碼什麼也送不了**：你要送的是訂閱，所以要用優惠代碼。

## Apple 的各種優惠：給誰、怎麼取得

以下是 Apple 圍繞訂閱的各種優惠，再加上 App 促銷碼，這張表是我做選擇時隨手參考的：

| 優惠類型       | 給誰               | 如何取得               |
| -------------- | ------------------ | ---------------------- |
| 首次優惠       | 該群組的新訂閱者   | 購買時自動套用         |
| 一次性優惠代碼 | 特定某個人         | 連結、App Store 或 App |
| 自訂代碼       | 一檔活動、一群受眾 | 連結或在 App 內輸入    |
| 促銷優惠       | 現有或過去的訂閱者 | 由你的 App 提供        |
| 挽回優惠       | 過去的訂閱者       | 設定、App Store、App   |
| App 促銷碼     | 僅限付費 App       | 在 App Store 輸入      |

**優惠代碼是讓你在 App 之外自己發送的**：透過 email、你的網站、活動現場，或交給內容創作者。其他優惠主要是自動顯示，或依你設定的規則在 App 內顯示。首次優惠（也就是免費試用）有專門的指南：[首次優惠與免費試用](https://devoria.fr/zh-hant/blog/ios-free-trial-introductory-offer-app-store-connect)。

## 為訂閱建立優惠代碼

[訂閱優惠代碼說明](https://developer.apple.com/help/app-store-connect/manage-subscriptions/set-up-subscription-offer-codes/)中的流程分兩步：先建優惠，再產生代碼。以下介面名稱都沿用 Apple 說明文件中的英文標籤。

**1. 優惠。** 在 Subscriptions 中打開群組，再打開訂閱。在 Subscription Prices 點加號按鈕，再點 Create Offer Codes。接著：

- 填一個參考名稱，之後會出現在你的銷售報告裡；
- 選擇優惠結束後訂閱是否續訂；若不續訂，只能設定免費優惠；
- 勾選符合資格的對象：新訂閱者、現有訂閱者、該群組過去的訂閱者；
- 如果訂閱有首次優惠，選擇對方先享首次優惠再享代碼優惠，還是只享代碼優惠；
- 選擇國家，再選免費、預先付款或按期付款，並設定期間與價格。

優惠建立後就不能再修改。要變更資格，就得建立新的優惠。

**2. 代碼。** 有兩種，從優惠頁面產生：

- **一次性代碼**：一人一碼，每批建立 500 到 25,000 個。最遲在建立後六個月過期。你會下載一個包含代碼與連結的檔案。
- **自訂代碼**：由你選定的一個字詞，最多 64 個字元、不含特殊字元，例如 BACKTOSCHOOL（虛構範例）。你可以設定最多幾個人能使用，每批最多 25,000 人，並可選擇設定結束日期。

共同限制：每個 App 每季最多一百萬個代碼，每個訂閱最多十個有效優惠，每人每個優惠只能用一個代碼。代碼最長可能需要一小時才能生效。最重要的是，**你的 App 必須已上架販售，代碼才能兌換**：在上架前無法送出訂閱。

測試方面，Apple 提供 sandbox 代碼，每批 10 到 10,000 個，可在 iOS 16.3 以上的 sandbox 帳號設定中兌換。

## 單次購買或點數的優惠代碼

[App 內購買優惠代碼](https://developer.apple.com/help/app-store-connect/manage-in-app-purchases/create-offer-codes-for-in-app-purchases/)頁面的邏輯相同。在 In-App Purchases 中打開該項購買，再到 Offer Codes 區塊點 Create Offer。資格依照使用者在你 App 中的購買紀錄判斷：從未購買、最近 30 天內購買過，或超過 30 天前購買過。優惠可以是免費或付費。

要產生代碼，App 必須已上架販售，且該項購買已通過審核。一個 App 同時最多有十個有效優惠。在 App 內兌換需要 iOS 16.3 以上。

## 使用者如何兌換代碼

[StoreKit 文件](https://developer.apple.com/documentation/storekit/supporting-offer-codes-in-your-app)列出三種途徑：

1. **兌換連結。** App Store Connect 會在優惠頁面提供範例連結，你再把代碼加上去。如果對方尚未安裝 App，會先被引導下載。
2. **App Store。** 一次性代碼可在帳號的 Redeem Gift Card or Code 頁面輸入。自訂代碼則要透過連結或你的 App。
3. **你的 App。** 在 Swift 中，SwiftUI 用 `offerCodeRedemption`，UIKit 用 `presentOfferCodeRedeemSheet`。在 Expo App 中搭配 RevenueCat，則是 `presentCodeRedemptionSheet`。

[RevenueCat 文件](https://www.revenuecat.com/docs/subscription-guidance/subscription-offers/ios-subscription-offers)提供了連結格式：`https://apps.apple.com/redeem?ctx=offercodes&id={apple_app_id}&code={code}`。文件也提醒，Apple 的兌換面板自推出以來一直很不穩定，並建議以連結作為備案。原理如下，以 TypeScript 示範：

```ts
import { Linking } from "react-native";
import Purchases from "react-native-purchases";

const PAGE_ECHANGE = "https://apps.apple.com/redeem";

export async function echangerUnCode(): Promise<void> {
  try {
    await Purchases.presentCodeRedemptionSheet();
  } catch {
    await Linking.openURL(PAGE_ECHANGE); // 面板失敗時的備案
  }
}
```

這個面板不會回傳任何結果。權限會像購買後一樣送達，透過你 App 裡原本就有的 `addCustomerInfoUpdateListener` 監聽器。要讓 RevenueCat 正確計算這些代碼帶來的營收，需要提供你的 In-App Purchase 金鑰。

這就是 TradaZen 程式碼裡準備好的架構。使用推薦獎勵時，App 會開啟已填好代碼的連結：這比面板可靠，因為面板得手動重新輸入代碼。要輸入收到的代碼時，App 會開啟原生面板，並以 App Store 兌換頁面作為備案。**對方不知道該在哪裡輸入的代碼，等於沒用**：App Store 帳號頁面藏得很深，也沒有任何提示。在 App 裡放一個「我有代碼」按鈕就能解決。

## 促銷優惠與挽回優惠，簡要說明

這兩種優惠不是透過你發送的代碼，但目的相同：留住或找回訂閱者。

**促銷優惠**針對現有或過去的訂閱者。由你在 App 中決定何時顯示，例如對即將取消訂閱的人。根據[促銷優惠說明](https://developer.apple.com/help/app-store-connect/manage-subscriptions/set-up-promotional-offers-for-auto-renewable-subscriptions/)，每個訂閱可以有十個有效優惠。它們適用於該訂閱的所有國家，即使對方已享受過首次優惠也有資格使用。簽署優惠需要 In-App Purchase 金鑰。

**挽回優惠**（win-back）針對過去的訂閱者。[挽回優惠說明](https://developer.apple.com/help/app-store-connect/manage-subscriptions/set-up-win-back-offers/)詳列了條件：最短付費訂閱期間、結束後經過的時間、兩次優惠之間的等待期。Apple 會自動在訂閱管理頁面顯示，在 iOS 18 以上也會顯示在你的 App 中。Apple 也會產生一個分享連結，只能寄給符合資格的人。若要讓它出現在 App Store 上，需要用一張通過審核的訂閱圖片來推廣，圖片不能沿用你的圖示或截圖。我在[訂閱推廣圖片](https://devoria.fr/zh-hant/blog/guideline-2-3-2-subscription-promotional-image-rejected)指南中有詳細說明。

## 3.1.1 條款禁止的做法

[Guideline 3.1.1](https://developer.apple.com/app-store/review/guidelines/#3.1.1) 規定解鎖功能或內容必須使用 App 內購買。它禁止自製機制，例如授權金鑰或 QR code。**你自己發明的代碼，在 App 的欄位中輸入就能解鎖進階版，會讓你面臨 3.1.1 退件**，即使是免費贈送也一樣。Apple 的優惠代碼則是走 App 內購買。完整規則請看我的 [guideline 3.1.1](https://devoria.fr/zh-hant/blog/guideline-3-1-1-in-app-purchase-required) 指南。

另外，關於推薦機制：[guideline 5.1.2](https://developer.apple.com/app-store/review/guidelines/#5.1.2) 禁止要求開啟通知、定位或追蹤才能獲得獎勵，代碼也包括在內。所以獎勵不能取決於這些權限。詳情請看 [guideline 5.1.2](https://devoria.fr/zh-hant/blog/guideline-5-1-2-third-party-ai-att-data-sharing) 指南。

## 送出訂閱，別用錯工具

上架前想讓人免費試用 App，就用 [TestFlight](https://devoria.fr/zh-hant/blog/testflight-test-iphone-app-before-review)：裡面的購買走測試環境，不會扣款。上架後，就用優惠代碼。訂閱本身的設定請看 [用 RevenueCat 做 iOS 訂閱](https://devoria.fr/zh-hant/blog/revenuecat-ios-in-app-subscription-setup)。

[iOS & Android Kit](https://devoria.fr/zh-hant/kits/ios) 以我 App 的起始程式碼為基礎：onboarding、付費牆和訂閱都已寫好，第三步「接上金流」會引導你完成設定。完整流程在 [iOS App 內訂閱](https://devoria.fr/zh-hant/expertise/ios-in-app-subscription)頁面。如果你正在準備第一次上架，[來做免費診斷](https://devoria.fr/zh-hant/diagnostic)：它會幫你把步驟排好順序，並寄給你我的 Apple 防退件檢查清單。

## 常見問題

### 如何在 App Store Connect 產生促銷碼？

付費 App 的話，打開 App 側邊欄的 Promo Codes：每個版本最多 100 個代碼，有效期四週。訂閱或 App 內購買的話，在產品上用 Create Offer Codes 或 Create Offer 建立優惠，再產生一次性代碼或自訂代碼。

### 促銷碼和優惠代碼有什麼不同？

促銷碼送出的是付費 App 的下載。優惠代碼送出的是訂閱或 App 內購買，可以免費或打折，期間由你決定。自 2026 年 3 月 26 日起，App 內購買只能建立優惠代碼。

### 可以建立多少個優惠代碼？

每個 App 每季最多一百萬個，所有產品合計。一次性代碼每批建立 500 到 25,000 個，自訂代碼每批最多可使用 25,000 次。一個訂閱同時最多有十個有效優惠。

### App 上架前可以使用優惠代碼嗎？

不行：App 必須已上架販售，代碼才能兌換。上架前請用 TestFlight 給測試者使用，並用 sandbox 代碼在 App 內測試兌換流程。

### 現有訂閱者可以使用優惠代碼嗎？

可以，前提是你在優惠資格中勾選了現有訂閱者。[Apple 的訂閱頁面](https://developer.apple.com/app-store/subscriptions/)說明，他只能兌換與目前訂閱同等級或更高等級的代碼。

### 使用者要在哪裡輸入優惠代碼？

可以透過兌換連結；一次性代碼也可以在 App Store 帳號的 Redeem Gift Card or Code 頁面輸入；如果你在 App 裡放了兌換面板，也可以在 App 內輸入。自訂代碼則要透過連結或 App。


## 你的專案

[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 步驟路線，以及最適合你的套件。
