objective-c - 用于自动续订订阅的 MKStoreKit 4.0

标签 objective-c ios xcode auto-renewing mkstorekit

该应用程序是这样的,所有内容只有在用户订阅了一个方案(1 个月、3 个月、6 个月或一年)后才能访问。因此,最初当应用程序首次安装时,会出现一个包含购买这些方案的选项的 View 。一旦用户选择了一个方案并进行了购买,他就获得了访问权限。

我在应用程序中初始化委托(delegate):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
}

一旦界面被填充。与每个订阅方案关联的 UIbuttons 链接到一个 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 和共享 key

#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 @"*****"

我也提供了服务器端代码,但它似乎不起作用。数据库中似乎也没有任何记录。

我该如何做对?

最佳答案

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

关于objective-c - 用于自动续订订阅的 MKStoreKit 4.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8311140/

相关文章:

ios - 关于在IOS中创建动态数据表的建议

objective-c - 如何在 Objective C 而不是 Swift 中生成 NSManagedObject 类?

ios - 如何在 iOS 应用程序中将 sqlite 数据与服务器同步?

ios - 使用 PHPhotoLibrary 保存照片时元数据丢失

ios - Objective-C:修复方法中的内存管理

iphone - 我的数据库数据在哪里(核心数据,iOS)

ios - 自定义 TableView iOS - 一般问题

objective-c - 如何知道另一个接口(interface)中的网络事件是否完成?

objective-c - 将自身属性传递给 block 时的 ARC 实现

iphone - 在没有实例变量的情况下删除 dealloc 上的委托(delegate)