我注意到当用户在 iOS6 邮件应用程序中点击应用程序商店链接时,邮件会打开一个表示应用程序商店的模式视图,而不是像以前的版本那样切换到应用程序商店应用程序。
Apple 是否提供对此功能的访问权限,或者它是其集成程序独有的?
注意:如果您有 iOS 6 并想对其进行测试,只需打开应用商店并通过电子邮件将应用发送给自己。
我将此方法作为一个类别添加到 UIViewController,但您可以根据自己的需要重新调整它的用途。应用商店 ID 是应用商店 URL 中的大数字。确保导入 StoreKit 框架和头文件!
@import StoreKit;
- (void)presentAppStoreForID:(NSNumber *)appStoreID withDelegate:(id<SKStoreProductViewControllerDelegate>)delegate
{
if(NSClassFromString(@"SKStoreProductViewController")) { // Checks for iOS 6 feature.
SKStoreProductViewController *storeController = [[SKStoreProductViewController alloc] init];
storeController.delegate = delegate; // productViewControllerDidFinish
// Example App Store ID (e.g. for Words With Friends)
// @322852954
[storeController loadProductWithParameters:@{ SKStoreProductParameterITunesItemIdentifier: appStoreID }
completionBlock:^(BOOL result, NSError *error) {
if (result) {
[self presentViewController:storeController animated:YES completion:nil];
} else {
[[[UIAlertView alloc] initWithTitle:@"Uh oh!" message:@"There was a problem opening the app store" delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles: nil] show];
}
}];
} else { // Before iOS 6, we can only open the App Store URL
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://itunes.apple.com/app/id%@",appStoreID]]];
}
}
看起来这是在 IOS 6 中作为 StoreKit 引入的,特别是SKITunesProductViewController,它允许您在应用程序中呈现 iTunes 内容(应用程序、音乐、书籍等)供用户直接购买。
这里有一个处理附属链接的插件: https ://github.com/aven/AEProductController
或者,您可以按照 Apple Technical Q&A QA1629 首先打开应用程序内的附属链接(就像直接打开 iTunes Store 应用程序之前一样)来推出自己的产品:
https://developer.apple.com/library/ios/#qa/qa2008/qa1629.html
然后按照上面提到的 MaxGabriel 打开 SKStoreProductViewController 。
[编辑] 我在我的应用程序(音乐应用程序)中完成了这个,但无论我有一个活动的 AVAudioSession 还是我完全禁用所有播放(用于测试),模态 iTunes Store 中的歌曲样本播放但没有声音。如果您没有此问题或找到解决方案,请告诉我。这可能是一个应该报告给https://bugreport.apple.com/的错误。