Support Forum

Ask a Question

Error when upgrading from Android v2 to v3: "E/TBLWebUnit: setUnitExtraProperties got unrecognized property."

I'm currently upgrading from v2 to v3 in an Android App, but cannot see any taboola feed. These errors are thrown in the logs: > TBLWebUnit: setUnitExtraProperties got unrecognized property. key = mediatedVia > TBLWebUnit: setUnitExtraProperties got unrecognized property. key = isUsedInTaboolaWidget How can I resolve these errors? Should the taboola feed be visible nevertheless, and I'm missing out on something else? My taboola code looks like this: build.gradle: ``` //Include the Taboola SDK binary implementation 'com.taboola:android-sdk:3.6.3' //Taboola: Include the following dependencies (mandatory) implementation 'androidx.browser:browser:1.4.0' ``` Application.kt: ` Taboola.init(TBLPublisherInfo("[my-published-id]"))` ViewController.kt: ``` { private var taboolaPage: TBLClassicPage? = null private var taboolaUnit: TBLClassicUnit? = null fun init() { if (taboolaPage == null) { taboolaUnit = findViewById<TBLClassicUnit>(R.id.taboolaView) // Dark mode disabled for now // taboolaUnit?.setUnitExtraProperties(HashMap<String, String>().apply { put("darkMode", "true") }) taboolaPage = Taboola.getClassicPage("[my-url]", "article ") taboolaPage?.addUnitToPage( taboolaUnit, "Below Article Thumbnails", "thumbnails-a", TBL_PLACEMENT_TYPE.PAGE_BOTTOM, object : TBLClassicListener() { // None of the callbacks are being called override fun onItemClick( placementName: String?, itemId: String?, clickUrl: String?, isOrganic: Boolean, customData: String? ): Boolean { return true } override fun onTaboolaWidgetOnTop() {} override fun onAdReceiveSuccess() {} override fun onAdReceiveFail(error: String?) {} override fun onResize(height: Int) {} override fun onUpdateContentCompleted() {} override fun onEvent(actionType: Int, data: String?) {} }) } } private fun refreshView() { taboolaUnit?.fetchContent() } } ``` taboola_wiget.xml (I've also tried the way without declaring TBLClassicUnit via XML) ``` <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:taboola="http://schemas.android.com/apk/res-auto" android:id="@+id/taboolaWrapper" android:layout_width="match_parent" android:layout_height="wrap_content"> <com.taboola.android.TBLClassicUnit android:id="@+id/taboolaView" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/elementBackground" taboola:tb_mode="thumbnails-a" taboola:tb_page_type="article" taboola:tb_placement="Below Article Thumbnails" taboola:tb_publisher="[my-publisher-id]" taboola:tb_target_type="mix" taboola:tb_url="[my-url]" /> </FrameLayout> ``` Any help would be appreciated. Thanks! Simon

Cannot customize click item event handler

Hi, I have implemented iOS classic SDK, and in function "didClickPlacementName" i have return false so that i can handle event by my own as per documentation. But Taboola sdk is opening that link along with my handler. Let me know, how i can stop taboola to handle event. Thanks & Regards, Ankit Sabharwal

Getting 400 in Native widget request

I am integrating Taboola native widget in my application in a list. Every third item need to be the Taboola view 1. I have created a TBLNativePage and TBLNativeUnit instances like this Note - same properties are used in your sample val properties = PlacementInfo.widgetProperties() val nativeTaboolaPage = Taboola.getNativePage(properties.pageType, properties.pageUrl) val requestData = TBLRequestData().setRecCount(1) taboolaNativeUnit = nativeTaboolaPage.build(properties.placementName,TaboolaAdProvider.publisherInfo, requestData, object : TBLNativeListener() { override fun onItemClick( placementName: String?, itemId: String?, clickUrl: String?, isOrganic: Boolean, customData: String? ): Boolean { println("Taboola | onItemClick | isOrganic = $isOrganic") return super.onItemClick(placementName, itemId, clickUrl, isOrganic, customData) } }) 2. In ViewHolder I have fetched recommendation with this unit taboolaNativeUnit.fetchRecommendations(object : TBLRecommendationRequestCallback { override fun onRecommendationsFetched(recommendationsResponse: TBLRecommendationsResponse?) { // add data to view } override fun onRecommendationsFailed(throwable: Throwable?) { // Getting 400 Bad Request here } }) But I am getting 400 error code in network request with message - HTTP ERROR 400 Problem accessing /apiHandler/1.2/json/sdk-tester-rnd/recommendations.multiple-get. Reason: The source.type [article] is not supported URL - https://api.taboola.com/1.2/json/sdk-tester-rnd/recommendations.multiple-get?device.id=04af5eac-4ea5-4ada-a69a-132a5dc3adc3&placement1.available=true&ad=%7B%22sdkd%22%3A%7B%22appv%22%3A%225.5.0%22%2C%22appid%22%3A%22com.homepage.news.android.dev%22%2C%22sdkt%22%3A%22Taboola%20Android%20SDK%20-%20API%22%2C%22os%22%3A%22Android%22%2C%22osv%22%3A%2210%22%2C%22sdkv%22%3A%223.5.2%22%2C%22app%22%3A%22HomePage%20News%22%2C%22model%22%3A%22Xiaomi%20POCO%20F1%22%2C%22lng%22%3A%7B%22main%22%3A%22eng%22%2C%22locale%22%3A%22en_IN%22%2C%22dsplng%22%3A%22English%22%2C%22sim%22%3A%22in%22%2C%22netw%22%3A%22in%22%2C%22kbd%22%3A%5B%22%22%5D%7D%2C%22kotlin%22%3Atrue%2C%22androidx%22%3Atrue%2C%22net%22%3A%22wifi%22%2C%22mem%22%3A%225767008%22%2C%22scr%22%3A%7B%22wd%22%3A1080%2C%22ht%22%3A2027%7D%7D%7D&user.opt_out=false&source.id=%2F&app.type=mobile&placement1.name=Widget%20without%20video&source.type=article&req_id=cdb0b553-40f4-41a4-af79-61c00d47142e&source.url=https%3A%2F%2Fblog.taboola.com&app.apikey=c4c6a04f0b48c7992ff477c89a28ef8d41932d12&placement1.organic-type=mix&user.session=v2_ab99edabbcddf419ff23cdf341124161_04af5eac-4ea5-4ada-a69a-132a5dc3adc3_1651576349_1651576349_CNawjgYQ5OxKGL7ihcnu5ZasBSABKAUwZziY0QpA8I8QSIb33ANQod0VWABggwNo_cXPy5zUwd5pcAE&app.name=HomePage%20News&placement1.rec-count=1&placement1.visible=false&view.id=1651578149421 Please let me know what is missing here or where I am creating the wrong request. Note. For same adapter Classing Widget (XML) is working fine

In iOS app adding taboola in table view as tast cell cause the table view to scroll up automatically.

Hi, In our iOS app we have used tabolla SDK. The page where we used taboola is a table view and we are adding taboola when user reaches the bottom of the table view. But while we add taboola cell to the table view as the last cell and reload the table, table view automatically scroll up. This scroll up effect is happening only on iPhone 6 and iPhone 6s. Please let us know if there is any solution for this.

In Mobile SDK v3 (Android), we dont have com.taboola.android.TaboolaWidget?

Hi, I was looking at the documentation of Mobile SDK v3 (Android), and There was no mention of Native units. When I check the sample - https://github.com/taboola/android-sdk-examples-3x It was loading Taboola native widget programmatically unlike the Classic widget which has TBLClassicUnit. in XML also. I have a few questions - 1. Are views like "TaboolaWidget" which are presented in V2 no longer in V3? 2. Can we add a Native unit using XML?

Android Taboola Classic Unit Implementation only loading single item

Hi, I am loading tblclassicunit in the following way and I am getting only one view layout structure <ObservableScrollView android:id="@+id/scroll_view" android:layout_width="match_parent" android:layout_height="match_parent" android:fillViewport="true" android:overScrollMode="never"> <FrameLayout android:id="@+id/scroll_view_child" android:layout_width="match_parent" android:layout_height="wrap_content" android:clipChildren="false"> <LinearLayout android:id="@+id/linearTaboolaContainer" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:paddingTop="4dp" android:paddingLeft="16dp" android:paddingRight="16dp" android:paddingBottom="22dp" /> </FrameLayout> </ObservableScrollView> and I am inflating a tblClassic in this container code that I am using is, private void buildBelowArticleWidget(TBLClassicUnit tblClassicUnit, final int position, final HashMap<Integer, Boolean> nativePositions) { tblClassicUnit .setTargetType("mix"); //optional if (!TextUtils.isEmpty(mWidgetProperties.get(Constants.PAGE_URL_KEY))) { tblClassicUnit.setPageId(mWidgetProperties.get(Constants.PAGE_URL_KEY)); } //used for enable horizontal scroll HashMap<String, String> extraProperties = new HashMap<>(); extraProperties.put("enableHorizontalScroll", "true"); extraProperties.put("useOnlineTemplate", "true"); extraProperties.put("darkMode", "true"); tblClassicUnit.getLayoutParams().height = TBLSdkDetailsHelper.getDisplayHeight(tblClassicUnit.getContext()); TBLClassicPage tblClassicPage= Taboola.getClassicPage(mWidgetProperties.get(Constants.PAGE_URL_KEY), "article"); tblClassicUnit.setAutoResizeHeight(true); enableFeedContentScrolling(true); tblClassicUnit.setUnitExtraProperties(extraProperties); HashMap<String, String> extraProperties1 = new HashMap<>(); extraProperties1.put("setFetchPolicy", "1"); tblClassicPage.setPageExtraProperties(extraProperties1); TBLClassicListener tblClassicListener; tblClassicListener=new TBLClassicListener() { @Override public void onTaboolaWidgetOnTop() { super.onTaboolaWidgetOnTop(); Log.e("taboola","onTaboolaWidgetOnTop"); // enableFeedContentScrolling(false); } @Override public void onAdReceiveSuccess() { Log.e("taboola","onAdReceiveSuccess"); mLoadTaboolaListener.onTaboolaAdLoaded(); super.onAdReceiveSuccess(); } @Override public void onAdReceiveFail(String error) { Log.e("taboola","onAdReceiveSuccess"); mLoadTaboolaListener.onTaboolaAdFailed(); super.onAdReceiveFail(error); } @Override public void onResize(int height) { super.onResize(height); } @Override public boolean onItemClick(String placementName, String itemId, String clickUrl, boolean isOrganic, String customData) { //return super.onItemClick(placementName, itemId, clickUrl, isOrganic, customData); if (isOrganic) { //do something return false; } return true; } }; tblClassicPage.addUnitToPage(tblClassicUnit,mWidgetProperties.get(Constants.PLACEMENT_KEY),mWidgetProperties.get(Constants.MODE_KEY),TBL_PLACEMENT_TYPE.FEED,tblClassicListener); // tblClassicPage.addUnitToPage(tblClassicUnit,"Feed without video","thumbs-feed-01", TBL_PLACEMENT_TYPE.FEED,tblClassicListener); fetchIfRequired(); }