Я интегрировал Revmob Unity Plugin и отлично работает для почти 8 - 10 полноэкранного видео. После этого, не загружая статические или видео-интерстициальные объявления, он говорит: «Ваша RAM заполнена и ничего не может загрузить». Я попытался вызвать Release() как для статического, так и для видео, но ничего не работает.Revmob Unity Out Of Memory Проблема в Android
Когда я кэширую и воспроизвожу от 8 до 10 видео повторно, его работа прекрасна. После этого он полностью остановился. Я ждал почти 1 до 2 часов, ожидая, что она вновь, но :(
Является ли это проблемой в единстве revmob плагин ????
Рафаэль, я могу воспроизвести это каждый раз. Я попытался это в 3-х устройств. Я могу воспроизвести этот вопрос после просмотра 8 видео в Samsung Mega 5,8 с 1 Гб оперативной памяти.
в ASUS zenphone с 4 Гб оперативной памяти, вы можете увидеть использование оперативной памяти увеличивается после игры 20-30 видео.
BTW , так как у меня возникли сомнения в интеграции с другими сетями, я удалил все рекламные сети и протестировал этот один, чтобы воспроизвести эту проблему.
У меня есть несколько вопросов: Какой метод Release() используется в классе RevmobFullScreen. Я не могу найти вас, ребята, используя его в ваших примерах. Это настолько странно, что с помощью функции Release() после нажатия кнопки clickonad и closead, что позволяет мне играть от 5 до 6 видео и без релиза(), я могу воспроизводить от 8 до 10 видео. Я не вижу освобождения памяти с помощью Release(). Вызывается этот метод опционным или имеет какие-либо побочные эффекты?
Кроме того, кеширование видео неоднократно после закрытия или нажатия на объявление вызывает утечку памяти ????? cos, это единственное, что я делаю с Revmob ничего больше
Для вашей справки я прилагаю свой код.
using UnityEngine;
using System.Collections;
using System;
using System.Collections.Generic;
public class RevmobController : BaseController, IRevMobListener {
private Dictionary<string, string> REVMOB_APP_IDS;
private static RevMob revmob;
private static RevMobBanner banner;
private static RevMobFullscreen fullscreenStatic;
private static RevMobFullscreen fullscreenVideo;
public bool bannerAdsOnBootup;
public bool interstitialAdsOnBootup;
private bool fullscreenStaticAvailable;
private bool fullscreenVideoAvailable;
public bool createBanner;
private static RevmobController adsController;
public string androidMediaId;
public string iosMediaId;
private enum TYPE_OF_AD {STATIC, VIDEO};
private TYPE_OF_AD typeOfAd;
public static RevmobController SharedInstance() {
return adsController;
}
void Awake() {
adsController = this;
DontDestroyOnLoad(adsController);
REVMOB_APP_IDS = new Dictionary<string, string>() {
{ "Android", androidMediaId},
{ "IOS", iosMediaId }
};
revmob = RevMob.Start (REVMOB_APP_IDS, gameObject.name);
}
// Use this for initialization
void Start() {
}
public bool ShowFullscreenStatic(string location)
{
if(!fullscreenStaticAvailable) {
return false;
}
this.location = location;
StartCoroutine(LoadInterstitial(location));
return true;
}
IEnumerator LoadInterstitial(string location) {
yield return null;
fullscreenStatic.Show();
}
public bool ShowFullscreenVideo(string location)
{
if(!fullscreenVideoAvailable) {
return false;
}
this.location = location;
StartCoroutine(LoadVideoInterstitial(location));
return true;
}
IEnumerator LoadVideoInterstitial(string location) {
yield return null;
fullscreenVideo.ShowVideo();
}
public void CacheStaticInterstitial(string location) {
if(!AdsService.SharedInstance().IsInternetConnected()) {
return;
}
DestroyStatic();
StartCoroutine(CacheAfterEndofFrame(location, TYPE_OF_AD.STATIC));
}
public void CacheVideoInterstitial() {
if(!AdsService.SharedInstance().IsInternetConnected()) {
return;
}
DestroyVideo();
StartCoroutine(CacheAfterEndofFrame(location, TYPE_OF_AD.VIDEO));
}
IEnumerator CacheAfterEndofFrame(string location, TYPE_OF_AD typeOfAd) {
yield return null;
this.typeOfAd = typeOfAd;
if(typeOfAd == TYPE_OF_AD.STATIC) {
fullscreenStatic = revmob.CreateFullscreen(location);
} else {
fullscreenVideo = revmob.CreateVideo(location);
}
}
public void SessionIsStarted()
{
Debug.Log("Session started.");
if(createBanner) {
banner= revmob.CreateBanner();
}
CacheStaticInterstitial("Bootup");
CacheVideoInterstitial();
if(bannerAdsOnBootup && banner != null) {
if (PlayerPrefs.GetInt("removeads",0) == 0) {
banner.Show();
}
}
}
public void SessionNotStarted (string revMobAdType)
{
Debug.Log("Session not started.");
}
public void AdDidReceive (string revMobAdType)
{
Debug.Log("Ad did receive.");
if(typeOfAd == TYPE_OF_AD.STATIC) {
fullscreenStaticAvailable = true;
} else if(typeOfAd == TYPE_OF_AD.VIDEO) {
fullscreenVideoAvailable = true;
}
if(interstitialAdsOnBootup) {
ShowFullscreenStatic("Bootup");
interstitialAdsOnBootup = false;
fullscreenStaticAvailable = false;
}
}
public void AdDidFail (string revMobAdType)
{
Debug.Log("Ad did fail.");
}
public void AdDisplayed (string revMobAdType)
{
Debug.Log("Ad displayed.");
AdsService.SharedInstance().PauseAudio();
}
public void UserClickedInTheAd (string revMobAdType)
{
Debug.Log("Ad clicked.");
if(typeOfAd == TYPE_OF_AD.STATIC) {
fullscreenStaticAvailable = false;
DestroyStatic();
//CacheStaticInterstitial();
} else if(typeOfAd == TYPE_OF_AD.VIDEO) {
fullscreenVideoAvailable = false;
DestroyVideo();
//CacheVideoInterstitial();
}
}
public void UserClosedTheAd (string revMobAdType)
{
Debug.Log("Ad closed.");
AdsService.SharedInstance().ResumeAudio();
CallOnAdComplete(this.location);
if(typeOfAd == TYPE_OF_AD.STATIC) {
fullscreenStaticAvailable = false;
DestroyStatic();
//CacheStaticInterstitial();
} else if(typeOfAd == TYPE_OF_AD.VIDEO) {
fullscreenVideoAvailable = false;
DestroyVideo();
//CacheVideoInterstitial();
}
}
void DestroyStatic() {
if(fullscreenStatic != null) {
//fullscreenStatic.Hide();
//fullscreenStatic.Release();
//fullscreenStatic = null;
}
}
void DestroyVideo() {
if(fullscreenVideo != null) {
//fullscreenVideo.Hide();
//fullscreenVideo.Release();
//fullscreenVideo = null;
}
}
public void VideoStarted() {
}
public void VideoFinished() {
//fullscreenVideoAvailable = false;
/*fullscreenVideo.Release();
fullscreenVideo = revmob.CreateVideo();*/
}
public void VideoLoaded() {
fullscreenVideoAvailable = true;
}
public void VideoNotCompletelyLoaded() {
}
public void RewardedVideoLoaded() {
}
public void RewardedVideoNotCompletelyLoaded() {
}
public void RewardedVideoStarted() {
}
public void RewardedVideoFinished() {
}
public void RewardedVideoCompleted() {
}
public void RewardedPreRollDisplayed() {
}
void OnDestroy() {
if(banner != null) {
//banner.Release();
}
if(fullscreenVideo != null) {
//fullscreenVideo.Release();
}
if(fullscreenStatic != null) {
//fullscreenStatic.Release();
}
adsController = null;
}
}
Рафаэль, не могли бы вы еще раз проверить мой вопрос ?. Я отредактировал его и опубликовал весь мой код. Не могли бы вы проверить и сообщить мне, есть ли проблема в коде ??? – Kenshin
и когда выйдет 9.2.0? – Kenshin
любой ответ для этого ???? – Kenshin