#ios #iphone #objective-c #xcode #admob
#iOS #iPhone #objective-c #xcode #admob
Вопрос:
У меня есть небольшое игровое приложение, в котором есть одна раскадровка, и внутри него создаются такие сцены, как меню «Пуск»-игровая зона-оценки. Я добавил в него просмотр баннера admob и промежуточные заголовки.Мой просмотр баннера работает нормально, но мой интерстициал работает только один раз.
Я загружаю свой промежуточный файл в свой viewdidload и запускаю его в функции, которая вызывает завершение игровых сеансов, и, как я уже сказал, это работает, но только один раз, когда пользователь запускает другую игру и терпит неудачу, на этот раз промежуточного файла нет (ошибка ниже).Итак, что я должен сделать, чтобы исправить это Я хочу, чтобы моя игра показывала промежуточные заголовки несколько раз, когда я захочу.
Ошибка: Ошибка запроса: не будет отправлен запрос, поскольку был использован промежуточный объект.
Заголовок:
#import "GADBannerView.h"
#import "GADInterstitial.h"
@class GADInterstitial;
@class GADRequest;
////////////code UIviewcontroller//////////
GADBannerView *bannerView_;
GADInterstitial *interstitial_;
Реализация
-(void)viewdidload
{
//////////////////gaming code///////////
interstitial_ = [[GADInterstitial alloc] init];
interstitial_.delegate = self;
interstitial_.adUnitID = @"ca-app-pub-6280395701552972/5217388242";
GADRequest *request = [GADRequest request];
[interstitial_ loadRequest:request];
}
Внедрение
-(void)failgame
{
//////////////////gaming code///////////
[interstitial_ presentFromRootViewController:self];
}
На странице googleadmob SDK говорится, что промежуточные заголовки являются объектами одноразового использования, поэтому я на 100% уверен, что это проблема, но там нет ничего, чтобы объяснить, как вызывать их несколько раз, поэтому, пока вы указываете ответ, пожалуйста, не говорите go read, я прочитал его 5 раз.
Комментарии:
1. Промежуточный тип рекламы доступен не для всех. просто проверьте, отображает ли приложение объявление или нет.. Для промежуточных вам нужна некоторая цена за клик…
Ответ №1:
Ну, никто не дал ответа, но я уверен, что есть и другие, у которых была такая же проблема, поэтому для тех, кто хочет вызывать заголовки несколько раз, вот хитрость.
Поместите его в свой собственный метод и вызовите метод из вашего основного метода (который отвечает много раз)
Сохраняйте промежуточные заголовки в вашем viewdidload (или там, где вы хотите запустить первым), потому что, если вы этого не сделаете, вы пропустите первый запуск, остальные будут работать.
Полный код для этого.
- (void) callint
{
int rNumber1 = arc4random() % 45 1;
int rNumber2 = arc4random() % 45 1;
if((rNumber1%2==1) amp;amp; (rNumber1%1==0))
{
[interstitial_ presentFromRootViewController:self];
interstitial_ = [[GADInterstitial alloc] init];
interstitial_.delegate = self;
interstitial_.adUnitID = @"ca-app-pub-6280395701552972/5217388242";
GADRequest *request = [GADRequest request];
[interstitial_ loadRequest:request];
}
}
Я создаю случайное число, и если есть, потому что я не хочу, чтобы пользователи видели эти промежуточные звенья каждый раз, когда запускается даже вызов int, каждый раз, когда у него есть 4/1 шанс срабатывания, поэтому он показывает 1 промежуточное звено для 4-5 срабатываний.
Комментарии:
1. Спасибо, что генератор случайных чисел полезен. Не хотите подробнее объяснить, как это работает?
Ответ №2:
- (void)viewDidLoad {
[super viewDidLoad];
self.interstitial = [self createAndLoadInterstitial];
}
- (GADInterstitial *)createAndLoadInterstitial {
GADInterstitial *interstitial = [[GADInterstitial alloc] initWithAdUnitID:@"ca-app-pub-3940256099942544/4411468910"];
interstitial.delegate = self;
[interstitial loadRequest:[GADRequest request]];
return interstitial;
}
- (void)interstitialDidDismissScreen:(GADInterstitial *)interstitial {
self.interstitial = [self createAndLoadInterstitial];
}
GADInterstitial — это объект одноразового использования. Чтобы запросить другой промежуточный элемент, вам нужно выделить новый объект GADInterstitial .
Лучшее место для выделения другого промежуточного элемента — в методе interstitialDidDismissScreen: в GADInterstitialDelegate, чтобы следующий промежуточный элемент начинал загружаться, как только предыдущий был удален. ссылка: ссылка на сайт admob
Ответ №3:
Если вы будете следовать рекомендуемому коду Admob, как показал Sonu VR, у вас не возникнет проблем. Просто обратите внимание, что, несмотря на использование кода Admob с наилучшей практикой, будет ошибка регистрации, это отвлекающий маневр. Вероятно, это ошибка в ведении журнала Admob, но не ошибка в коде Admob для показа рекламы. Вы можете проверить это, используя нетестовый телефон, и разные объявления будут показываться в разное время.