使用者偏好觀看或聆聽他們已可存取的內容,例如現有訂閱內容。如果 Google 知道使用者可在您的應用程式或平台上存取哪些內容,就能在 Google 服務中提供更切合需求的體驗,並將使用者導向該內容。

確認內容存取權要求
你必須為目錄中的每個內容套件指明存取需求。執行這項作業時,請思考下列問題:
- 使用者是否需要登入應用程式或平台才能存取內容?
使用者是否需要訂閱方案?
僅限觀看動作:
- 使用者是否需要向外部服務供應商訂閱方案?
- 你是否提供分級、多套件或加購訂閱方案?
僅限觀看動作:使用者是否需要租借或購買內容?
存取條件會隨時間改變嗎?
存取權需求是否取決於裝置位置?
存取限制類型
存取限制分為兩種類型:
付費牆類型
你可以依付費牆類型限制內容存取權。下表詳細說明各種付費牆類型:
| 付費牆類型 | 範例 | 類別 |
|---|---|---|
| 無須購買或登入。 | Crackle | nologinrequired |
| 使用者必須登入,但不需要付費訂閱。 | Vudu (AVOD) | free |
| 使用者必須訂閱相關服務。存取權與訂閱方案無關。 | Netflix |
|
| 使用者必須訂閱相關服務。存取權取決於訂閱方案。 | Hulu (加購項目) |
|
| 使用者可在購買後一段時間內存取這本書。 | Vudu | rental |
| 購買後可無限期觀看內容。 | Vudu | purchase |
| 你必須訂閱有線電視才能觀看內容。 | HBO GO | externalSubscription |
觀看動作的付費牆類型
如要為觀看動作指定內容付費牆類型,請使用「動作存取規格」中的 category 屬性:
"potentialAction": {
"@type":"WatchAction",
"target": { … },
"actionAccessibilityRequirement": {
"@type": "ActionAccessSpecification",
"category": "subscription",
"availabilityStarts": "2018-06-01T10:35:29Z",
"availabilityEnds": "2019-05-31T10:35:29Z",
"eligibleRegion": {
"@type": "Country",
"name": "US"
}
},
...
}
「聽取動作」的付費牆類型
如要指定「聆聽動作」的內容付費牆類型,請在優惠物件中使用
category
屬性:
"potentialAction": {
"@type":"ListenAction",
"target": { … },
"expectsAcceptanceOf":{
"@type":"Offer",
"category":"subscription",
"availabilityStarts": "2018-06-01T10:35:29Z",
"availabilityEnds": "2019-05-31T10:35:29Z",
"eligibleRegion": {
"@type":"Country",
"name":"US"
}
},
...
}
地理區域
你必須指定內容可播映的地理區域。請使用下列其中一項或兩項屬性:
如果裝置所在區域位於 eligibleRegion 中指定的任何區域,且不在 ineligibleRegion 中指定的任何區域,使用者就能存取內容。
eligibleRegion 和 ineligibleRegion 屬性允許下列值:
Country、City和State的清單。- A
GeoShape物件。如需詳細規定,請參閱「GeoShape屬性」一節。 GeoShape物件清單。
如果內容在全球推出,請為 eligibleRegion 使用下列特殊值:
"eligibleRegion": "EARTH",
eligibleRegion 用途
以下是 eligibleRegion 屬性的用途範例:
- 範例 1:
eligibleRegion包含國家/地區清單。 - 範例 2:
eligibleRegion,其中包含郵遞區號清單的GeoShape物件。 - 範例 3:
eligibleRegion包含轉發站區域 (FSA) 代碼清單的GeoShape物件。 - 範例 4:
eligibleRegion,其中包含GeoShape物件,且該物件含有指定行銷區域 ID。 - 範例 5:含有
GeoShape物件清單的eligibleRegion。 每個檔案都包含 DMA ID。 - 範例 6:
ineligibleRegion,郵遞區號已遮蓋。
範例 1
eligibleRegion 國家/地區清單:
"actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "requiresSubscription": { "@type": "MediaSubscription", "@id": "http://www.example.com/north_america_network/subscription", "name": "Example Subscription", "commonTier": true }, "eligibleRegion": [ { "@type": "Country", "name": "US" }, { "@type": "Country", "name": "CA" } ] }
範例 2
eligibleRegion,其中包含 ZIP 碼清單的 GeoShape 物件:
"actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "requiresSubscription": { "@type": "MediaSubscription", "@id": "http://www.example.com/local_tv_network/subscription", "name": "Example Subscription", "commonTier": true }, "eligibleRegion": { "@type": "GeoShape", "@id": "http://example.com/area1", "addressCountry": "US", "postalCode": [ "94118", "94119" ] } }
範例 3
eligibleRegion,其中包含 GeoShape 物件,內含轉發站區域 (FSA) 代碼清單:
"actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "requiresSubscription": { "@type": "MediaSubscription", "@id": "http://www.example.com/local_tv_network/subscription", "name": "Example Subscription", "commonTier": true }, "additionalProperty": { "@type": "PropertyValue", "name": "DisplaySubscriptionIdentifier", "value": "http://www.example.com/local_tv_network/subscription" }, "eligibleRegion":{ "@type": "GeoShape", "@id": "http://example.com/area2", "addressCountry": "CA", "postalCode": [ "1A1", "K1A" ] } }
範例 4
eligibleRegion,其中包含 DMA ID 的 GeoShape 物件:
"actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "requiresSubscription": { "@type": "MediaSubscription", "@id": "http://www.example.com/abcd/subscription", "name": "Example Subscription", "commonTier": true }, "additionalProperty": { "@type": "PropertyValue", "name": "DisplaySubscriptionIdentifier", "value": "http://www.example.com/abcd/subscription" }, "eligibleRegion":{ "@type": "GeoShape", "@id": "http://example.com/area3", "addressCountry": "US", "identifier": [ { "@type": "PropertyValue", "propertyID": "DMA_ID", "value": "501" } ] } }
範例 5
eligibleRegion,其中包含 GeoShape 物件清單。
每個項目都包含 DMA ID:
"actionAccessibilityRequirement" : { "@type" : "ActionAccessSpecification", "eligibleRegion" : [ { "@id" : "http://example.com/dma/601", "@type" : "GeoShape", "addressCountry" : "US", "identifier" : { "@type" : "PropertyValue", "propertyID" : "DMA_ID", "value" : "601" } }, { "@id" : "http://example.com/dma/602", "@type" : "GeoShape", "addressCountry" : "US", "identifier" : { "@type" : "PropertyValue", "propertyID" : "DMA_ID", "value" : "602" } } ] }
範例 6
ineligibleRegion,並遮蓋郵遞區號:
"actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "requiresSubscription": { "@type": "MediaSubscription", "@id": "http://www.example.com/local_tv_network/subscription", "name": "Example Subscription", "commonTier": true }, "additionalProperty": { "@type": "PropertyValue", "name": "DisplaySubscriptionIdentifier", "value": "http://www.example.com/local_tv_network/subscription" }, "eligibleRegion": { "@type": "Country", "name": "US" }, "ineligibleRegion": { "@type": "GeoShape", "@id": "http://example.com/area1", "addressCountry": "US", "postalCode": [ "94118", "94119" ] } }
授權 ID
授權 ID (entitlementId) 是指代表媒體目錄中一組內容存取權的字串。為判斷使用者是否能存取你的內容,Google 會採取下列步驟:
- 我們會對授權端點發出 API 呼叫,以接收使用者的授權 ID。
- 我們會從你的 Media Actions 動態消息中,查閱內容的必要授權 ID。
- 我們會將使用者的
entitlementId比對至動態饋給中媒體訂閱物件的identifier屬性。如果至少有一個entitlementId相符,我們就會判定使用者可以存取內容。
Google 建議您使用下列 entitlementId 語法:
<domain name> + colon (:) + <access level to content>
語法範例:
example.com:basicexample.com:premiumexample.com:sports
授權 ID 範例
MediaExampleCompany 的動態消息指定 Movie XYZ 需要 example.com:basic entitlementId,如下所示:
{ "@context": ["http://schema.org", {"@language": "en"}], "@type": "Movie", "@id": "www.example.com/movie_xyz", "url": "www.example.com/movie_xyz", "name": "Movie XYZ", "potentialAction": { "@type": "WatchAction", "target": [ … ], "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "requiresSubscription": { "@type": "MediaSubscription", "@id": "http://www.example.com/basic_subscription", "name": "Basic subscription", "commonTier": true ... }, "additionalProperty": { "@type": "PropertyValue", "name": "DisplaySubscriptionIdentifier", "value": "http://www.example.com/basic_subscription" }, ... } }, ... }
常見的存取權用途
以下是常見的存取權用途:
- 免費 (無須登入):無須登入、訂閱或購買即可觀看內容。
- 免費 (須登入):使用者必須登入才能存取內容,但無須訂閱。
- 單一等級訂閱: 內容需要訂閱才能觀看。無論訂閱方案為何,所有訂閱者都能存取相同內容,包括電影或集數。
- 多層級訂閱:內容需要訂閱才能觀看。訂閱者可根據訂閱方案存取不同內容,包括電影或劇集。例如「銀級」與「金級」。
- 加購訂閱:必須訂閱才能觀看。訂閱者可以在一般訂閱方案的基礎上加購優質內容。
- 單次購買:使用者購買內容後,即可無限期存取。
- 電視直播:訂閱方案包含地方、全國和付費頻道。
- 第三方訂閱: 使用者必須登入有線電視供應商帳戶,才能觀看內容。
免費 (不需登入)
不需登入
無須登入或訂閱即可觀看內容。
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "nologinrequired", "availabilityStarts": "2015-01-01T00:00Z", "availabilityEnds": "2015-12-31T00:00Z", "eligibleRegion": { "@type": "Country", "name": "US" } } }
- 將
category設為nologinrequired。 - 請勿加入
expectAcceptanceOf。
免費 (必須登入)
需要登入
內容要求使用者登入,但不需要訂閱。
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "free", "availabilityStarts": "2015-01-01T00:00Z", "availabilityEnds": "2015-12-31T00:00Z", "eligibleRegion": { "@type": "Country", "name": "US" } } }
- 將
category設為free。 - 請勿加入
expectAcceptanceOf。
單一方案訂閱
在單一級別的訂閱模式中,服務供應商只有一個訂閱級別。無論訂閱方案為何,所有訂閱者都能存取相同內容,包括電影或集數。
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "availabilityStarts": "2015-01-01T00:00Z", "availabilityEnds": "2015-12-31T00:00Z", "requiresSubscription": { "@type": "MediaSubscription", "name": "Example Package", "commonTier": true, "@id": "http://www.example.com/example_package" }, "additionalProperty": { "@type": "PropertyValue", "name": "DisplaySubscriptionIdentifier", "value": "http://www.example.com/example_package" }, "eligibleRegion": { "@type": "Country", "name": "US" } } }
多層級訂閱
在分層訂閱模式中,服務供應商會提供多個訂閱層級,例如金級、銀級和銅級。訂閱較高層級方案的使用者可以存取所有較低層級的內容。不過,如果使用者訂閱的是較低層級的方案,就無法存取較高層級的內容。

