Hyperloop and Google Mobile Ads SDK
Asked Answered
S

1

6

I'm trying to use Google-Mobile-Ads-SDK in my appcelerator project since ti.admob (https://github.com/appcelerator-modules/ti.admob) doesn't seem to support rewarded ads. So I created a Podfile in the top project directory:

install! 'cocoapods',
         :integrate_targets => false

platform :ios, '7.0'

target 'my app' do
  use_frameworks!
  pod 'Google-Mobile-Ads-SDK', '7.15'
end

(I couldn't use the latest version of the pod, Xcode bailed on some type declaration issue - this one compiled fine.)

Then I used the library, like this:

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);
}

And the code failed with error:

TypeError: undefined is not a function
(evaluating 'instance.loadRequest(request, Alloy.CFG.rewardedadid)')

Looking at the corresponding generated .js file at ./build/hyperloop/ios/js/googlemobileads/gadrewardbasedvideoad.js, I noticed that function signatures for instance methods and properties are generated for all that is in GADRewardBasedVideoAd.h except for loadRequest(). The header entry for loadRequest() is:

- (void)loadRequest:(GADRequest *)request withAdUnitID:(NSString *)adUnitID;

The only noticeable difference with this is that it's using a named parameter. Is there anything special with this kind of method? Am I doing something wrong or does Hyperloop not yet support such functions?

Shanney answered 3/6, 2017 at 12:42 Comment(0)
S
0

The issue here is that you are not including the full signature (missing the withAdUnitID: selector). For fixing it, simply concatenate parameters in Hyperloop like this:

// Compiles to native "loadRequest:withAdUnitID:"
instance.loadRequestWithAdUnitID(request, Alloy.CFG.rewardedadid);

This is documented in the Named Methods section of the Hyperloop Programming Guide.

Tip: There is an open source example of using the Google Mobile Ads Android Library on Hyperloop as well, try it out!

Soddy answered 30/3, 2018 at 8:12 Comment(1)
Notice wasn't there back when I was wrestling with the (I'll be bold) non-working versions of Hyperloop.Shanney

© 2022 - 2024 — McMap. All rights reserved.