Phil
Phil

Reputation: 21

Heyzap Button keep disappearing

I'm trying to make ads that give "100 coins" and the button just disappear after 0,2 - 1 second.

I've got no clue why this error could appear. Has someone got an idea how to fix that?

My error

    06-03 21:42:16.017: V/PTAdHeyzapBridge(27950): PTAdHeyzapBridge -- Start Session: "MyHeyzapID"
    06-03 21:42:16.023: E/Heyzap(27950): Heyzap encountered a runtime exception and is now disabled. Error: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference
    06-03 21:42:16.023: V/PTAdHeyzapBridge(27950): PTAdHeyzapBridge -- Start Session FAILED : Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference
    06-03 21:42:16.023: V/PTAdHeyzapBridge(27950): Heyzap SDK Version : 8.4.1

My PTAdHeyzapBridge.java

package com.secrethq.ads;

import java.lang.ref.WeakReference;

import org.cocos2dx.lib.Cocos2dxActivity;

import com.google.android.gms.ads.AdView;
import com.heyzap.sdk.ads.HeyzapAds;
import com.heyzap.sdk.ads.InterstitialAd;
import com.heyzap.sdk.ads.VideoAd;
import com.heyzap.sdk.ads.IncentivizedAd;
import com.heyzap.sdk.ads.BannerAdView;
import com.heyzap.sdk.ads.HeyzapAds.BannerListener;
import com.heyzap.sdk.ads.HeyzapAds.BannerError;
import com.heyzap.sdk.ads.HeyzapAds.OnStatusListener;
import com.heyzap.sdk.ads.HeyzapAds.OnIncentiveResultListener;

import android.util.Log;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.RelativeLayout;

public class PTAdHeyzapBridge {
    private static native String bannerId();
    private static native String interstitialId();
    private static native void interstitialDidFail();
    private static native void bannerDidFail();
    private static native void rewardVideoComplete();

    private static final String TAG = "PTAdHeyzapBridge";
    private static Cocos2dxActivity activity;
    private static WeakReference<Cocos2dxActivity> s_activity;
    private static  BannerAdView bannerAdView;

    public static void initBridge(Cocos2dxActivity activity){
        Log.v(TAG, "PTAdHeyzapBridge -- INIT");
        PTAdHeyzapBridge.s_activity = new WeakReference<Cocos2dxActivity>(activity);    
        PTAdHeyzapBridge.activity = activity;

        PTAdHeyzapBridge.initBanner();
        PTAdHeyzapBridge.initInterstitial();
        PTAdHeyzapBridge.initVideo();
    }

