我正在尝试创建一个新的视图控制器,用于使用UnityAds和Vungle(取决于哪些可用)向用户显示奖励视频。
在Vungle视频观看后,VungleSDKDelegate
会调用我已实施的vungleSDKwillCloseAdWithViewInfo
:
- (void)vungleSDKwillCloseAdWithViewInfo:(NSDictionary *)viewInfo willPresentProductSheet:(BOOL)willPresentProductSheet {
NSLog(@"vungleSDKwillCloseAdWithViewInfo");
[self finishVideoView];
}
并且finishVideoView
为:
- (void) finishVideoView {
NSLog(@"finishVideoView");
[self dismissViewControllerAnimated:YES completion:nil];
}
这很有效,当它完成后,视图控制器被解除并且应用程序恢复。但是,当我尝试在Unity的UnityAdsDelegate
方法unityAdsDidFinish
中执行此方法时,视图控制器就会挂起并永远不会解散。
- (void)unityAdsDidFinish:(NSString *)placementId withFinishState:(UnityAdsFinishState)state{
NSLog(@"unityAdsDidFinish");
[self finishVideoView];
}
任何想法为什么?似乎unityAdsDidFinish
回调恰好在我点击完成视频顶部的x后发生。
我认为这可能是一个时间问题所以我也尝试过:
[self performSelector:@selector(finishVideoView) withObject:nil afterDelay:1.0];
但这似乎也没有帮助。
答案 0 :(得分:0)
我最终决定避免等待委托方法,而是在我的ViewController的finishVideoView
方法中实现viewWillAppear
。它现在似乎工作 - 每当我的视图控制器再次出现时,它会检查BOOL以查看视频是否已播放,如果是,则完成控制器。