據我所看到的,MKStoreKit檢索你的產品的清單是plist中的MKStoreManager.m
下面的方法:
#pragma mark Internal MKStoreKit functions
//line 201 of MKStoreManager.m
- (NSDictionary*) storeKitItems
{
return [NSDictionary dictionaryWithContentsOfFile:
[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"MKStoreKitConfigs.plist"]];
}
所以,如果你只需要改變這種方法調用,例如,獲得來自服務器的新項目,您可以實現您需要的結果。
例如,你可能有一些預填充的.plist,然後移動它NUSUserDefaults,就像一個NSDictionary,並且,當來自服務器的新項目來了,你只需更新它。
所以,你的方法會是這個樣子:
- (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"];
}
感謝尼基塔,這基本上就是我所做的。你是對的,MKStoreKit獲取它自己的內部plist,所以我只是用我自己的一個查詢服務器的方法攔截這個方法(或者在服務器不可用的情況下返回一個緩存的內部列表)。 – Murdock 2012-07-14 01:17:53