2012-02-10 5 views
5

私は自分のアプリでMKStoreKitを実装していますが、アプリの性質上、アプリ内購入のために利用可能な(消耗品ではない)製品のリストを頻繁に動的に変更する必要があります。したがって、私は定期的に利用可能な製品ID、説明などの現在のリストをサーバーに照会できるようにする必要があります。MKStoreKitで動的サーバー製品リストを実装していますか?

私の知る限り、MKStoreKitは利用可能な製品の静的plistをサポートしています。私たちのIAP製品リストを変更する必要があるたびに、アプリのアップデートをリリースする必要があります。私が言及したように、これはこのサービスでは不可能です。

私たちのIAP製品リストは、MKStoreKitを使用して、アプリケーションの更新を必要とせずにサーバーからダウンロードすることで更新できます。

もしそうでなければ、これをサポートするコードを変更した人がいると思います。もしそうなら、どんなヒントや知恵も高く評価されます。

ありがとうございます。

答えて

4

私の知る限り、MKStoreKitがMKStoreManager.mの次のような方法でのplistとしてあなたの製品のリストを取得します。

#pragma mark Internal MKStoreKit functions 
//line 201 of MKStoreManager.m 

- (NSDictionary*) storeKitItems 
{ 
    return [NSDictionary dictionaryWithContentsOfFile: 
      [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"MKStoreKitConfigs.plist"]]; 
} 

だから、あなただけ取得するには、例えば、このメソッドの呼び出しを変更した場合あなたのサーバからの新しいアイテムは、必要な結果を得ることができます。

たとえば、事前に作成された.plistを持っていて、NSDictionaryのようにNUSUserDefaultsを移動して、サーバーからの新しいアイテムが来たら、それを更新するだけです。

だから、あなたの方法は、このようなものになります。

- (NSDictionary*) storeKitItems 
    { 
    if(![[NSUserDefaults standardUserDefaults]valueForKey:@"NewConfigs"]) 
      [[NSUserDefaults standardUserDefaults]setValue:[NSDictionary dictionaryWithDictionary:[NSDictionary dictionaryWithContentsOfFile: 
                              [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"MKStoreKitConfigs.plist"]]] forKey:@"NewConfigs"]; 
[[NSUserDefaults standardUserDefaults]synchronize]; 

return [[NSUserDefaults standardUserDefaults]valueForKey:@"NewConfigs"]; 
    } 
+0

おかげニキータを、これは私が何をしたか、本質的です。あなたは正しいです、MKStoreKitは独自の内部plistをフェッチするので、私はちょうどサーバーに問い合わせる(またはサーバーが利用できない場合にキャッシュされた内部リストを返す)自分のメソッドでそのメソッドを傍受しました。 – Murdock