MKStoreKit 4.0用于自动续订订阅

时间:2011-11-29 13:00:45

标签: objective-c ios xcode auto-renewing mkstorekit

该应用程序只有在用户订阅计划(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 :(得分:0)

自动续订订阅不需要服务器组件。 Apple会自动负责记住服务器上的订阅。