- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我已经为 SKStoreProductViewController 实现了一个委托(delegate)。我将该 View Controller 添加到关键窗口的 View Controller 中。我还在委托(delegate)函数中实现了关闭 View Controller 代码。
问题似乎是这个问题的答案。
Modal App Store won't dismiss
然而,这个问题仍然存在于我的情况中。
显示功能
if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1) {
NSString *appURL = [NSString stringWithFormat:@"itms-apps://itunes.apple.com/%@/app/id%@",
[[NSLocale preferredLanguages] objectAtIndex:0], applicationID];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:appURL]];
} else {
NSDictionary* dict = [NSDictionary dictionaryWithObject:applicationID forKey:SKStoreProductParameterITunesItemIdentifier];
SKStoreProductViewController *viewCont = [[SKStoreProductViewController alloc] init];
viewCont.delegate = self;
[viewCont loadProductWithParameters:dict completionBlock:^(BOOL result, NSError *error)
{
UIViewController* viewController = [UIApplication sharedApplication].keyWindow.rootViewController;
if (viewController)
{ [viewController presentViewController:viewCont animated:YES completion:nil]; }
}];
}
委托(delegate)函数
- (void)productViewControllerDidFinish:(SKStoreProductViewController *)viewController
{
if (viewController)
{ [viewController dismissViewControllerAnimated:YES completion:nil]; }
}
最佳答案
问题是你必须实现
- (void)productViewControllerDidFinish:(SKStoreProductViewController *)viewController
{
if (viewController)
{ [self dismissViewControllerAnimated:YES completion:nil]; }
}
在委托(delegate)类中。如果您在委托(delegate)呈现 SKStoreProductViewController
的类中实现它,它将无法工作,因为 SKStoreProductViewController
将尝试在其委托(delegate)中调用 productViewControllerDidFinish:
,它没有实现该方法。
举个例子:
@implementation MainViewController
- (void)presentSecondViewController
{
SecondViewController *secondViewController = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
[secondViewController setDelegate:self];
[self presentViewController:secondViewController animated:YES completion:nil];
}
- (void)productViewControllerDidFinish:(SKStoreProductViewController *)viewController
{
if (viewController)
{ [self dismissViewControllerAnimated:YES completion:nil]; }
}
@end
@implementation SecondViewController {
id delegate <SKStoreProductViewControllerDelegate>;
}
- (void)setDelegate:(id)delegate
{
_delegate = delegate;
}
- (void)callStoreProductViewController
{
SKStoreProductViewController *viewCont = [[SKStoreProductViewController alloc] init];
viewCont.delegate = _delegate;
[viewCont loadProductWithParameters:dict completionBlock:^(BOOL result, NSError *error)
{
UIViewController* viewController = [UIApplication sharedApplication].keyWindow.rootViewController;
if (viewController)
{ [_delegate presentViewController:viewCont animated:YES completion:nil]; }
}];
}
@end
所以,如果我确实很好地理解了你的问题,你必须在你的 viewController
类中实现 productViewControllerDidFinish:
,因为它是 presentig 的 SKStoreProductViewController
。
希望这对您有所帮助!
关于ios - SKStoreProductViewController 取消按钮崩溃或不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19262496/
找不到与此相关的任何信息...如果我从应用程序内启动 SKStoreProductViewController 实例,并向其提供该应用程序的 iTunes URL,它是否允许应用程序更新?换句话说,我
我正在尝试呈现 SKStoreProductViewController 没有 动画的实例。 StoreKit View Controller 的代码片段来自: objective-C SKStore
我已经为 SKStoreProductViewController 实现了一个委托(delegate)。我将该 View Controller 添加到关键窗口的 View Controller 中。我
我正在尝试使用 SKStoreProductViewController 在我的应用程序中以模态方式打开 App Store。我在网上看过很多例子,人们有两种方法可以做到这一点。 SKStorePr
我正在使用 SKStoreProductViewController 来实现“更多应用”功能,但是当我点击列表中的产品时,我只看到空白屏幕,控制台中也有警告: Could not request vi
我刚刚添加了 SKStoreProductViewController 并从我自己的 UIViewController 中呈现它。如果我将设备旋转到横向模式 - 只有标题适合宽度,其他部分被截断 ..
我在我的应用程序中使用 SKStoreProductViewController。它显示正确,但有几秒钟的延迟,这会降低用户体验。 我的代码有问题吗?或者我应该通知用户 VC 正在加载吗?因为现在人们
我正在尝试从我的应用中展示 App Store 表: https://gist.github.com/valeIT/bf9b357d8ef470fc559c 我的 ViewController 符合
我用适用于 iOS 9 的 Action Extension 制作了一个快速示例项目。它在我包含的应用程序中正常工作,但在我的扩展程序中不起作用。我在两个 View Controller 中使用了相同
当您在您的应用程序中呈现 SKStoreProductViewController 时,网络状况不佳或处于飞行模式时,不会呈现模态视图(因为它当然可以从应用商店检索数据),并且在代表。 那么在这种情况
我正在使用 SKStoreProductViewController 来显示所选应用程序的 App Store View 。单击“安装”时,按钮内显示进度条但未安装应用程序。我知道我并没有真正连接到
在我的应用中,我使用了一些广告 SDK。在其中许多情况下,当用户点击广告下载应用程序时,SDK 使用 SKStoreProductViewController 使用户能够获取应用程序。商店页面以模态视
我正在展示一个 SKStoreProductViewController,并遇到一些约束冲突。我可以验证以前取消激活的约束是否正在重新激活。我不明白为什么会这样。 见下文,标记为*** ———> P
在 iOS 6 中,引入了 SKStoreProductViewController 以在应用程序中显示 iTunes Store 项目,因此用户无需离开应用程序即可查看它们。 到目前为止,我还没有找
使用下面的代码,SKStoreProductViewController 可以呈现应用程序的描述。 当我触摸“免费”按钮时,它显示“安装应用程序”。然后我触摸“安装应用程序”,一个进度条显示在应用程序
我发现在 iOS 8 设备(真实设备)上运行: [storeProductViewController loadProductWithParameters:@{SKStoreProductParame
跟进此线程 targeting specific app with iOS in app purchase ,所有启动都很好,我看到了目标应用程序,但是当我按下“取消”(因为这是沙盒中唯一真正的选择)
在 iOS7 中,当出现 SKStoreProductViewController 时,它会显示状态栏,因此很难点击 [Cancel] 按钮。 可以禁用吗? 在我的应用中,UIViewControll
我目前正在通过 dispatch_async 调用 storeViewController loadProductWithParameters。是否可以设置一个超时值,以便它只尝试获取 X 秒的结果然
在我的应用程序中,我展示了更多带有 SKStoreProductViewController 的应用程序,但 Apple 商店审核团队拒绝了它,原因是: "An error message displ
我是一名优秀的程序员,十分优秀!