Реализация динамического списка продуктов сервера с MKStoreKit? - PullRequest
5 голосов
/ 10 февраля 2012

Я внедряю MKStoreKit в своем приложении, но природа приложения такова, что оно должно поддерживать частые, динамические изменения в списке доступных (не расходуемых) продуктов для покупки в приложении. Таким образом, мне нужно иметь возможность регулярно запрашивать у нашего сервера текущий список доступных идентификаторов продуктов, описаний и т. Д.

Насколько я могу судить, MKStoreKit поддерживает только статический список доступных продуктов, что означает, что нам придется выпускать обновление приложения каждый раз, когда нам нужно изменить наш список продуктов IAP. Как я уже говорил, это невозможно с этим сервисом.

Кто-нибудь знает, как обновить наш список продуктов IAP, загрузив его с сервера, не требуя обновления приложения, используя MKStoreKit.

Если нет, я должен представить, что есть люди, которые изменили код для поддержки этого. Если это так, то любые советы и мудрость были бы НАМНОГО оценены.

Заранее спасибо.

1 Ответ

4 голосов
/ 11 апреля 2012

Насколько я вижу, MKStoreKit извлекает список ваших продуктов в виде списка в следующем методе 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"];
    }
...