我们的应用程序通过中介平台Mopub使用 Facebook原生广告,它运作良好,但我们应该转移到另一个平台。
我已使用相同的placementId和app_id替换了SDK平台,并将我的应用程序作为开发人员进行了测试。 在真实广告的测试模式下,一切都很好,但我无法在真实设备上获得广告。
我试图在没有任何中介平台(底部的代码)的情况下实现Facebook Native,但仍然有相同的结果。
所以问题不在合作伙伴平台上,但我无法在真实设备上获得广告。 Facebook Native抛出错误: 1001 no fill
看起来很奇怪,因为我有:
代码和日志: AndroidManifest: // ...
//...
<meta-data
android:name="com.facebook.sdk.ApplicationId"
android:value="@string/app_id" />
应用程序build.gradle:
//...
ext {
supportLibraryVersion = '25.3.1'
playServicesVersion = '11.0.1'
FBVersion = "4.25.0"
}
dependencies {
compile project(':library')
compile fileTree(include: ['*.jar'], dir: 'libs')
//...
compile "com.facebook.android:audience-network-sdk:$FBVersion"
//...
}
FacebookNativeLoader.java:
//...
/**
* Initiate ad container for native ad
*/
Override
public View createContentView(Context context) {
log(" createContentView");
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
return inflater.inflate(R.layout.facebook_ad_native_view, null);
}
@Override
public void loadAd(final MyViewManager myViewManager, final ResultListener resultListener) {
log(" loadAd");
adNativeLayout = myViewManager.getContentView();
// Create ad request with Facebook ad PlacementId
adNative = new NativeAd(myViewManager.getContext(), adPlacementId);
//
adNative.setAdListener(new AdListener() {
@Override
public void onError(Ad ad, AdError adError) {
log("FacebookNative Ad Loading Failed." +
"Error:" + NATIVE_LOAD_ERROR +
" ErrorCode:" + adError.getErrorCode() +
" ErrorMessage" + adError.getErrorMessage());
//Call Error to hide ad layout
resultListener.onError(NATIVE_LOAD_ERROR);
}
@Override
public void onAdLoaded(Ad ad) {
log("FacebookNative Ad Loading Completed");
//...
// Download icon for native ad
if (adNative.getAdIcon() != null) {
String iconUrl = adNative.getAdIcon().getUrl();
if (iconUrl != null && iconUrl.length() > 0)
NativeAd.downloadAndDisplayImage(adNative.getAdIcon(), icon);
}
// Download cover for native ad
if (adNative.getAdCoverImage() != null) {
String coverUrl = adNative.getAdCoverImage().getUrl();
if (coverUrl != null && coverUrl.length() > 0)
NativeAd.downloadAndDisplayImage(adNative.getAdCoverImage(), contentImage);
}
//Show debug info
log("adNative.getCalltoAction() - " + adNative.getAdCallToAction());
log("adNative.getBody() - " + adNative.getAdBody());
log("adNative.getClickUrl() - " + adNative.getAdCallToAction());
BaseLockScreenManager.url = adNative.getAdCallToAction();
title.setText(adNative.getAdTitle());
text.setText(adNative.getAdSubtitle());
downloadButton.setText(adNative.getAdCallToAction());
// Add the AdChoices icon
LinearLayout adChoicesContainer = (LinearLayout) adNativeLayout.findViewById(R.id.ad_choices_container);
AdChoicesView adChoicesView = new AdChoicesView(myViewManager.getContext(), adNative, true);
adChoicesContainer.addView(adChoicesView);
//Call Success to show ads
resultListener.onSuccess(true);
}
@Override
public void onAdClicked(Ad ad) {
//Do something
}
@Override
public void onLoggingImpression(Ad ad) {
//Do something
}
});
//Register Ad container to catch user Interactions
adNative.registerViewForInteraction(adNativeLayout);
// Initiate a request to load an ad.
// Loading Ad started here...
adNative.loadAd();
}
在Facebook文档&#34;错误:1001没有填写&#34;的意思是:
这是测试时看到的一个常见错误,与&#34; No Fill&#34; 响应;最常见的原因是用户未登录 在测试您的移动应用程序或未登录时访问Facebook应用程序 测试移动网站时的Facebook移动网站。
错误1001 - 无填充。可能是由于以下一项或多项原因: - 用户未登录移动设备上的原生Facebook应用程序(但真实设备登录到原生Facebook应用程序)
- 启用了限制广告跟踪(iOS)(但这与Android应用无关)
- 选择停用基于兴趣的广告(Android)(但我已关闭价值)
- 当前用户没有广告资源(这是什么意思?)
- 您的测试设备必须安装原生Facebook应用程序。(但我使用真实Facebook帐户在真实设备上测试过)
- 您的应用程序应在30秒后尝试再次提出请求。(但我每次都会得到相同的结果)
LogCat消息:
开发者设备:
FacebookLoader:
I/----FacebookLoader: loadAd
I/----FacebookLoader: createContentView
I/----FacebookLoader: Facebooknative Ad Loading Completed
I/----FacebookLoader: adNative.getCalltoAction() - Learn More
I/----FacebookLoader: adNative.getBody() - LAToken aims to tokenize assets worth $1.2 trillion by 2025.
I/----FacebookLoader: adNative.getClickUrl() - Learn More
用户设备:
FacebookLoader:
I/----FacebookLoader: loadAd
I/----FacebookLoader: createContentView
I/----FacebookLoader: FacebookNative Ad Loading Failed.Error:669 ErrorCode:1001 ErrorMessage: No fill
有什么问题呢?有人有同样的问题吗?
我害怕在没有能力确保用户可以看到广告的情况下发布,因为我们的应用程序的主要思想是广告。