Support Forum
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
Posted by Simon Ludwig almost 2 years ago
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
Posted by Ankit Sabharwal almost 2 years ago
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
Posted by Nikhil Kumar Agarwal almost 2 years ago
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.
Posted by Rupam Bharat almost 2 years ago
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?
Posted by Nikhil Kumar Agarwal about 2 years ago
Show/hide "Sponsored Links by ..."
Hi there!
I was wondering if there is any way to configure the TaboolaView from iOS side to obtain the "Sponsored Links by Taboola" or if the way to do it is by asking to Taboola account manager.
Thanks!
Posted by David about 2 years ago
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();
}
Posted by anu over 2 years ago
[iOS] How do I get my app to build on my M1 Mac (iOS Simulator) when Taboola is installed via Carthage?
I think the question says it all. I recently updated my machine, went to install the TaboolaSDK via Carthage, and got the error during build (for simulator):
This is a known issue, well described here: https://medium.com/@quentinfasquel/carthage-issues-xcode-12-xcframeworks-apple-silicon-etc-1c60d8635dbc
```
stephen-work@Stephens-M1-Pro iOS-App % ./carthage.sh bootstrap --platform iOS
*** No Cartfile.resolved found, updating dependencies
*** Downloading binary-only framework TaboolaSDK at "https://cdn.taboola.com/taboola-mobile-sdk/ios/carthage/TaboolaSDK.json"
*** xcodebuild output can be found in /var/folders/22/62ggb_8x21l87nh68dc2hm6w0000gp/T/carthage-xcodebuild.9PI6S7.log
*** Downloading binary-only framework TaboolaSDK at "https://cdn.taboola.com/taboola-mobile-sdk/ios/carthage/TaboolaSDK.json"
```
As far as I understand, 2 solution paths would be to support building .xcframeworks (and provide some support documentation about this issue), and/or additionally installing via Swift Package Manager (SPM).
Anyway, is there a way forward here?
I currently use the 'carthage.sh' script, given here: https://github.com/Carthage/Carthage/blob/master/Documentation/Xcode12Workaround.md
Where it explicitly says "this won't work on Apple Silicon" i.e. the simulator.
So I'm basically stuck.
Posted by Stephen O'Connor over 2 years ago
Android Native Implementation Question
I have a TaboolaWidget inside a RecyclerView. Right now the widget has a fixed height with a nested scroll to view all the overflowing ads. What I want is to make the widget's size to be as large as needed in order to fit all the ads WITHOUT having to use the nested scroll that the widget provides.
Thanks.
Posted by george over 2 years ago