我试图在我的appcelerator项目中使用Google-Mobile-Ads-SDK,因为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)')

查看./build/hyperloop/ios/js/googlemobileads/gadrewardbasedvideoad.js上相应的生成的.js文件,我注意到为GADRewardBasedVideoAd.h中除loadRequest()之外的所有内容生成了实例方法和属性的函数签名。 loadRequest()的 header 条目是:

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

唯一值得注意的区别是它使用的是命名参数。这种方法有什么特别之处吗?我是在做错什么,还是Hyperloop尚不支持此类功能?

最佳答案

这里的问题是您不包括完整签名(缺少withAdUnitID:选择器)。为了修复它,只需在Hyperloop中连接参数,如下所示:

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

Named MethodsHyperloop Programming Guide部分中对此进行了记录。

提示:还可以在Hyperloop上使用Google移动广告Android库open source example,请尝试一下!

关于titanium - Hyperloop和Google Mobile Ads SDK,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44344063/

10-11 04:13