Ошибка покупки MKStoreKit

Я все еще борюсь с MKStoreKit.

Существует кнопка под названием «buyAction», которая должна запустить процесс покупки в приложении. Я попытался реализовать его, следуя советам учебника, но он все еще не работает:

- (IBAction)buyAction:(id)sender {
NSLog(@"buyFeature")
[[MKStoreManager sharedManager] buyFeature:@"PBonnet.TOEIC3.Package1"
                                onComplete:^(NSString* purchasedFeature, NSData*purchasedReceipt, NSArray* availableDownloads)
 { package1bought=1;
     NSLog(@"success");

 }
                               onCancelled:^
 { NSLog(@"failed purchase");

 }]; 

}

В строке onComplete у меня есть 2 сообщения об ошибках: «Имя параметра опущено» и «Ожидаемое выражение».

Спасибо за вашу помощь.

Ваше здоровье

РЕДАКТИРОВАНИЕ строки onComplete, как предположил Мэтт. Теперь журнал показывает «buyFeature», но ничего после этого. Магазин приложений не запускается. Журнал показывает это сообщение об ошибке:

NSUbiquitousKeyValueStore error: PBonnet.TOEIC3 has no valid com.apple.developer.ubiquity-kvstore-identifier entitlement.


person GoldXApp    schedule 06.02.2014    source источник


Ответы (1)


Посмотрите на заголовок для MKStoreManager. Вот объявление для buyFeature:onComplete:onCancelled:

- (void) buyFeature:(NSString*) featureId
         onComplete:(void (^)(NSString* purchasedFeature, NSData*purchasedReceipt, NSArray* availableDownloads)) completionBlock
        onCancelled:(void (^)(void)) cancelBlock;

Итак, для начала мы видим, что для onComplete: требуется блок, который принимает три параметра. Но вы предоставляете блок без параметров. Таким образом, компилятор справедливо жалуется, что вы забыли параметры блока.

По сути, проблема не имеет никакого отношения к MKStoreKit. Проблема в том, что вы не знаете C — в частности, вы не знаете синтаксис блоков. Я бы посоветовал прочитать объяснение Apple по этой теме.

person matt    schedule 06.02.2014
comment
Я не знаю; Я ничего не знаю о MKStoreKit. Но вы не включили какие-либо параметры, поэтому в любом случае (независимо от того, требуется один или три параметра) он не будет компилироваться. - person matt; 07.02.2014
comment
Кстати, они не должны использовать префикс MK для своих имен. Этот префикс (и все другие двухсимвольные префиксы с заглавными буквами) принадлежит Apple. - person matt; 07.02.2014