gpt4 book ai didi

ios - Adcolony 无法找到当前可见的 UIViewController

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:13:24 27 4
gpt4 key购买 nike

我在我的 iPhone 游戏中集成了 adcolony 视频广告。显示广告时出现错误

"ADCOLONY 2.0.1 [* ERROR *] AdColony 有广告,但无法显示它们。AdColony 无法为您的应用找到当前可见的 UIViewController。请确保您的 key UIWindow 具有一个 rootViewController。”

当我检查 appdelegate 中的代码时,我们已经像这样设置了 UIWindow 的 rootviewcontroller :

self.viewController_ipad = [[ViewController_ipad alloc] initWithNibName:nil bundle:nil] ;
window.rootViewController = self.viewController_ipad;
[窗口 makeKeyAndVisible];

我仍然收到此错误。请指导我们正确的方向来解决这个问题?

提前致谢!

最佳答案

我得到了 Adcolony 工程师的回复:

AdColony 找到可见的 UIViewController 显示在您的应用程序的键 UIWindow 中,然后推送一个模态视图 Controller ,用于显示广告,置顶。广告播放完毕后,我们的 SDK 会弹出模态视图 Controller ,让您的应用保持之前的状态。如果我们的 SDK 为您的应用程序的最顶层 View Controller 获取 nil 值,您将遇到您提到的错误。

我可以告诉您,在过去,如果开发人员使用 UIAlertView 中的按钮来触发 AdColony 视频广告,我就会遇到此问题。如果是这种情况,并且您正在从 UIAlertViewUIActionSheet 触发视频,我们强烈建议您在调用播放视频之前确保它们已完全关闭.

我想尽快为您解决这个问题。无论如何,您是否可以向我们发送您的代码的精简版本来重现该问题?如果这不可能,我建议将以下代码粘贴到您尝试播放视频的位置,并使用调试器找出您获得 nil 值的位置。

UIWindow* window = [UIApplication sharedApplication].keyWindow;
UIViewController* rootViewController = [window rootViewController];
[self getVisibleViewControllerChild:rootViewController];

下面是我们使用的方法,getVisibleViewControllerChild:

- (UIViewController*)getVisibleViewControllerChild:(UIViewController*)viewController {

UIViewController* visibleViewController = nil;

if(!viewController) {
return nil;
}

if ([viewController isKindOfClass:[UINavigationController class]]) {
UINavigationController* navigationController = (UINavigationController*)viewController;
viewController = navigationController.visibleViewController;
}

while (visibleViewController == nil) {

if (viewController.modalViewController == nil) {
visibleViewController = viewController;
} else {

if ([viewController.modalViewController isKindOfClass:[UINavigationController class]]) {
UINavigationController *navigationController = (UINavigationController *)viewController.modalViewController;
viewController = navigationController.visibleViewController;
} else {
viewController = viewController.modalViewController;
}
}

}

return visibleViewController;
}

希望这能帮助其他遇到类似问题的人。

关于ios - Adcolony 无法找到当前可见的 UIViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17071351/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com