简体   繁体   English

无法在Android应用程序中显示Mopub的原生广告

[英]Not able to show native ads of Mopub in android application

I have integarted with Mopub for displaying ads in my android application. 我已与Mopub集成,以便在我的android应用程序中展示广告。 I am able to display bannner and interstitial ads but not native ads, 我可以显示横幅广告和非页内广告,但不能显示原生广告,

layout file code, 布局文件代码,

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical"  >
  <TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@string/note_title_label"
    style="?android:listSeparatorTextViewStyle"
    />
  <EditText android:id="@+id/note_title"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="@string/note_title_hint"
    />
    <TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@string/note_details_label"
    style="?android:listSeparatorTextViewStyle"
    />
    <EditText android:id="@+id/note_details"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="@string/note_details_hint"
    />
    <Button android:id="@+id/note_date"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="16dp"
    android:layout_marginRight="16dp"
    />
    <CheckBox android:id="@+id/note_solved"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="16dp"
    android:layout_marginRight="16dp"
    android:text="@string/note_solved_label"
    />

    <RelativeLayout  android:id="@+id/native_ad_layout"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="50dp">
    >    
    <ImageView android:id="@+id/native_ad_main_image"
                    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
        />  
    <ImageView android:id="@+id/native_ad_icon_image"
                    android:layout_width="fill_parent"
    android:layout_height="wrap_content"  
         />  
    <TextView android:id="@+id/native_ad_title" 
            android:layout_width="fill_parent"
    android:layout_height="wrap_content"
        />  
    <TextView android:id="@+id/native_ad_text" 
       android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        />
</RelativeLayout>

</LinearLayout>

Logic in fragment.java(associated with above layout) file for displaying native ads, fragment.java(与上述布局相关联)文件中的逻辑,用于显示原生广告,

    @TargetApi(11)
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup parent,
    Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.fragment_note, parent, false);



    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
        if (NavUtils.getParentActivityName(getActivity()) != null) {
        getActivity().getActionBar().setDisplayHomeAsUpEnabled(true);
        }
    }
    mTitleField = (EditText)v.findViewById(R.id.note_title);
    mTitleField.setText(mNote.getTitle());
    mTitleField.addTextChangedListener(new TextWatcher() {
    public void onTextChanged(CharSequence c, int start, int before, int count) 
    { 

    String title=Character.toUpperCase(c.toString().charAt(0)) + c.toString().substring(1);
    mNote.setTitle(title);
    }
    public void beforeTextChanged(
    CharSequence c, int start, int count, int after) 
    {// This space intentionally left blank
    }
    public void afterTextChanged(Editable c) {
    // This one too
    }
    });
    mDetailsField = (EditText)v.findViewById(R.id.note_details);
    mDetailsField.setText(mNote.getDetails());
    mDetailsField.addTextChangedListener(new TextWatcher() {
    public void onTextChanged(
    CharSequence c, int start, int before, int count) 
    { 
    mNote.setDetails(c.toString());
    }
    public void beforeTextChanged(
    CharSequence c, int start, int count, int after) 
    {// This space intentionally left blank
    }
    public void afterTextChanged(Editable c) {
    // This one too
    }
    });


    mDateButton = (Button)v.findViewById(R.id.note_date);
    mDateButton.setText(mNote.getDate().toString());
    //mDateButton.setEnabled(false);
    mDateButton.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
        FragmentManager fm = getActivity()
        .getSupportFragmentManager();
        //DatePickerFragment dialog = new DatePickerFragment();
        DatePickerFragment dialog = DatePickerFragment
                .newInstance(mNote.getDate());
        dialog.setTargetFragment(NoteFragment.this, REQUEST_DATE);
        dialog.show(fm, DIALOG_DATE);
        }
        });

    mSolvedCheckBox = (CheckBox)v.findViewById(R.id.note_solved);
    mSolvedCheckBox.setChecked(mNote.isSolved());
    mSolvedCheckBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            // set the note's solved property
            mNote.setSolved(isChecked);
        }
    });  