    public static void initBanner(){
        Log.v(TAG, "PTAdHeyzapBridge -- Init Banner");

        PTAdHeyzapBridge.s_activity.get().runOnUiThread( new Runnable() {
            public void run() {
                PTAdHeyzapBridge.bannerAdView = new BannerAdView(PTAdHeyzapBridge.activity);

                FrameLayout frameLayout = (FrameLayout)PTAdHeyzapBridge.activity.findViewById(android.R.id.content);
                RelativeLayout layout = new RelativeLayout( PTAdHeyzapBridge.activity );
                frameLayout.addView( layout );

                RelativeLayout.LayoutParams adViewParams = new RelativeLayout.LayoutParams(
                        AdView.LayoutParams.WRAP_CONTENT,
                        AdView.LayoutParams.WRAP_CONTENT);
                adViewParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
                adViewParams.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE);

                layout.addView(PTAdHeyzapBridge.bannerAdView, adViewParams);
                PTAdHeyzapBridge.bannerAdView.setVisibility( View.INVISIBLE );

                // Add a listener.
                PTAdHeyzapBridge.bannerAdView.setBannerListener(new BannerListener() {
                    @Override
                    public void onAdClicked(BannerAdView b) {
                        // The ad has been clicked by the user.
                    }

                    @Override
                    public void onAdLoaded(BannerAdView b) {
                        // The ad has been loaded.
                    }

                    @Override
                    public void onAdError(BannerAdView b, BannerError bannerError) {
                        // There was an error loading the ad.
                        Log.v(TAG, "PTAdHeyzapBridge -- Banner onAdError : " + bannerError.getErrorMessage());
                        bannerDidFail();
                    }
                });
            }
        });
    }

    public static void initInterstitial(){
        Log.v(TAG, "PTAdHeyzapBridge -- Init Interstitial");        

        InterstitialAd.setOnStatusListener(new OnStatusListener() {
            @Override
            public void onShow(String tag) {
                // Ad is now showing
            }

            @Override
            public void onClick(String tag) {
                // Ad was clicked on. You can expect the user to leave your application temporarily.
            }

            @Override
            public void onHide(String tag) {
                // Ad was closed. The user has returned to your application.
            }

            @Override
            public void onFailedToShow(String tag) {
                // Display was called but there was no ad to show
            }

            @Override
            public void onAvailable(String tag) {
                // An ad has been successfully fetched
            }

            @Override
            public void onFailedToFetch(String tag) {
                // No ad was able to be fetched
                Log.v(TAG, "PTAdHeyzapBridge -- Interstitial onFailedToFetch : " + tag);
                interstitialDidFail();
            }

            @Override
            public void onAudioFinished() {
                // TODO Auto-generated method stub

            }

            @Override
            public void onAudioStarted() {
                // TODO Auto-generated method stub

            }
        });

    }

    public static void initVideo() {
        IncentivizedAd.setOnIncentiveResultListener(new OnIncentiveResultListener() {
            @Override
            public void onComplete(String tag) {
                Log.v(TAG, "PTAdHeyzapBridge -- IncentivizedAd Complete ");

                // Give the player their reward
                rewardVideoComplete();
            }

            @Override
            public void onIncomplete(String tag) {
                // Don't give the player their reward, and tell them why
                Log.v(TAG, "PTAdHeyzapBridge -- IncentivizedAd InComplete ");
            }
        });

        PTAdHeyzapBridge.s_activity.get().runOnUiThread( new Runnable() {
            public void run() {
                // As early as possible, and after showing a rewarded video, call fetch
                IncentivizedAd.fetch();
            }
        });
    }

    public static void showRewardedVideo(){
        Log.v(TAG, "PTAdHeyzapBridge -- showRewardedVideo");

        PTAdHeyzapBridge.s_activity.get().runOnUiThread( new Runnable() {
            public void run() {
                if (IncentivizedAd.isAvailable()) {
                    IncentivizedAd.display(PTAdHeyzapBridge.activity);
                }
            }
        });

    }

    public static void startSession( String sdkKey ){
        if(sdkKey != null){
            Log.v(TAG, "PTAdHeyzapBridge -- Start Session: " + sdkKey);

            try {
                HeyzapAds.start(sdkKey, PTAdHeyzapBridge.activity);
            } catch (Exception e) {
                // TODO: handle exception
                Log.v(TAG, "PTAdHeyzapBridge -- Start Session FAILED : " + e.getMessage());
            }

            Log.v(TAG, "Heyzap SDK Version : " + HeyzapAds.getVersion());

        }else{
            Log.v(TAG, "Start Session : null ");
        }
    }

    public static void showFullScreen(){
        Log.v(TAG, "PTAdHeyzapBridge -- showFullScreen");

        PTAdHeyzapBridge.s_activity.get().runOnUiThread( new Runnable() {
            public void run() {
                // InterstitialAds are automatically fetched from our server
                InterstitialAd.display(PTAdHeyzapBridge.activity);
            }
        });
    }

    public static void showBannerAd(){
        Log.v(TAG, "PTAdHeyzapBridge -- showBannerAd");

        PTAdHeyzapBridge.s_activity.get().runOnUiThread( new Runnable() {
            public void run() {
                if(PTAdHeyzapBridge.bannerAdView != null){
                    PTAdHeyzapBridge.bannerAdView.setVisibility(View.VISIBLE);
                    // Load the banner ad.
                    PTAdHeyzapBridge.bannerAdView.load();
                }
            }
        });
    }

    public static void hideBannerAd(){
        Log.v(TAG, "PTAdHeyzapBridge -- hideBannerAd");
        PTAdHeyzapBridge.s_activity.get().runOnUiThread( new Runnable() {
            public void run() {
                if(PTAdHeyzapBridge.bannerAdView != null){
                    PTAdHeyzapBridge.bannerAdView.setVisibility(View.INVISIBLE);
                }
            }
        });
    }

    public static boolean isBannerVisible() {   
        return (PTAdHeyzapBridge.bannerAdView.getVisibility() == View.VISIBLE);
    }

    public static boolean isRewardedVideoAvialable(){   
        return IncentivizedAd.isAvailable();
    }
}

My Main activity

package com.lopeostudios.runningpanda;

import org.cocos2dx.lib.Cocos2dxActivity;
import org.cocos2dx.lib.Cocos2dxGLSurfaceView;

import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.WindowManager;
import android.widget.Toast;
import com.secrethq.store.PTStoreBridge;
import com.google.android.gms.games.GamesActivityResultCodes;
import com.lopeostudios.runningpanda.R;
import com.secrethq.ads.*;
import com.secrethq.utils.*;
import com.onesignal.OneSignal;


