Closed Algashev closed 8 months ago
Спасибо за Ваше обращение, для разбора создана задача с номером PCODESUP-2667. Мы ознакомимся и вернемся с ответом в течение 2 дней, возможно запросим дополнительную информацию.
Thank you for your message, a task with the number PCODESUP-2667 has been created for analysis. We will get acquainted and return with the answer within 2 days, we may request additional information.
Здравствуйте! К сожалению, у нас не получилось воспроизвести проблему. Пришлите пожалуйста следующую информацию:
Подтверждаю. SDK 5.9.1, все крэши iOS 17.x
Fatal Exception: NSInternalInconsistencyException UIGraphicsBeginImageContext() failed to allocate CGBitampContext: size={0, 0}, scale=1.000000, bitmapInfo=0x2002. Use UIGraphicsImageRenderer to avoid this assert.
Fatal Exception: NSInternalInconsistencyException
0 CoreFoundation 0xec870 __exceptionPreprocess
1 libobjc.A.dylib 0x2bc00 objc_exception_throw
2 Foundation 0x6b6e54 -[NSMutableDictionary(NSMutableDictionary) initWithContentsOfFile:]
3 UIKitCore 0xf43a4 _UIGraphicsBeginImageContextWithOptions
4 ssApp 0x923f40 -[UIImage(YMA_Scale) yma_scaledToSize:]
5 ssApp 0x92412c __65+[YMA_SLColorArt processImage:scaledToSize:threshold:onComplete:]_block_invoke
6 libdispatch.dylib 0x26a8 _dispatch_call_block_and_release
7 libdispatch.dylib 0x4300 _dispatch_client_callout
8 libdispatch.dylib 0x744c _dispatch_queue_override_invoke
9 libdispatch.dylib 0x15be4 _dispatch_root_queue_drain
10 libdispatch.dylib 0x163ec _dispatch_worker_thread2
11 libsystem_pthread.dylib 0x1928 _pthread_wqthread
12 libsystem_pthread.dylib 0x1a04 start_wqthread
Здравствуйте, такое может возникать на iOS 17, если вы запрашиваете inline баннер с высотой или/и шириной равной 0. Или sticky - с шириной равной 0. Мы исправим это в следующем релизе. Также, рекомендуем вам использовать корректные размеры при запросе баннеров, для того чтобы повысить количество показываемой рекламы.
Здравствуйте, такое может возникать на iOS 17, если вы запрашиваете inline баннер с высотой или/и шириной равной 0. Или sticky - с шириной равной 0.
Добрый день! Это sticky баннер.
-(YMAAdView *)adView {
if (!_adView) {
CGFloat width = UIScreen.mainScreen.bounds.size.width;
YMAAdSize *adSize = [YMAAdSize stickySizeWithContainerWidth:width];
_adView = [[YMAAdView alloc] initWithAdUnitID:AdYandexBannerUnitID adSize:adSize];
_adView.delegate = self;
_adView.translatesAutoresizingMaskIntoConstraints = NO;
}
return _adView;
}
Мы исправим это в следующем релизе. Также, рекомендуем вам использовать корректные размеры при запросе баннеров, для того чтобы повысить количество показываемой рекламы.
Релиз будет с минимальным таргетом iOS 13.0?
это норма, что [YMAAdSize stickySizeWithContainerWidth:width] возвращает такое?
это норма, что [YMAAdSize stickySizeWithContainerWidth:width] возвращает такое?
Здравствуйте,
Код со скриншота выше вызывает краш, при каждом показе рекламы?
Код со скриншота выше вызывает краш, при каждом показе рекламы?
Нет, код не вызывает постоянных крашей. Более того, при многократных тестах (в дебаг режиме), добиться хотя бы одного падения - не удалось. Краши появились с выходом iOS 17.
Для понимания, статистика в абсолютных значениях за прошедшие 30 дней:
Да, версия SDK 6 требует поднятия минимального таргета на iOS13
Печально, к сожалению, достаточно приличное количество пользователе сидит на 12.x и я не готов ими пожертвовать, тем более, что среди них есть платящие. =[
Как временную меру, для iOS 17 можно использовать fixed баннер. Есть ли вероятность того что ваш код может вызываться во время инициализации приложения? Например, до/во время выполнения метода application:didFinishLaunchingWithOptions ?
Есть ли вероятность того что ваш код может вызываться во время инициализации приложения? Например, до/во время выполнения метода application:didFinishLaunchingWithOptions ?
Да, YMAAdView создается из viewDidLoad rootViewController'a, который инициализируется в процессе выполнения application:didFinishLaunchingWithOptions
Отложенное создание YMAAdView может решить проблему?
Покажите пожалуйста место, где вы первый раз обращаетесь к adView
Покажите пожалуйста место, где вы первый раз обращаетесь к adView
В данной конфигурации, можно вынести конфигурацию adView во ViewDidAppear, или попробовать 40 строку перенести после 46.
В данной конфигурации, можно вынести конфигурацию adView во ViewDidAppear, или попробовать 40 строку перенести после 46.
Ок, т.е. я правильно понял, что проблема в том, что инициализация YMAAdView происходит до того как у приложения появился keyWindow с присвоенным rootViewController?
Правда перенос строк в данном случае не поможет =) т.к. в строке 45 будет точно такой же стэк вызова потому как, точно так же произойдет инициализация SSTabBarController при обращении к self.rootViewContoller, да и viewDidAppear имхо не лучшее место для одноразовой инициализации вьюх, но не суть. Если проблема именно в этом то это легко решаемо, но было бы здорово если бы это было отражено в документации (а в идеале assert срабатывал на это дело=) ибо не совсем очевидно.
Проблема в том что в AdView передается некорректный размер. Также это видно из стактрейса который вы приложили. Обычно UIScreen.mainScreen.bounds.size всегда валидный, но такое поведение может происходить если к нему обращаются либо до application:didFinishLaunchingWithOptions, либо в application:didFinishLaunchingWithOptions. Вероятнее всего, когда вы будете инициализировать YMAAdView, после появления keyWindow с присвоенным rootViewController, - UIScreen.mainScreen.bounds.size будет всегда валидный.
YandexMobileAds 5.9.1
Большое количество сбоев на iOS 17 / iPadOS 17