MKStoreKit 4.0 для автоматического продления подписки - PullRequest
3 голосов
/ 29 ноября 2011

Приложение таково, что весь контент может быть доступен только после того, как пользователь подписался на схему (1 месяц, 3 месяца, 6 месяцев или год). Поэтому изначально, когда приложение впервые установлено, появляется представление с вариантами покупки этих схем. Когда пользователь выбирает схему и совершает покупку, ему предоставляется доступ.

Я инициализирую делегата в приложении: didFinishLaunchingWithOptions: В первом ViewController я слушаю уведомление kProductFetchedNotification. и как только я получаю все продукты, я заполняю интерфейс. Я также проверяю, активна ли подписка

- (void)viewDidLoad {
    [super viewDidLoad];

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(productFetchSuccesful:) name:kProductFetchedNotification object:nil];
    ...

    if([[MKStoreManager sharedManager] isSubscriptionActive:kFeatureAId]){

        [self grantAccess];
    }else if([[MKStoreManager sharedManager] isSubscriptionActive:kFeatureBId]){
    ...
    ...
}


-(void)productFetchSuccesful:(NSNotification*)notification{

    NSArray *products = (NSArray*)[[MKStoreManager sharedManager] purchasableObjectsDescription];
    NSLog(@"%@",products);
    //*****populate ui
}

После заполнения интерфейса. Кнопки UI, связанные с каждой схемой подписки, связаны с IBAction

-(IBAction)purchaseSubscription:(id)sender{
    UIButton *currentBtn = (UIButton*)sender;
    switch (currrentBtn.tag) {
        case product1Tag:
            [[MKStoreManager sharedManager] buyFeature:kFeatureAId
                                            onComplete:^(NSString* purchasedFeature)
             {
                 NSLog(@"Purchased: %@", purchasedFeature);

                 [self grantAccess];
             }
                                           onCancelled:^
             {

             }];
            break;
        case product2Tag:
            ...
            ...
            ...
    }
}

Я установил значения в MKStoreKitConfigs.h, установил OWN_SERVER и поделился секретом

#define kConsumableBaseFeatureId @"com.mycompany.myapp."
#define kFeatureAId @"1month"
#define kFeatureBId @"7days"
#define kConsumableFeatureBId @"com.mycompany.myapp.005"
#define FishBasket @"FishBasket"

#define SERVER_PRODUCT_MODEL 1
#define OWN_SERVER @"http://testsite.com/demo/itunes"
#define REVIEW_ALLOWED 1

//#warning Shared Secret Missing Ignore this warning if you don't use auto-renewable subscriptions
#define kSharedSecret @"*****"

Я также установил коды на стороне сервера, но, похоже, он не работает. Кажется, в базе данных тоже ничего не записано.

Как мне это понять?

1 Ответ

0 голосов
/ 17 апреля 2012

Для автообновляемых подписок не требуются серверные компоненты. Apple автоматически заботится о запоминании подписок на сервере.

...