打开应用商店作为模态视图打开空白页面(iOS)。

3
我正在尝试使用以下代码在应用程序内以模态视图打开AppStore页面
[NSDictionary dictionaryWithObject:@"APPID" forKey:SKStoreProductParameterITunesItemIdentifier];

SKStoreProductViewController *productViewController = [[SKStoreProductViewController alloc] init];
[self presentViewController:productViewController animated:YES completion:nil];

当应用内打开App Store时,它会作为空白页面打开。请参考附加的屏幕截图。
我不明白为什么我的应用程序的App Store页面无法打开。我已在上述代码中传递了APPID。是否有其他方法可以在不关闭应用程序的情况下评价应用程序?

你如何将 ID 传递给控制器?你如何在这里设置 delegate 类?还有许多开放性问题需要解决... - holex
首先,应用程序是否已上线?其次,在模拟器上它并不总是有效。 - rckoenes
@rckoenes:是的,应用程序已经上线了,我在模拟器和iOS 6.1设备、iOS 7设备上都进行了尝试。 - Vidhi
@holex:实际上,我是从http://stackoverflow.com/questions/19585037/rate-and-review-within-an-app-possible-in-ios7这个问题中获取了这段代码,并且那个答案已经被批准,所以我认为它可能有效。我应该改变代码中的任何内容吗?如何将包含APPID的目录传递给SKStoreProductViewController? - Vidhi
@user2207961,那个答案没有包含完整的实现,你不能只是复制粘贴一个小的代码片段,这根本行不通。 - holex
2个回答

1
基本上,如果您将StoreKit.framework链接到项目中,类似这样的东西可能会对您有所帮助。请注意,在模拟器上可能无法正常工作;在真实设备上,它可以很好地运行。

.h

@interface UIYourViewController : UIViewController <SKStoreProductViewControllerDelegate> { }

.m

- (void)myOwnCustomMethod {

    SKStoreProductViewController *_controller = [[SKStoreProductViewController alloc] init];
    [_controller setDelegate:self];
    [_controller loadProductWithParameters:[NSDictionary dictionaryWithObjectsAndKeys:@"364709193", SKStoreProductParameterITunesItemIdentifier, nil] completionBlock:^(BOOL result, NSError *error) {
        if (result) {
            [self.navigationController presentViewController:_controller animated:TRUE completion:nil];
        } else {
            // you can handle the error here, if you'd like to.
        }
    }];

}

#pragma mark - <SKStoreProductViewControllerDelegate>

- (void)productViewControllerDidFinish:(SKStoreProductViewController *)viewController {
    [self dismissViewControllerAnimated:TRUE completion:nil];
}

Holex Vidhi,你好,它还是不工作,仍然显示空白页面。你能帮我解决一下吗? - Rohit Wankhede
无需等待成功加载即可presentViewController,因为“取消”按钮将首先显示。 - DawnSong

0

In Swift 3,

import StoreKit
class DetailViewController: UIViewController {

    @IBAction func onEditButton(_ sender: UIBarButtonItem) {
        let vc = SKStoreProductViewController()
        vc.delegate = self
        present(vc, animated: true, completion: nil)
        vc.loadProduct(withParameters: [SKStoreProductParameterITunesItemIdentifier: 351091731]) { (success, error) in
            if !success {
                print("\(error)")
            }
        }
    }
}

extension DetailViewController: SKStoreProductViewControllerDelegate {
    func productViewControllerDidFinish(_ viewController: SKStoreProductViewController) {
        viewController.dismiss(animated: true, completion: nil)
    }
}

请确保SKStoreProductParameterITunesItemIdentifier的值是数字,正如其头文件中所述,尽管目前字符串值也可以接受。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接