請參考下列情境:
- 小珍訂閱了「黃金」方案。您的授權端點會傳回下列
entitlementIdID:example.com:bronzeexample.com:silverexample.com:gold
- 小明訂閱了「銅牌」方案。授權端點會傳回下列
entitlementId:example.com:bronze
- 媒體動作動態饋給說明下列規定:
- 電影 A 需要
example.com:bronze。 - 電影 B 需要
example.com:silver。
- 電影 A 需要
在本例中,Google 會為 Jane 和 John 決定下列存取層級:
- Jane 和 John 都能存取「電影 A」。
- Jane 可以觀看電影 B,但 John 無法。
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "requiresSubscription": { "@type": "MediaSubscription", "@id": "http://www.example.com/basic_subscription", "name": "Bronze", "commonTier": true ... }, "additionalProperty": { "@type": "PropertyValue", "name": "DisplaySubscriptionIdentifier", "value": "http://www.example.com/basic_subscription" }, ... } }
加購訂閱
在加購方案訂閱模式中,服務供應商允許使用者擴充權益,並在基本訂閱方案中新增頻道。使用者可以視需要新增任意數量的頻道。

請參考下列情境:
- 除了 Basic 訂閱方案,小珍還訂閱了 PRO 和 Sportz。授權端點會傳回下列
entitlementIdID:example.com:basicexample.com:proexample.com:sportz
- John 只有 Basic 訂閱方案,授權端點會傳回下列
entitlementId:example.com:basic
- 媒體動作動態饋給須符合下列規定:
- 電影 A 需要
example.com:basic。 - 電影 B 需要
example.com:pro。
- 電影 A 需要
在本例中,Google 會為 Jane 和 John 決定下列存取層級:
- Jane 和 John 都能存取「電影 A」。
- Jane 可以觀看電影 B,但 John 無法。
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "availabilityStarts": "2015-01-01T00:00Z", "availabilityEnds": "2015-12-31T00:00Z", "eligibleRegion": { "@type": "Country", "name": "US" } "requiresSubscription": [ { "@type": "MediaSubscription", "@id": "https://www.example.com/package/basic", "name": "Basic", "sameAs": "https://www.example.com/package/basic", "commonTier": true }, { "@type": "MediaSubscription", "@id": "https://www.example.com/packages/basic/pro", "name": "PRO", "sameAs": "https://www.example.com/package/pro", "identifier": "example.com:pro", "commonTier": false }, { "@type": "MediaSubscription", "@id": "https://www.example.com/package/sportz", "name": "Sportz", "sameAs": "https://www.example.com/package/sports", "identifier": "example.com:sportz", "commonTier": false } ], "additionalProperty": { "@type": "PropertyValue", "name": "DisplaySubscriptionIdentifier", "value": "http://www.example.com/package/basic" }, } } }
單次購買
購買
購買後可無限期觀看內容。
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "purchase", "availabilityStarts": "2015-01-01T00:00Z", "availabilityEnds": "2015-12-31T00:00Z", "eligibleRegion": { "@type": "Country", "name": "US" }, "expectsAcceptanceOf": { "@type": "Offer", "price": 7.99, "priceCurrency": "USD", "seller": { "@type": "Organization", "name": "Example", "sameAs": "http://www.example.com/" } } } }
- 將
category設為purchase。 - 在
expectAcceptanceOf中加入actionAccessibilityRequirement,指出購買價格。
租借
使用者可在購買後一段時間內存取這本書。
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "rental", "availabilityStarts": "2015-01-01T00:00Z", "availabilityEnds": "2015-12-31T00:00Z", "eligibleRegion": { "@type": "Country", "name": "US" }, "expectsAcceptanceOf": { "@type": "Offer", "price": 7.99, "priceCurrency": "USD", "seller": { "@type": "Organization", "name": "Example", "sameAs": "http://www.example.com/" } } } }
- 將
category設為rental。 - 在
expectAcceptanceOf中加入actionAccessibilityRequirement,指出租借價格。
電視直播
第三方訂閱
第三方訂閱方案
其他服務的訂閱者可以觀看該內容。
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "externalsubscription" "availabilityStarts": "2015-01-01T00:00Z", "availabilityEnds": "2015-12-31T00:00Z", "requiresSubscription":{ "@type": "MediaSubscription", "@id": "https://www.example.com/faq", "name": "Example", "sameAs": "https://www.example.com/faq", "authenticator": { "@type": "Organization", "name": "TVE" } }, "additionalProperty": { "@type": "PropertyValue", "name": "DisplaySubscriptionIdentifier", "value": "http://www.example.com/faq" }, "eligibleRegion": { "@type": "Country", "name": "US" } } }
- 新增
authenticator,表示訂閱者是由其他服務驗證。舉例來說,HBO GO 必須向有線電視供應商訂閱才能觀看。
常見層級套裝方案
無論訂閱方案為何,所有訂閱者都能觀看一般層級內容。所有含有 category
的 subscription 內容都適用一般等級。如要進一步瞭解 category 屬性,請參閱「付費牆類型」一節。
為什麼需要一般層級套件?
多個 Google 服務會向使用者推薦電視節目和電影。為讓使用者瞭解費用,Google 必須透過通用層級,掌握所有訂閱者可存取的內容。Google 也必須瞭解訂閱者可透過特定訂閱方案存取哪些內容。
除非你支援授權 API,否則 Google 建議提供一般層級的影視內容。Google 可透過 API 瞭解特定使用者可存取哪些非一般層級的內容。
何時該建立通用層級套裝組合?
如果服務提供的內容可供所有訂閱者觀看,就必須使用一般層級套裝組合。包括只提供單一套裝組合的服務,以及提供多個套裝組合或加購內容的服務。
如果供應商沒有提供所有訂閱者都能觀看的內容,就不必建立一般層級的套裝組合。舉例來說,服務供應商可能會在所有套裝組合中提供互斥內容。
常見層級範例
以下是常見層級的範例。
分級訂閱
在分層訂閱模式中,服務供應商會提供多個訂閱層級,例如金級、銀級和銅級。訂閱較高方案的使用者可以存取較低方案的所有內容。訂閱較低方案的使用者無法存取較高方案的內容。下圖為套件結構範例。
在下列程式碼範例中,銅級套裝方案是通用層級,因為所有使用者都能存取該層級的所有內容。
"requiresSubscription": [ { "@type": "MediaSubscription", "@id": "https://www.example.com/package/bronze", "name": "Bronze", "sameAs": "https://www.example.com/package/bronze", "commonTier": true }, { "@type": "MediaSubscription", "@id": "https://www.example.com/package/silver", "name": "Silver", "sameAs": "https://www.example.com/package/silver", "identifier": "example.com:silver", "commonTier": false }, { "@type": "MediaSubscription", "@id": "https://www.example.com/package/gold", "name": "Gold", "sameAs": "https://www.example.com/package/gold", "identifier": "example.com:gold", "commonTier": false } ],
外掛程式
在加購內容訂閱模式中,服務供應商允許使用者擴充權利,並在基本訂閱方案中新增頻道。使用者可以視需要新增任意數量的頻道。下圖為套件結構範例。