/*    Button reportButton = (Button)v.findViewById(R.id.note_reportButton);
    reportButton.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
    Intent i = new Intent(Intent.ACTION_SEND);
    i.setType("vnd.android-dir/mms-sms");
    i.putExtra(Intent.EXTRA_TEXT, getNoteReport());
    i.putExtra(Intent.EXTRA_SUBJECT,
            mNote.getTitle());

    Intent sendIntent = new Intent(Intent.ACTION_VIEW);         
    sendIntent.setData(Uri.parse("sms:"));
    sendIntent.putExtra("sms_body", "test man text");
    startActivity(sendIntent);
    }
    });*/

    //advertising start
    MoPubNative.MoPubNativeListener moPubNativeListener = new MoPubNative.MoPubNativeListener() {
        @Override
        public void onNativeLoad(NativeResponse nativeResponse) {
            // ...
        }

        @Override
        public void onNativeFail(NativeErrorCode errorCode) {
            // ...
        }

        @Override
        public void onNativeImpression(View view) {
            // ...
        }

        @Override
        public void onNativeClick(View view) {
            // ...
        };
    };

    MoPubNative moPubNative = new MoPubNative(this.getActivity().getApplicationContext(), "248504aaf06d4a759a59d0615a5bdb54", moPubNativeListener);

    Location exampleLocation = new Location("com.genedevelopers.android.yournote");
    exampleLocation.setLatitude(23.1);
    exampleLocation.setLongitude(42.1);
    exampleLocation.setAccuracy(100);

    RequestParameters requestParameters = new RequestParameters.Builder()
            .keywords("gender:m,age:27")
            .location(exampleLocation)
            .build();
    moPubNative.makeRequest(requestParameters);

    ViewBinder viewBinder = new ViewBinder.Builder(R.layout.list_item_note)
    .mainImageId(R.id.native_ad_main_image)
    .iconImageId(R.id.native_ad_icon_image)
    .titleId(R.id.native_ad_title)
    .textId(R.id.native_ad_text)
    .build();
//advertising end
    return v;
    }

so please someone tell me what is wrong in the code, or if anybody having the sample code on how to integrate mopub native ads to android application please share it.... 因此,请有人告诉我代码中有什么问题,或者如果有人对如何将mopub原生广告集成到android应用程序中有示例代码,请进行分享。...

Here the code that i used to display the native ads 这是我用来展示原生广告的代码

  public class NativeAdActivity extends Activity {

    private MoPubAdAdapter mAdAdapter;
    private static final String MY_AD_UNIT_ID_PHONE = "xxxxxx";
    private static final String MY_AD_UNIT_ID_TAB = "xxxxxx";
    String screenSize;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.native_ad_display);

        // Set location awareness and precision globally 
        MoPub.setLocationAwareness(MoPub.LocationAwareness.TRUNCATED);
        MoPub.setLocationPrecision(4);

        // variable to grab the screenSize form resources 
        screenSize = getResources().getString(R.string.screen_type);


        final ListView listView = (ListView) findViewById(R.id.native_list_view);


        final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1);
        for (int i = 0; i < 100; ++i) {
            adapter.add("Item " + i);
        }

        // Create an ad adapter with ads in positions 0, 4, and every 10 places thereafter.
        // This adapter will be used in place of the original adapter for the ListView.
        mAdAdapter = new MoPubAdAdapter(this, adapter, MoPubNativeAdPositioning.clientPositioning()
                .addFixedPosition(0)
                .addFixedPosition(4)
                .enableRepeatingPositions(10));

        // Set up an renderer that knows how to put ad data in an ad view.
        final MoPubNativeAdRenderer adRenderer = new MoPubNativeAdRenderer(
                new ViewBinder.Builder(R.layout.native_ad_layout)
                .titleId(R.id.native_ad_title)
                .textId(R.id.native_ad_text)
                .mainImageId(R.id.native_ad_main_image)
                .iconImageId(R.id.native_ad_icon_image)
                .build());

        // Register the renderer with the MoPubAdAdapter and then set the adapter on the ListView.
        mAdAdapter.registerAdRenderer(adRenderer);
        listView.setAdapter(mAdAdapter);

    }
    @Override
    public void onResume() {
        // MoPub recommends loading knew ads when the user returns to your activity.
        if(screenSize.equalsIgnoreCase("phone"))
        {
            mAdAdapter.loadAds(MY_AD_UNIT_ID_PHONE);
        }else if(screenSize.equalsIgnoreCase("7-inch-tablet"))
        {
            mAdAdapter.loadAds(MY_AD_UNIT_ID_TAB);

        }else if(screenSize.equalsIgnoreCase("10-inch-tablet") )
        {   
            mAdAdapter.loadAds(MY_AD_UNIT_ID_TAB);
        }
        else //deafault case for phone
        {
            mAdAdapter.loadAds(MY_AD_UNIT_ID_PHONE);
        }
        super.onResume();
    }


 }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM