Entegrasyon

Önce panelde uygulamanı ekle ve bir reklam alanı oluştur. Sana pk_ ile başlayan bir alan anahtarı verilir. Uygulaman onaylanınca reklamlar gelmeye başlar.

Telegram Mini App

Script'i ekle ve alanı göster. Kullanıcı ve dil Telegram'dan otomatik alınır. Banner ve bildirim tarzı için bir kapsayıcı ver; tam ekran biçimler kendisi açılır.

<script src="https://telegram.org/js/telegram-web-app.js"></script> <script src="https://cleanads.ai/sdk/v1.js"></script> <div id="ad"></div> <script> // Banner or push-style CleanAds.show("pk_PLACEMENT", "#ad"); // Rewarded CleanAds.show("pk_REWARDED").then(function (result) { if (result.rewarded) unlockReward(result.tx); }); </script>

Panelde bot token kaydedersen her istek Telegram imzasıyla doğrulanır ve imzası tutmayan istekler reddedilir.

Telegram botu

Bot sunucundan reklam iste, kullanıcıya gönder, gösterimi bildir. Sunucu anahtarını yalnızca sunucunda tut.

import requests SECRET = "sk_..." HEADERS = {"x-cleanads-secret": SECRET} ad = requests.get("https://cleanads.ai/api/v1/ad", params={"placement": "pk_PLACEMENT", "user": telegram_user_id, "lang": "tr"}, headers=HEADERS).json()["ad"] if ad: bot.send_message(chat_id, f"{ad['title']}\n{ad['body']}\n\nAd", reply_markup=url_button(ad["cta"], ad["click_url"])) requests.post(ad["impression_url"], headers=HEADERS)

iOS

SDK kaynak kodu depodaki sdks klasöründedir.

import CleanAds CleanAds.initialize(userId: currentUser.id) if let ad = await CleanAds.load("pk_PLACEMENT") { present(CleanAdsFullscreenController(ad: ad), animated: true) } // Banner let banner = CleanAdsBannerView() banner.load(placementKey: "pk_BANNER")

Android

CleanAds.init(userId = user.id) CleanAds.load("pk_PLACEMENT") { ad -> if (ad != null) CleanAdsFullscreenActivity.show(context, ad, onReward = { grantInUi() }) } // Banner findViewById<CleanAdsBannerView>(R.id.banner).load("pk_BANNER")

Flutter

CleanAds.init(userId: user.id, openUrl: (uri) => launchUrl(uri)); final ad = await CleanAds.load('pk_PLACEMENT'); if (ad != null) await showCleanAdsFullscreen(context, ad); // Banner CleanAdsBanner(placementKey: 'pk_BANNER')

React Native

import { init, CleanAdsBanner } from "cleanads-react-native"; init({ userId: user.id }); <CleanAdsBanner placement="pk_BANNER" />

HTTP API

Kendi istemcini yazmak için üç çağrı yeterli.

  1. Reklam iste. Doldurma yoksa ad alanı null döner.
  2. Reklam ekranda göründüğünde impression_url adresine bir kez POST at.
  3. Dokunulunca click_url adresini sistem tarayıcısında aç.
GET https://cleanads.ai/api/v1/ad?placement=pk_PLACEMENT&user=USER_ID&lang=tr { "ad": { "format": "native", "label": "Ad", "title": "...", "body": "...", "cta": "Open", "icon": "https://...", "image": null, "video": null, "impression_url": "https://cleanads.ai/api/v1/imp?t=...", "click_url": "https://cleanads.ai/api/v1/click?t=...", "complete_url": null } }

Reklamı her zaman ad.label etiketiyle göster.

Ödül bildirimi

Ödüllü reklam bitince panelde girdiğin adrese imzalı istek gelir. Ödülü sunucunda bu istekle ver, istemciye güvenme. Aynı tx değerini ikinci kez işleme.

// GET your-url?placement=&user_id=&reward=&amount=&tx=&ts=&sig= const canonical = [placement, user_id, reward, amount, tx, ts].join("."); const expected = crypto.createHmac("sha256", SERVER_SECRET).update(canonical).digest("hex"); if (crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(sig))) grantOnce(tx);

Dönüşüm bildirimi

Hedef adresine {click_id} ekle, dönüşüm olunca sunucundan çağır. Adresin tamamı kampanya sayfanda hazırdır.

GET https://cleanads.ai/api/v1/postback?key=pb_KEY&click_id=CLICK_ID&event=install&value=1.50

app-ads.txt

Mobil uygulamalar için bu satırı geliştirici sitenin kök dizinindeki app-ads.txt dosyasına ekle. Yayıncı numaran uygulama sayfanda yazar.

cleanads.ai, pub-XXXXXXXXXXXXXXXX, DIRECT