从iphone应用程序链接到iBook商店中的书籍

时间:2012-09-29 22:17:34

标签: iphone objective-c ios xcode itunes

环顾四周之后我无法直接回答以下案例:我是否可以从iphone应用程序链接到iBook商店中的书籍,而无需集成应用内购买API?

据我所知,iBooks会向你收取放置书籍的费用,所以我的逻辑说它应该是可能的,否则你会收取两次费用。

非常感谢。

1 个答案:

答案 0 :(得分:8)

如果您的应用定位到iOS 6.0,则可以使用新的SKStoreProductViewController来允许用户直接从您的应用购买iTunes,App Store和iBooks内容,而无需离开。

以下是如何从UIViewController展示它。您必须add 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,您只需检查产品的网址,例如:

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

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