是否可以根据应用程序的包标识符获取In App Purchase Product标识符列表

时间:2013-09-11 09:59:00

标签: iphone ios objective-c in-app-purchase

我想做一个示例应用程序。我必须根据应用程序的In App Purchase product identifiers显示bundle identifier列表。是否有可能获得product identifiers列表?如果有可能请帮助我。

1 个答案:

答案 0 :(得分:1)

Apple没有提供一种方法来获取应用程序的所有inapp产品。他们在文档中提到了这一点。要么我们应该在我们的应用程序中对此进行硬编码,要么使用单独的API调用来返回产品列表。

关于我的实施的想法

产品标识符=捆绑标识符+含义产品全名

将所有产品标识符保存在.Plist中或您可以轻松更改的方便位置。

动态方法之一是用户服务器模型。简而言之,通过Web服务从服务器检索产品列表。

我已经创建了帮助类,在这里给我产品标识符列表。我通过在bundleidentifier中附加产品名称获得产品名称表格数据库和crate productidentifier。您可以通过附加带有包标识符的productname来获取产品名称.plist和create productidentifier

+ (SPAppPurchaseHelper *)sharedInstance {
  static dispatch_once_t once;
  static SPAppPurchaseHelper * sharedInstance;
  dispatch_once(&once, ^{
      FMDBHandler *dbHandler= [[FMDBHandler alloc] init];
     NSString *query=@"SELECT productId FROM PlayList";
    NSArray *tblDataArr= [dbHandler getListBySQL:query];
    NSString *bundleIdentifier = [[NSBundle mainBundle] bundleIdentifier];
    NSMutableArray *identifierArray=[[NSMutableArray alloc]init];
    for(NSMutableDictionary *productDict in tblDataArr){

        NSString *productIdetifierStr= [NSString stringWithFormat:@"%@.%@",bundleIdentifier,[productDict objectForKey:@"productId"]];
        [identifierArray addObject:productIdetifierStr];
    }

    NSSet * productIdentifiers = [NSSet setWithArray:identifierArray];
    sharedInstance = [[self alloc] initWithProductIdentifiers:productIdentifiers];
});
return sharedInstance;
}