phonegap admob插件在xcode中获得横幅高度

时间:2014-11-17 14:38:52

标签: javascript cordova xcode5 admob

我正在使用admob插件(在iOS中)它工作得很好,但我也使用谷歌地图,我根据屏幕高度减去标题调整地图高度,现在我还需要减少admob横幅高度。< / p>

我尝试添加一个新功能来获取横幅尺寸并从javascript调用它,但我没有得到任何回复。

这是我添加到CDVAdMob.m文件的代码:

- (GADAdSize)GetAdSize:(CDVInvokedUrlCommand *)command  {
    return self.bannerView.adSize ;
}

我还有CDVAdMob.h文件的函数签名:

- (GADAdSize)GetAdSize:(CDVInvokedUrlCommand *)command;

我不熟悉客观的c代码,所以我不知道我所做的是否正确。

在javascript中我通过以下方式调用了新函数:

window.plugins.AdMob.createBannerView();
var size = window.plugins.AdMob.GetAdSize() ;
alert(size);

有谁能告诉我它是如何正确完成的?

感谢名单

1 个答案:

答案 0 :(得分:2)

只需设置以下两个选项:{overlap:false,offsetTopBar:true},然后插件将自动扣除状态栏和横幅视图的高度。

如果您正在使用其他一些叉子而没有此类功能,请尝试以下步骤。

Cordova插件API是一个void函数:

- (void) YourAPI:(CDVInvokedUrlCommand *)command;

并且,将数据传回javascript:

[self.commandDelegate sendPluginResult:result callbackId:callbackId];

GADAdSize是一种数据结构,您需要将其转换为JSON对象,然后再发回。

typedef struct GADAdSize {
  CGSize size;
  NSUInteger flags;
} GADAdSize;

所以,你的代码可以是:

- (void) GetAdSize:(CDVInvokedUrlCommand *)command {
    //GADAdSize adSize;

    NSMutableDictionary* data = [[NSMutableDictionary alloc] init];
    [data setValue:[NSNumber numberWithFloat:adSize.size.width] forKey:@"width"];
    [data setValue:[NSNumber numberWithFloat:adSize.size.height] forKey:@"height"];
    CDVPluginResult* result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsDictionary:data];
    [self.commandDelegate sendPluginResult:result callbackId:command.callbackId];
}

AdMob.js中的映射:

admobExport.GetAdSize = function(successCallback, failureCallback) {
    cordova.exec( successCallback, failureCallback, 'AdMob', 'GetAdSize', [] );
};

然后在javascript中调用它:

window.pugins.AdMob.GetAdSize(function(data){
    var width = data.width;
    var height = data.height;
},function(){});