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, попробуйте!

Другие вопросы по тегам