【问题标题】:Hyperloop and Google Mobile Ads SDKHyperloop 和 Google 移动广告 SDK
【发布时间】:2017-06-03 12:42:54
【问题描述】:

我正在尝试在我的 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 文件,我注意到除了loadRequest() 之外,为GADRewardBasedVideoAd.h 中的所有内容都生成了实例方法和属性的函数签名。 loadRequest() 的标题条目是:

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

唯一明显的区别是它使用了命名参数。这种方法有什么特别之处吗?是我做错了什么还是 Hyperloop 还不支持这些功能?

【问题讨论】:

    标签: titanium appcelerator appcelerator-titanium appcelerator-hyperloop hyperloop


    【解决方案1】:

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

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

    这记录在Hyperloop Programming GuideNamed Methods 部分。

    提示:还有一个open source example 在 Hyperloop 上使用 Google 移动广告 Android 库,试试吧!

    【讨论】:

    • 当我与 Hyperloop 的(我会大胆的)非工作版本搏斗时,通知没有回来。
    猜你喜欢
    • 1970-01-01
    • 2021-12-28
    • 1970-01-01
    • 2021-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 2014-10-14
    相关资源
    最近更新 更多