如果頻道開放所有使用者觀看,且無須付費,即可將頻道與一般層級套裝組合併。
在下列程式碼範例中,基本套裝組合是通用層級,因為所有使用者都能存取這個套裝組合中的所有內容。
"requiresSubscription": [ { "@type": "MediaSubscription", "@id": "https://www.example.com/package/basic", "name": "Basic", "sameAs": "https://www.example.com/package/basic", "commonTier": true }, { "@type": "MediaSubscription", "@id": "https://www.example.com/packages/basic/pro", "name": "PRO", "sameAs": "https://www.example.com/package/pro", "identifier": "example.com:pro", "commonTier": false }, { "@type": "MediaSubscription", "@id": "https://www.example.com/package/sportz", "name": "Sportz", "sameAs": "https://www.example.com/package/sports", "identifier": "example.com:sportz", "commonTier": false }, { "@type": "MediaSubscription", "@id": "https://www.example.com/package/moviemax", "name": "Moviemax", "sameAs": "https://www.example.com/package/moviemax", "identifier": "example.com:moviemax", "commonTier": false } ],
含有交集內容的套件
在套件內容有交集的內容模型中,服務供應商銷售的套件會包含其他套件的部分內容。下圖為套件結構範例。

在下列程式碼範例中,供應商提供三個套裝組合,其中部分內容會出現在所有套裝組合中。在此情況下,您需要第四個代表一般層級的套件。必須包含所有三個套件提供的所有內容。
"requiresSubscription": [ { "@type": "MediaSubscription", "@id": "https://www.example.com/package/1", "name": "Package 1", "sameAs": "https://www.example.com/package/1", "identifier": "example.com:package1", "commonTier": false }, { "@type": "MediaSubscription", "@id": "https://www.example.com/package/2", "name": "Package 2", "sameAs": "https://www.example.com/package/2", "identifier": "example.com:package2", "commonTier": false }, { "@type": "MediaSubscription", "@id": "https://www.example.com/package/3", "name": "Package 3", "sameAs": "https://www.example.com/package/3", "identifier": "example.com:package3", "commonTier": false }, { "@type": "MediaSubscription", "@id": "https://www.example.com/package/common", "name": "Common Tier Package", "sameAs": "https://www.example.com/package/common", "commonTier": true } ],
不含交集內容的套件
在所有內容套裝組合都不相交的內容模型中,服務供應商銷售的套裝組合不含其他套裝組合的內容。下圖為套件結構範例。