public class PTPlayer extends Cocos2dxActivity {


    private static native void loadModelController();

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        Log.v("----------","onActivityResult: request: " + requestCode + " result: "+ resultCode);
        if(PTStoreBridge.iabHelper().handleActivityResult(requestCode, resultCode, data)){
            Log.v("-----------", "handled by IABHelper");
        }
        else if(requestCode == PTServicesBridge.RC_SIGN_IN){
            if(resultCode == RESULT_OK){
                PTServicesBridge.instance().onActivityResult(requestCode, resultCode, data);
            }
            else if(resultCode == GamesActivityResultCodes.RESULT_SIGN_IN_FAILED){
                int duration = Toast.LENGTH_SHORT;
                Toast toast = Toast.makeText(this, "Google Play Services: Sign in error", duration);
                toast.show();
            }
            else if(resultCode == GamesActivityResultCodes.RESULT_APP_MISCONFIGURED){
                int duration = Toast.LENGTH_SHORT;
                Toast toast = Toast.makeText(this, "Google Play Services: App misconfigured", duration);
                toast.show();               
            }
        }
    }

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        OneSignal.startInit(this).init();
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
    }



    @Override
    public void onNativeInit(){
            initBridges();              
    }

    private void initBridges(){
        PTStoreBridge.initBridge( this );
        PTServicesBridge.initBridge(this, getString( R.string.app_id ));

        if (PTJniHelper.isAdNetworkActive("kChartboost")) {
            PTAdChartboostBridge.initBridge(this);
        }

        if (PTJniHelper.isAdNetworkActive("kRevMob")) {
            PTAdRevMobBridge.initBridge(this);
        }

        if (PTJniHelper.isAdNetworkActive("kAdMob") || PTJniHelper.isAdNetworkActive("kFacebook")) {
            PTAdAdMobBridge.initBridge(this);
        }

        if (PTJniHelper.isAdNetworkActive("kAppLovin")) {
            PTAdAppLovinBridge.initBridge(this);
        }

        if (PTJniHelper.isAdNetworkActive("kLeadBolt")) {
            PTAdLeadBoltBridge.initBridge(this);
        }

        if (PTJniHelper.isAdNetworkActive("kVungle")) {
            PTAdVungleBridge.initBridge(this);
        }

        if (PTJniHelper.isAdNetworkActive("kPlayhaven")) {
            PTAdUpsightBridge.initBridge(this);
        }

        if (PTJniHelper.isAdNetworkActive("kMoPub")) {
            PTAdMoPubBridge.initBridge(this);
        }

        if (PTJniHelper.isAdNetworkActive("kFacebook")) {
            PTAdFacebookBridge.initBridge(this);
        }

        if (PTJniHelper.isAdNetworkActive("kHeyzap")) {
            PTAdHeyzapBridge.initBridge(this);
        }

    }



    @Override
    public Cocos2dxGLSurfaceView onCreateView() {
        Cocos2dxGLSurfaceView glSurfaceView = new Cocos2dxGLSurfaceView(this);
        glSurfaceView.setEGLConfigChooser(8, 8, 8, 0, 0, 0);

        return glSurfaceView;
    }

    static {
        System.loadLibrary("player");
    }

    @Override
    protected void onResume() {
        super.onResume();
        if (PTJniHelper.isAdNetworkActive("kChartboost")) {
            PTAdChartboostBridge.onResume( this );
        }
    }

    @Override
    protected void onStart() {
        super.onStart();
        if (PTJniHelper.isAdNetworkActive("kChartboost")) {
            PTAdChartboostBridge.onStart( this );
        }
    }

    @Override
    protected void onStop() {
        super.onStop();
        if (PTJniHelper.isAdNetworkActive("kChartboost")) {
            PTAdChartboostBridge.onStop( this );
        }
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
    }




}

Upvotes: 0

Views: 463

Answers (1)

MaxGabriel
MaxGabriel

Reputation: 7707

I'm an engineer at Heyzap. Our SDK will catch exceptions from third party SDKs, and shut down our SDK if we catch one (this is our last line of defense in preventing exceptions from crashing your game). In this case, we're catching this exception:

06-03 21:42:16.023: E/Heyzap(27950): Heyzap encountered a runtime exception and is now disabled. Error: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference

We've previously seen this exception caused by an outdated UnityAds SDK. Are you using that network, and if so, can you try UnityAds 1.5.6? If you're not, can you tell us which networks you're using, or the Android package of your game?

Also, I see in yours logs that you're using Heyzap 8.4.1, which was released in June of last year. Can you update to our latest version?

Upvotes: 0

Related Questions