Skip to content

feat: placement に配られた offering を読み、metadata を文字列で持ち、placement を付けたまま買えるようにする - #8

Merged
taniguchi-kyoichi merged 1 commit into
mainfrom
feat/offering-placement-metadata
Oct 28, 2026
Merged

taniguchi-kyoichi merged 1 commit into
mainfrom
feat/offering-placement-metadata

Conversation

@taniguchi-kyoichi

Copy link
Copy Markdown
Contributor

何のため

入口ごとに RevenueCat の placement で offering を出し分け、offering の metadata をアプリの遠隔の切り替えに使えるようにする。placement の読み方は SubscriptionRevenueCatUI にしか無かったので、コアに下ろす。

足したもの

  • SubscriptionUseCase.loadOffering(placement:): placement に配られた offering。配られていなければ current。どちらだったかは SubscriptionOffering.servedBy(.placement(_:)・.current・.identifier)
  • SubscriptionOffering.metadata: [String: String]: 文字列の値だけ。ほかの型の鍵は droppedMetadataKeys
  • purchase(packageId:from:)・trackPaywallImpression(source:offering:): 読んだときと同じ聞き方で買い・表示を記録する。ID だけで買うと SDK の presentedOfferingContext に placement が載らないため。読んだ後に placement の割り当てが変わっていたら、見せた offering を ID で買う
  • 既定の実装: loadOffering(placement:) は loadOfferings()、新しい 2 つは ID の版へ流す(既存の準拠はそのままコンパイルできる)
  • OfferingLookup(package): コアと SubscriptionRevenueCatUI が同じ読み方をする。SubscriptionRevenueCatUI は current への代用を受け取らないので、振る舞いは変わらない

確かめたこと

  • swift build --build-tests → swift test: XCTest 76 件・Swift Testing 11 件が通る(新しく OfferingPlacementTests 11 件)
  • scripts/release.sh --dry-run: minor(3.5.0・削除 0・追加 17)

🤖 Generated with Claude Code

https://claude.ai/code/session_012t7xTyzrUGY2uYX5XtNth7

…えるようにする

- loadOffering(placement:): placement に配られた offering、無ければ current。どちらだったかを servedBy で返す
- SubscriptionOffering.metadata(文字列の値だけ)と droppedMetadataKeys(ほかの型で落とした鍵)
- purchase(packageId:from:)・trackPaywallImpression(source:offering:): 読んだときと同じ聞き方で買い・表示を記録する(placement が RevenueCat に届く)
- placement の読み方をコアの OfferingLookup に置き、SubscriptionRevenueCatUI もそれを通す(振る舞いは変えない)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012t7xTyzrUGY2uYX5XtNth7
@taniguchi-kyoichi
taniguchi-kyoichi merged commit f5ba960 into main Oct 28, 2026
1 check failed
@taniguchi-kyoichi
taniguchi-kyoichi deleted the feat/offering-placement-metadata branch October 28, 2026 10:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant