2

环顾四周后,我无法直接回答以下案例:我可以在不集成应用内购买 API 的情况下从我的 iphone 应用链接到 iBook 商店中的一本书吗?

据我所知,iBooks 确实会向您收取放置图书的费用,所以我的逻辑是这应该是可能的,否则您将被收取两次费用。

非常感谢。

4

1 回答 1

8

如果您的应用程序面向 iOS 6.0,您可以使用新SKStoreProductViewController功能允许用户直接从您的应用程序购买 iTunes、App Store 和 iBooks 内容,而无需离开它。

以下是如何从UIViewController. 您必须StoreKit.framework 添加到您的应用程序中。

ViewController.h

#import <StoreKit/StoreKit.h>

@interface UIViewController : UIViewController <SKStoreProductViewControllerDelegate>

@end

ViewController.m

-(void)showProductPageForProductID:(NSInteger)productID {

    SKStoreProductViewController *sv = [[SKStoreProductViewController alloc] init];
    sv.delegate = self;

    NSDictionary *product = @{ SKStoreProductParameterITunesItemIdentifier: @(productID)};
    [sv loadProductWithParameters:product completionBlock:^(BOOL result, NSError *error) {

            if(result)
                [self presentModalViewController:sv animated:YES];
            else {
               //product not found, handle appropriately
            }
        }];

}    
-(void)productViewControllerDidFinish:(SKStoreProductViewController *)viewController {
            [viewController dismissModalViewControllerAnimated:YES];
 }

如果您的目标设备低于 iOS 6.0,您可以使用:

 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://itunes.apple.com/us/book/the-casual-vacancy/id518781282?mt=11"]];

只需将该 URL 字符串替换为您的链接,它就会离开您的应用程序并进入显示该产品的 iBooks 应用程序。

如果您想同时针对 iOS 6.0 及更低版本,您可以SKStoreProductViewController使用以下条件检查它们是否有新的

 if([SKStoreProductViewController class]) {
     //show the SKStoreProductViewController
}
else {
     //use UIApplication's openURL:
}

要获取产品的 Apple 产品 ID,您只需检查产品的 URL,例如:

http://itunes.apple.com/us/book/the-casual-vacancy/id518781282?mt=11

产品编号为518781282。它id位于 URL 中的部分之后。不要在?其后包含 或任何内容。

于 2012-09-30T00:45:53.523 回答