ios 调用第三方sdk视频游戏,再返回游戏时,界面卡了,黑屏了

ios 调用第三方sdk视频游戏,再返回游戏时,界面卡了,感觉是不渲染了,声音正常播放,点击按钮后还可以切换场景,但是界面一直停在返回游戏那个界面,有时还会黑屏,但是不影响事件
(android下没有这个问题,只有ios下有这个黑屏)

第三方给的ios demo是用Quick-Cocos2dx-Community-3.6.1_Release,
ios里有段代码

void cocosGameApplicationDidEnterBackground(){
printf(“void cocosGameApplicationDid EnterBackground()”);

Director::getInstance()->stopAnimation();
Director::getInstance()->pause();

SimpleAudioEngine::getInstance()->pauseBackgroundMusic();
SimpleAudioEngine::getInstance()->pauseAllEffects();

Director::getInstance()->getEventDispatcher()->dispatchCustomEvent("APP_ENTER_BACKGROUND_EVENT");

}

void cocosGameApplicationWillEnterForeground(){

printf("void cocosGameApplicationWillEnterForeground     EnterForeground()");
Director::getInstance()->startAnimation();
Director::getInstance()->resume();

SimpleAudioEngine::getInstance()->resumeBackgroundMusic();
SimpleAudioEngine::getInstance()->resumeAllEffects();

Director::getInstance()->getEventDispatcher()->dispatchCustomEvent("APP_ENTER_FOREGROUND_EVENT");

}


但我用的是cocos creater 2.0.7的版,Director类没找到,

想问下大神:cocos2dx里的上面方法,在cocos creater里有没有什么代替的方法,或是能解决卡屏黑屏的问题,谢谢!
@panda @jare

:tired_face:,还是没有进展!

跪求。网上说的其他方法都尝试过了,都不行。

你那边碰到的是什么情况!

网上有方案是这样弄的:
试试修改 AppController.mm里的这个函数:
(void)applicationWillEnterForeground:(UIApplication )application {
/

Called as part of transition from the background to the inactive state: here you can undo many of the changes made
on entering the background.
/
//auto glview = (__bridge CCEAGLView
)(Director::getInstance()->getOpenGLView()->getEAGLView()); //~!@
//auto currentView = [[[[UIApplication sharedApplication] keyWindow] subviews] lastObject]; //~!@
//if (glview == currentView) { //~!@
cocos2d::Application::getInstance()->applicationWillEnterForeground();
//} //~!@
if (CAAgent.isInited) {
[CAAgent onResume];
}
}

你试过没?

上面方法中的CAAgent 是个什么?需要怎么引入使用,你知道吗?

调用第三方视频游戏 退出后卡屏,想着退一步讲,帮玩家重启一下,能继续玩也行,
但是我调用js的重启app方法后,这个位置报null,
第三方sdk视频游戏返回后是找不到gpu信息了?

不好意思,最近在忙别的。可以看另一个帖子https://forum.cocos.com/t/ios-sdk/74571/58有人说明了这个方法,我自己尝试过还是会卡屏的。

这个帖子我也看过,并和用户:你快一点儿吧.net,联系过了,

帖子的问题解决方案是让广告方不向用户推送视频游戏的广告,
但是这样治本不治本呀,根本问题没解决,只是把接入视频游戏的问题给绕过去了,
并且是cocos官方通知的第三方广告修改的,变像说明cocos官方对这个问题好像也是无解的样子,

唉,唉,唉,让我们这种必须接入第三方视频 游戏的怎么办!
@huanxinyin

cocos2dx里就没有这个问题,用上面说的方法都可以用,到了cocos creator这就不行了,去除了这些方法,要解决可能还得我们想办法加回这些方法?官方去了这些方法,应该也会有相应替代的方法的吧,但是我还没有找到替代的方法!

这是因为GLES的上下文丢失了,不清楚是VIEW没有恢复,就触发了GLES的API,还是VIEW彻底失效,需要重新创建才能恢复,可以提供个可以测试的工程,我们再看看。

好的,非常感谢您的回复!
测试项目有点大,70多M我上传到了百度网盘,麻烦您下载一下,

ios我已构建编译完成,可以去build下的打开xcode工程,运行查看,
ui里面有个按钮,点击打开视迅,连接成功后会跳到第三方的游戏 大厅列表,这时返回到cocos游戏 是没问题的,
但是在第三方游戏大厅列表中进入到一个视频游戏文章再退回第三方回到cocos界面就会卡死,
但是逻辑还在跑,你可以继续点击打开视迅会继续跑到第三方的游戏大厅,

ios,
xcode 10.2.1
cocos creator 2.0.7

链接:https://pan.baidu.com/s/1cfCG0HAZ4-4xLPoRs98NcA
提取码:vx0t

@huanxinyin 我上传的文件你能下载吧,能运行吗?如果有什么问题可以说下,我会及时回复的,麻烦 了!

@huanxinyin 大哥,我是日盼夜盼,上传的能运行吗, 如果有什么问题可以说下,我会及时回复的,麻烦 了!
有空给个回复,谢啦!

你上传的文件,没法进入点进进入视讯没反应,不过看了游戏渲染的View应该是失去焦点了,导致不渲染。

@huanxinyin 非常感谢您的回复。
点击进入视迅有时不会进入,需要尝试几次,需要从服务器拿到视迅token然后才能进入,

如果是view失去焦点导致不渲染有什么解决方案吗?
想着解决不了的话,重启一下能好也算凑合,调用cocos重启也会报错,错误上面我已发过,

再次感谢,我这边是一筹莫展!

@huanxinyin 大哥, View失去焦点后,有什么方法或是办法让其重新获得焦点吗?

解决了吗

出现同样的问题。经过@huanxinyin 的提醒。在CCEAGLView-ios.mm 中增加一个接口
- (void)reset { if ([EAGLContext currentContext] != _context) [EAGLContext setCurrentContext:_context]; }

在每次进入的时候调用。测试没有问题

接腾讯直播sdk也遇到这问题,也是这么处理的