アプリ用にアプリ内購入を実装しています。そのため、com.companyname.product.feature の製品 ID 形式を使用しています。製品 ID は、アプリ内購入 (サンドボックスで正常に機能しています) に使用され、製品が購入されたことを知るためのユーザーのデフォルトとして使用されます。ユーザーが製品を購入すると、com.companyname.product.feature ユーザーのデフォルトが true に設定されます。以下を除いて、すべてが機能しています。
私のView Controllerの1つは、ユーザーのデフォルトの変更をリッスンしているため、製品の購入に基づいて動作を変更できます。ただし、ユーザーのデフォルトの変更がコントローラに通知されることはありません。過去にこの種の観測を何度も実装しましたが、うまくいきません。「。」と何か関係があるのでしょうか。キーパスで(これまでに行ったことがない)?
私のアプリデリゲートで:
NSString *const PHKeyIAPFeature = @"com.companyname.appname.feature"; // also the product ID for the features
私のオブザーバーでは:
[[NSUserDefaults standardUserDefaults] addObserver:self forKeyPath:PHKeyIAPFeature options:NSKeyValueObservingOptionNew context:NULL];
私の IAP マネージャーでは:
[[NSUserDefaults standardUserDefaults] setBool:TRUE forKey:productIdentifier];
ここで、productIdentifier = PHKeyIAPFeature です。
アプリを再起動すると、更新されたユーザー デフォルトが反映されるため、製品の購入時にユーザー デフォルトが更新されることはわかっています。
何か案は?助けてくれたTIA。
--ジョン