我正在使用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);
有谁能告诉我它是如何正确完成的?
感谢名单
答案 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(){});