在下列範例中,供應商提供三種套裝組合,所有套裝組合的內容都不會重複。無須提供一般層級的套件。
"requiresSubscription": [ { "@type": "MediaSubscription", "@id": "https://www.example.com/package/1", "name": "Package 1", "sameAs": "https://www.example.com/package/1", "identifier": "example.com:package1", "commonTier": false }, { "@type": "MediaSubscription", "@id": "https://www.example.com/package/2", "name": "Package 2", "sameAs": "https://www.example.com/package/2", "identifier": "example.com:package2", "commonTier": false }, { "@type": "MediaSubscription", "@id": "https://www.example.com/package/3", "name": "Package 3", "sameAs": "https://www.example.com/package/3", "identifier": "example.com:package3", "commonTier": false } ],
授權端點
請使用本節的資訊,代管可傳回與使用者相關聯授權的 HTTPS 端點。
修課條件
開始前,請確認您的服務支援 Google 的 OAuth 2.0 流程。
要求
如要接收使用者的權利,Google 會傳送含有使用者 OAuth 權杖的要求。端點必須根據該 OAuth 權杖識別使用者。請參閱以下範例:
GET /resource HTTP/1.1
Host: server.example.com
Authorization: Bearer <OAuthToken>
回應
端點必須傳回具有下列屬性的回應:
| 屬性 | |
|---|---|
subscription |
必要 這是根回應內的欄位。 |
subscription.type |
必要 這項屬性可具有下列值:
|
subscription.expiration_date |
選用 這項權利的到期日,採用 ISO 8601 格式,包括時區。詳情請參閱「到期日」。 |
entitlements |
選用 這個根屬性包含使用者持有的 |
entitlements.entitlement |
如果串流目錄的存取權因訂閱類型而異,則為必填。 這個屬性包含 |
entitlements.expiration_date |
選用 這項訂閱方案的到期日,採用 ISO 8601 格式,包括時區。詳情請參閱「到期日」。 |
到期日
端點回應中有兩個屬性與到期日相關:subscription.expiration_date 和 entitlements.expiration_date。你可以加入其中一個或兩者都不加入,但不能同時加入兩者。使用哪一種方式取決於訂閱方案。
| 訂閱模式 | |
|---|---|
| 所有訂閱者都能存取相同的串流目錄。 | 由於不需要指定 entitlements 屬性,請指定 subscription.expiration_date。 |
使用者可存取的串流目錄會因訂閱方案而異。 |
如果訂閱方案有多個級別或加購項目,且會隨時間過期,請採取下列任一做法:
|
回覆範例
以下是不同訂閱狀態的回應範例:
- 有效訂閱內容
- 設有到期日的有效訂閱方案
- 無訂閱方案
- 多個等級或加購內容的有效訂閱方案
有效訂閱內容
有效訂閱
使用者有效訂閱 example.com。在這種情況下,無論訂閱類型為何,所有訂閱者都能存取整個串流目錄。
{ "subscription" : { "type": "ActiveSubscription", } }
設有到期日的有效訂閱方案
有效訂閱方案 (有到期日)
使用者已訂閱 example.com,且訂閱方案設有到期日。在這種情況下,無論訂閱類型為何,所有訂閱者都能存取整個串流目錄。
{ "subscription" : { "type": "ActiveSubscription", "expiration_date": "2019-11-10T10:00:00Z" } }
無訂閱方案
未訂閱
使用者未訂閱 example.com。
{ "subscription" : { "type": "InactiveSubscription" } }
多個等級或加購內容的有效訂閱方案
訂閱多個級別或加購內容
使用者訂閱 example.com:premium 的期限為特定日期。
{ "subscription" : { "type": "ActiveSubscription", } "entitlements": [ { "entitlement": "example.com:premium", "expiration": "2019-11-10T10:00:00Z" } ] }
頻率限制
Google 最多每六小時會重新整理一次使用者的權利資訊。為避免每秒查詢次數 (QPS) 達到上限,Google 會將查詢平均分配到端點。因此,您可以使用下列公式估算端點的預期平均 QPS:
預期平均 QPS = <使用者總數> / 21,600 秒 (6 小時 x 60 分鐘 x 60 秒)
如果支援大量使用者,Google 可以調整 6 小時的間隔。 如有需要,請與 Google 聯絡,討論設定事宜。
與 Google 聯絡
端點準備就緒後,請與 Google 聯絡,告知端點的網址。
動作存取權規格屬性
如需參考資訊,請參閱「動作存取權規格屬性」一節。