Hyperloop и Google Mobile Ads SDK
Я пытаюсь использовать Google-Mobile-Ads-SDK в своем проекте appcelerator, поскольку ti.admob ( https://github.com/appcelerator-modules/ti.admob), похоже, не поддерживает вознагражденные объявления. Поэтому я создал Podfile в верхнем каталоге проекта:
install! 'cocoapods',
:integrate_targets => false
platform :ios, '7.0'
target 'my app' do
use_frameworks!
pod 'Google-Mobile-Ads-SDK', '7.15'
end
(Я не мог использовать последнюю версию pod, Xcode кинулся по какой-то проблеме объявления типа - эта скомпилирована нормально.)
Затем я использовал библиотеку, вот так:
var GADRequest = require('GoogleMobileAds/GADRequest');
var GADRewardBasedVideoAd = require('GoogleMobileAds/GADRewardBasedVideoAd');
var instance = GADRewardBasedVideoAd.sharedInstance();
if (!instance.isReady()) {
var request = new GADRequest();
instance.loadRequest(request, Alloy.CFG.rewardedadid);
}
И код не с ошибкой:
TypeError: undefined is not a function
(evaluating 'instance.loadRequest(request, Alloy.CFG.rewardedadid)')
Глядя на соответствующий сгенерированный файл.js на ./build/hyperloop/ios/js/googlemobileads/gadrewardbasedvideoad.js
Я заметил, что сигнатуры функций для методов и свойств экземпляра генерируются для всего, что находится в GADRewardBasedVideoAd.h
кроме loadRequest()
, Заголовок записи для loadRequest()
является:
- (void)loadRequest:(GADRequest *)request withAdUnitID:(NSString *)adUnitID;
Единственная заметная разница с этим заключается в том, что он использует именованный параметр. Есть ли что-то особенное с этим методом? Я делаю что-то не так или Hyperloop еще не поддерживает такие функции?
1 ответ
Проблема здесь в том, что вы не включаете полную подпись (отсутствует withAdUnitID:
селектор). Для исправления просто объедините параметры в Hyperloop следующим образом:
// Compiles to native "loadRequest:withAdUnitID:"
instance.loadRequestWithAdUnitID(request, Alloy.CFG.rewardedadid);
Это описано в разделе " Именованные методы " Руководства по программированию Hyperloop.
Подсказка: есть пример с открытым исходным кодом использования Google Mobile Ads Android Library на Hyperloop, попробуйте!