I'm trying to implement Tapjoy Rewarded Videos into my app, however they're not showing up.
private var directPlayPlacement: TJPlacement? = null
private var TJlistener: TJPlacementListener? = null
Here's my initTapJoy() function:
fun initTapJoy() {
val connectFlags: Hashtable<String, Any> = Hashtable<String, Any>()
connectFlags[TapjoyConnectFlag.ENABLE_LOGGING] = "true";
connectFlags[TapjoyConnectFlag.USER_ID] = AppPreferences.token;
val callbackTJ = object : TJConnectListener {
override fun onConnectSuccess() {
this.tapJoyConnectSuccess()
Timber.d(TAG, "TapJoy SDK connected");
}
override fun onConnectFailure() {
Timber.d(TAG, "TapJoy SDK not connected");
}
fun tapJoyConnectSuccess() {
Tapjoy.setActivity(activity);
Tapjoy.setUserID(AppPreferences.token);
directPlayPlacement = Tapjoy.getPlacement("RewardedVideo", TJlistener)
TJlistener = object : TJPlacementListener {
override fun onRequestSuccess(p0: TJPlacement?) {
if (p0 != null) {
Timber.i("Tapjoy on request success, contentAvailable: %s", p0.isContentAvailable)
} else {
initTapJoy()
}
}
override fun onRequestFailure(p0: TJPlacement?, p1: TJError?) {
//activity.toast(getString(R.string.adds_content_empty))
Log.d(TAG,"onRequestFailure")
}
override fun onContentReady(p0: TJPlacement?) {}
override fun onContentShow(p0: TJPlacement?) {}
override fun onContentDismiss(p0: TJPlacement?) {
initTapJoy()
}
override fun onPurchaseRequest(p0: TJPlacement?, p1: TJActionRequest?, p2: String?) {}
override fun onRewardRequest(p0: TJPlacement?, p1: TJActionRequest?, p2: String?, p3: Int) { }
override fun onClick(p0: TJPlacement?) {
if (p0 != null) {
TapjoyLog.i(TAG, "onClick for direct play placement " + p0.getName())
}
}
}
directPlayPlacement?.videoListener = object: TJPlacementVideoListener {
override fun onVideoStart(p0: TJPlacement?) {}
override fun onVideoError(p0: TJPlacement?, p1: String?) {
activity.toast(getString(R.string.adds_content_empty))
}
override fun onVideoComplete(p0: TJPlacement?) {
getReward(4)
}
}
//load ad
if (directPlayPlacement != null) {
directPlayPlacement!!.requestContent();
} else {
Log.d(TAG, "Tapjoy SDK must finish connecting before requesting content.")
}
}
}
Tapjoy.connect(activity, API_KEY, connectFlags, callbackTJ);
Tapjoy.setDebugEnabled(true);
}
And this is the showTapjoyRewardedVideo() function:
private fun showTapJoyRewardedVideo() {
if (directPlayPlacement == null) {
Log.d(TAG, "Tapjoy: Direct Play placement is null. No direct play video to show")
}
if (directPlayPlacement?.isContentAvailable!!) {
if (directPlayPlacement!!.isContentReady) {
directPlayPlacement!!.showContent();
} else {
Log.d(TAG, "Tapjoy: Video not ready to show")
}
} else {
Log.d(TAG, "Tapjoy: No video to show")
}
}
LogCat: http://prntscr.com/udhl8e
Please note that I've added my device as a Test device, they're still not showing up, plus I asked people from different countries to open rewarded videos, as I thought they don't have videos available for my country, didn't work.
EDIT: I forgot to mention that using the above code, another default Placement called AppLaunch was showing up as a modal, meaning that the integration worked, however it doesn't work for the rewarded videos.
Any help would be highly appreciated!
The solution was to get my currency approved by TapJoy, there was nothing wrong in my code.