2012-02-10 27 views
5

Tôi đang triển khai MKStoreKit trong ứng dụng của mình, nhưng bản chất của ứng dụng là cần thiết để hỗ trợ thay đổi thường xuyên, năng động cho danh sách các sản phẩm có sẵn (không tiêu hao) trong mua ứng dụng. Do đó, tôi cần phải thường xuyên có thể truy vấn máy chủ của chúng tôi để biết danh sách ID, mô tả sản phẩm hiện có, v.v.Triển khai danh sách sản phẩm máy chủ động với MKStoreKit?

Theo tôi có thể thấy, MKStoreKit chỉ hỗ trợ danh sách sản phẩm có sẵn tĩnh, có nghĩa là chúng tôi phải phát hành bản cập nhật ứng dụng mỗi lần chúng tôi cần thay đổi danh sách sản phẩm IAP của mình. Như tôi đã đề cập, điều này là không thể với dịch vụ này.

Có ai biết cách cập nhật danh sách sản phẩm IAP của chúng tôi không bằng cách tải xuống từ máy chủ mà không yêu cầu cập nhật ứng dụng bằng MKStoreKit.

Nếu không, tôi phải hình dung có những người ở đó đã sửa đổi mã để hỗ trợ điều này. Nếu vậy, bất kỳ lời khuyên và sự khôn ngoan đạt được sẽ được MUCH đánh giá cao.

Xin cảm ơn trước.

Trả lời

4

Như xa như tôi có thể thấy, MKStoreKit lấy danh sách các sản phẩm của bạn như một plist trong phương pháp sau đây của MKStoreManager.m:

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

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

Vì vậy, nếu bạn chỉ cần thay đổi cuộc gọi phương pháp này, ví dụ, để có được mục mới từ máy chủ của bạn, bạn có thể đạt được kết quả bạn cần.

Ví dụ: bạn có thể có một số .plist đã được chuẩn bị trước rồi di chuyển nó NUSUserDefaults, giống như một NSDictionary và, khi các mục mới từ Máy chủ đến, bạn chỉ cần cập nhật nó.

Vì vậy, phương pháp của bạn sẽ trông như thế này:

- (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

Cảm ơn Nikita, đây là cơ bản những gì tôi đã làm. Bạn đúng, MKStoreKit lấy plist nội bộ của chính nó, vì vậy tôi chỉ chặn phương thức đó với một phương thức của riêng tôi truy vấn máy chủ (hoặc trả về một danh sách trong bộ nhớ đệm trong trường hợp máy chủ không có sẵn). – Murdock

Các vấn đề liên quan