Hyperloop和Google移动广告SDK

Can*_*can 6 titanium appcelerator appcelerator-titanium appcelerator-hyperloop hyperloop

我试图在我的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
Run Code Online (Sandbox Code Playgroud)

(我无法使用最新版本的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);
}
Run Code Online (Sandbox Code Playgroud)

并且代码失败并出现错误:

TypeError: undefined is not a function
(evaluating 'instance.loadRequest(request, Alloy.CFG.rewardedadid)')
Run Code Online (Sandbox Code Playgroud)

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

- (void)loadRequest:(GADRequest *)request withAdUnitID:(NSString *)adUnitID;
Run Code Online (Sandbox Code Playgroud)

与此唯一明显的区别是它使用了一个命名参数.这种方法有什么特别之处吗?我做错了什么或者Hyperloop还没有支持这样的功能吗?

Han*_*hel 0

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

// Compiles to native "loadRequest:withAdUnitID:"
instance.loadRequestWithAdUnitID(request, Alloy.CFG.rewardedadid);
Run Code Online (Sandbox Code Playgroud)

这记录在Hyperloop 编程指南命名方法部分中。

提示:还有一个在 Hyperloop 上使用 Google 移动广告 Android 库的开源示例,请尝试一下!