在App关闭时关闭Modal App store

时间:2014-03-18 16:50:45

标签: ios ios7 ios6 app-store modalviewcontroller

我正在我的应用中显示模态应用商店,一切都按预期工作。但是,我希望能够在用户关闭应用程序时解除模态。这可能吗?

这就是我现在设置的方式:

if (param != nil && NSClassFromString(@"SKStoreProductViewController"))
{
    NSDictionary *appParameters = @{ SKStoreProductParameterITunesItemIdentifier: param };

    SKStoreProductViewController *productViewController = [[SKStoreProductViewController alloc] init];
    [productViewController setDelegate:self];
    [productViewController loadProductWithParameters:appParameters
                                             completionBlock:^(BOOL result, NSError *error)
    {

    }];
    [self presentViewController:productViewController
                       animated:YES
                       completion:^{

                             }];         
}

这样就完成了设置,允许用户通过单击关闭按钮来关闭模式。

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

我以为我可以更改它,因此SKStoreProductViewController *productViewController是一个成员变量,并且当应用程序停用时只调用一个函数来解除它,但这不能编译iOS 6下的任何内容,对吗?

1 个答案:

答案 0 :(得分:1)

只需在视图控制器中保留对该视图控制器的引用:

@property (nonatomic, strong) UIViewController * skStoreProductViewController;

然后创建产品视图控制器:

// Probably in -viewDidLoad ?
if (param != nil && NSClassFromString(@"SKStoreProductViewController"))
{
    self.skStoreProuctViewController = [[SKStoreProductViewController alloc] init];

    // etc...
}

现在,当用户为您的应用添加背景时,您可以在视图控制器中收听该事件的通知。设置选择器以运行并使用它来关闭视图控制器:

// Probably in -viewDidLoad
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(shouldDismiss:) name:UIApplicationDidEnterBackgroundNotification object:nil];

然后......

- (void)shouldDismiss:(NSNotification*)notification {

    [self.skStoreProductViewController dismissViewControllerAnimated:YES completion:nil]  
}