cordova-plugin-admobpro 不在设备上显示插页式广告或横幅
cordova-plugin-admobpro not displaying interstitials or banners on devices
我试图让广告在 Ionic 应用程序中使用此插件,但得到的结果与插页式广告和横幅广告非常不一致。
当前代码在$ionicPlatform.ready():
中设置插页和横幅
angular.module('myApp',
[
'ionic',
'ngCordova',
'ngIOS9UIWebViewPatch'
])
.constant('myConf', {
ads: {
appBanner: '/1234567/*******************',
appInterstitial: '/1234567/*******************',
roaInterstitial: '/1234567/*******************'
}
})
.run(function ($ionicPlatform, $rootScope, $ionicLoading, myConf, $cordovaKeyboard, $cordovaGoogleAds) {
$ionicPlatform.ready(function () {
if ($cordovaKeyboard) {
$cordovaKeyboard.hideAccessoryBar(true);
}
if (window.StatusBar) {
StatusBar.styleDefault();
}
if (AdMob) {
AdMob.prepareInterstitial({
interstitialAdId: myConf.ads.roaInterstitial,
autoShow: false
});
AdMob.createBanner({
adId: myConf.ads.appBanner,
autoShow: false
});
}
});
)};
然后在 main.js 和控制器中:
if (AdMob) {
AdMob.showInterstitial();
}
和
if (AdMob) {
AdMob.showBanner(AdMob.AD_POSITION.BOTTOM_CENTER);
}
不可否认,代码包含在回调中并且稍微复杂一些,但在测试中,我将代码与此配对,将广告代码从 if 语句中取出或在if语句(代码肯定是进入if语句),也试了autoShow: true,结果一样。
我们正在 ios & android 模拟器和离子视图上进行测试。广告代码正确,这些测试广告没有频率或其他限制。
我一直在 ios 模拟器上看到横幅,但在 android 或 ios 设备上看不到(通过离子视图)。
插页式广告仅偶尔出现在 ios 模拟器上,从未出现在 ios 或 android 设备上。
如果我运行:
$ ionic run ios -l -c
我看到来自 cordova-plugin-extension 的多个警告:
while processing /Library/WebServer/www/my_app/platforms/ios/myApp/Plugins/cordova-plugin-extension/libCordovaGenericAd.a(GenericAdPlugin.o):
warning: /Users/liming/Library/Developer/Xcode/DerivedData/ModuleCache/1UIOVPNM0I1EA/CoreGraphics-N94D31PLFESQ.pcm: No object file for requested architecture
while processing /Library/WebServer/www/my_app/platforms/ios/myApp/Plugins/cordova-plugin-extension/libCordovaGenericAd.a(GenericAdPlugin.o):
warning: Could not resolve external type c:objc(cs)NSObject
我不知道这是否相关,虽然我看到这应该已在 https://github.com/floatinghotpot/cordova-extension/issues/5
中修复
我发现了一些问题:
- 语法错误:prepareInterstitial() 对象包含 "interstitialAdId" 而不是 "adId"。不知道那是怎么进来的,但导致了 "Cannot determine request type. Is your ad unit id correct?" 错误。
- 我需要不断地离子平台 rm/add ios - 代码更改不会自动放入平台目录。
- 我需要将 "isTesting: true" 添加到 createBanner() 和 prepareInterstitial() 对象 - DFP 可能在一段时间后阻止了我的广告请求。
最终解决方案已找到 - ionic view 挡住了广告!一旦我编译了该应用程序并将其分发到 iTunes Connect 上,它们就成功了!
我在编译过程中遇到了几个障碍,我将分享这些障碍,以便遇到类似问题的任何人都能找到答案:
- 编译失败,未找到 'Cordova/CDVViewController.h' 文件
- 在 http://forum.ionicframework.com/t/cordova-cdvviewcontroller-h-file-not-found-in-xcode-7-1-beta/32232 处找到了解决方案
- 将此行添加到您的构建设置 -> Header 搜索路径:
- "$(OBJROOT)/UninstalledProducts/$(PLATFORM_NAME)/include"
- 不要替换看起来相似的现有行
- 将此行添加到 Header 搜索路径
的发布条目的末尾
clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
ld:无法生成位码包,因为“/Library/WebServer/www/myApp/platforms/ios/myApp/Plugins/cordova-plugin-extension/libCordovaGenericAd.a(GenericAdPlugin.o)”是在没有完整位码的情况下构建的。 bitcode 的所有 object 文件和库必须从 Xcode Archive archive 或 Install build for architecture armv7
生成
- 我通过在构建设置中关闭 "Enable Bitcode" 来解决这个问题。
我试图让广告在 Ionic 应用程序中使用此插件,但得到的结果与插页式广告和横幅广告非常不一致。
当前代码在$ionicPlatform.ready():
中设置插页和横幅angular.module('myApp',
[
'ionic',
'ngCordova',
'ngIOS9UIWebViewPatch'
])
.constant('myConf', {
ads: {
appBanner: '/1234567/*******************',
appInterstitial: '/1234567/*******************',
roaInterstitial: '/1234567/*******************'
}
})
.run(function ($ionicPlatform, $rootScope, $ionicLoading, myConf, $cordovaKeyboard, $cordovaGoogleAds) {
$ionicPlatform.ready(function () {
if ($cordovaKeyboard) {
$cordovaKeyboard.hideAccessoryBar(true);
}
if (window.StatusBar) {
StatusBar.styleDefault();
}
if (AdMob) {
AdMob.prepareInterstitial({
interstitialAdId: myConf.ads.roaInterstitial,
autoShow: false
});
AdMob.createBanner({
adId: myConf.ads.appBanner,
autoShow: false
});
}
});
)};
然后在 main.js 和控制器中:
if (AdMob) {
AdMob.showInterstitial();
}
和
if (AdMob) {
AdMob.showBanner(AdMob.AD_POSITION.BOTTOM_CENTER);
}
不可否认,代码包含在回调中并且稍微复杂一些,但在测试中,我将代码与此配对,将广告代码从 if 语句中取出或在if语句(代码肯定是进入if语句),也试了autoShow: true,结果一样。
我们正在 ios & android 模拟器和离子视图上进行测试。广告代码正确,这些测试广告没有频率或其他限制。
我一直在 ios 模拟器上看到横幅,但在 android 或 ios 设备上看不到(通过离子视图)。
插页式广告仅偶尔出现在 ios 模拟器上,从未出现在 ios 或 android 设备上。
如果我运行:
$ ionic run ios -l -c
我看到来自 cordova-plugin-extension 的多个警告:
while processing /Library/WebServer/www/my_app/platforms/ios/myApp/Plugins/cordova-plugin-extension/libCordovaGenericAd.a(GenericAdPlugin.o):
warning: /Users/liming/Library/Developer/Xcode/DerivedData/ModuleCache/1UIOVPNM0I1EA/CoreGraphics-N94D31PLFESQ.pcm: No object file for requested architecture
while processing /Library/WebServer/www/my_app/platforms/ios/myApp/Plugins/cordova-plugin-extension/libCordovaGenericAd.a(GenericAdPlugin.o):
warning: Could not resolve external type c:objc(cs)NSObject
我不知道这是否相关,虽然我看到这应该已在 https://github.com/floatinghotpot/cordova-extension/issues/5
中修复我发现了一些问题:
- 语法错误:prepareInterstitial() 对象包含 "interstitialAdId" 而不是 "adId"。不知道那是怎么进来的,但导致了 "Cannot determine request type. Is your ad unit id correct?" 错误。
- 我需要不断地离子平台 rm/add ios - 代码更改不会自动放入平台目录。
- 我需要将 "isTesting: true" 添加到 createBanner() 和 prepareInterstitial() 对象 - DFP 可能在一段时间后阻止了我的广告请求。
最终解决方案已找到 - ionic view 挡住了广告!一旦我编译了该应用程序并将其分发到 iTunes Connect 上,它们就成功了!
我在编译过程中遇到了几个障碍,我将分享这些障碍,以便遇到类似问题的任何人都能找到答案:
- 编译失败,未找到 'Cordova/CDVViewController.h' 文件
- 在 http://forum.ionicframework.com/t/cordova-cdvviewcontroller-h-file-not-found-in-xcode-7-1-beta/32232 处找到了解决方案
- 将此行添加到您的构建设置 -> Header 搜索路径:
- "$(OBJROOT)/UninstalledProducts/$(PLATFORM_NAME)/include"
- 不要替换看起来相似的现有行
- 将此行添加到 Header 搜索路径 的发布条目的末尾
- 将此行添加到您的构建设置 -> Header 搜索路径:
- 在 http://forum.ionicframework.com/t/cordova-cdvviewcontroller-h-file-not-found-in-xcode-7-1-beta/32232 处找到了解决方案
clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
ld:无法生成位码包,因为“/Library/WebServer/www/myApp/platforms/ios/myApp/Plugins/cordova-plugin-extension/libCordovaGenericAd.a(GenericAdPlugin.o)”是在没有完整位码的情况下构建的。 bitcode 的所有 object 文件和库必须从 Xcode Archive archive 或 Install build for architecture armv7
生成- 我通过在构建设置中关闭 "Enable Bitcode" 来解决这个问题。