Sermyagin

Рейтинг
37
Регистрация
11.06.2023
OlegOlegovich #:
миллион товаров
У вас миллион товаров как на ozon например?
Играть в крипту это где и как интересная тема биткоин уже на максимуме роста больше не будет? В телеграме если играть можно заработать там можно купить биткоин?
Aleksandrtut #:
Математика проще чем кажется, не нужно городить сложные закрученные вычисления.

Если рекламодатель платит 500 рублей CPM, а вебмастер получает 20 рублей CPM, то 20 x 100/500 = 4% - это доход издателя (вебмастера).
Если рекламодатель платит 500 рублей CPM, а вебмастер получает 80 рублей CPM, то 80 x 100/500 = 16% - это доход издателя (вебмастера).
Если рекламодатель платит 600 рублей CPM, а вебмастер получает 80 рублей CPM, то 20 x 100/600 = 3,33% - это доход издателя (вебмастера).
Если рекламодатель платит 600 рублей CPM, а вебмастер получает 80 рублей CPM, то 80 x 100/600 = 13,33% - это доход издателя (вебмастера).

Всё ведь очень легко проверяется, чтобы сделать вывод о том, как посредник яшка обдирает всех своих работодателей.

И вот что в справке адсенс про распределение доходов:

"При показе объявлений AdSense для контента издатели получают 80 % дохода после вычета комиссии со стороны рекламной платформы. Это может быть как Google, так и сторонняя платформа. Так, если рекламодатели оплачивают показ медийных объявлений в AdSense через Google Рекламу, издателям причитается около 68 % дохода. AdSense выплачивает издателям эффективную цену за тысячу показов за ставки рекламодателей."

В Admob помню было 3000 показов и заработок 20 долларов а тут 10000 показов и заработок 10 долларов. Почему так? Рекламодатели богаче в других странах?

Найми 100 людей и все делается вручную...
Сегодня побил рекорд заработок 1к! Прибыльное дело а если было бы ИП с крутыми программистами?
Genius Ideaing #:

прогноз погоды, курсы валют, драг металлов...... стандартно....

сервисы - подписаться на ваши же новости.... 

поискать по ключевым словам на сайте....

да особо не придумаешь.... 

Это уже есть...

package com;

import androidx.multidex.MultiDexApplication;
import com.yandex.mobile.ads.common.MobileAds;

public class MyApplication extends MultiDexApplication {

@Override
public void onCreate() {
super.onCreate();

// Check if the ad-free status is set
boolean isAdFree = getSharedPreferences(KEY.SHARED_PREFERENCES_PURCHASES, MODE_PRIVATE)
.getBoolean(KEY.IS_ADFREE_KEY, false);

if (!isAdFree) {
// Initialize Yandex Mobile Ads SDK only if not ad-free
MobileAds.initialize(this, () -> {});
}
}
}

вот код 

package com.view.ads;

import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Handler;
import android.util.DisplayMetrics;
import android.view.View;
import android.widget.RelativeLayout;

import com.KEY;
import com.R;
import com.yandex.mobile.ads.common.AdRequest;
import com.yandex.mobile.ads.banner.BannerAdSize;
import com.yandex.mobile.ads.banner.BannerAdView;
import com.yandex.mobile.ads.common.InitializationListener;

import java.util.Timer;
import java.util.TimerTask;

public class MyAdsController {

private static Timer bannerRefreshTimer;
private static Handler handler = new Handler();
private static Runnable networkCheckRunnable;

// Define the InitializationListener
private static final InitializationListener initializationListener = new InitializationListener() {
@Override
public void onInitializationCompleted() {
// Empty implementation, no specific actions required.
}

// @Override
// public void onInitializationFailed(String error) {
// Add your code here for what to do when initialization fails.
// }
};

public static void setAdsVisibility(Activity activity) {
SharedPreferences sharedPreferences = activity.getSharedPreferences(KEY.SHARED_PREFERENCES_PURCHASES, Context.MODE_PRIVATE);
boolean isAdFree = sharedPreferences.getBoolean(KEY.IS_ADFREE_KEY, false);

RelativeLayout adContainer = activity.findViewById(R.id.adView_container);
if (isAdFree) {
// Hide the ad container if the user has purchased an ad-free version
adContainer.setVisibility(View.GONE);
} else {
// Show the ad container otherwise
adContainer.setVisibility(View.VISIBLE);
// Load and display ads if visible
showBannerAds(activity);
}
}

public static void handleInterstitialAds(final Activity activity) {
// Your code to handle interstitial ads
}

public static void showBannerAds(final Activity activity) {
RelativeLayout layout = activity.findViewById(R.id.adView_container);
if (layout != null) {
BannerAdView adView = new BannerAdView(activity);
BannerAdSize adSize = getAdSize(activity);
adView.setAdSize(adSize);
adView.setAdUnitId("R-M-2631210-1"); // Set your ad unit ID

layout.removeAllViews(); // Clear previous ads if any
layout.addView(adView);
adView.loadAd(getAdRequest());

startBannerRefreshTimer(activity, adView);
}
}

private static AdRequest getAdRequest() {
return new AdRequest.Builder().build();
}

private static BannerAdSize getAdSize(Context context) {
DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
int screenWidth = displayMetrics.widthPixels;

// Set the banner height manually (e.g., 50dp)
int bannerHeightDp = 45;
int bannerHeightPx = (int) (bannerHeightDp * displayMetrics.density);
return BannerAdSize.inlineSize(context, screenWidth, bannerHeightPx);
}

private static void startBannerRefreshTimer(final Activity activity, final BannerAdView adView) {
if (bannerRefreshTimer != null) {
stopBannerRefreshTimer();
}

bannerRefreshTimer = new Timer();
bannerRefreshTimer.schedule(new TimerTask() {
@Override
public void run() {
activity.runOnUiThread(() -> refreshBanner(adView));
}
}, 31000, 31000); // Refresh every 31 seconds
}

private static void refreshBanner(BannerAdView adView) {
adView.loadAd(getAdRequest());
}

public static void stopBannerRefreshTimer() {
if (bannerRefreshTimer != null) {
bannerRefreshTimer.cancel();
bannerRefreshTimer = null;
}
}

public static void releaseAdsCallbacks() {
stopBannerRefreshTimer();
}

public static void releaseAds_Callbacks() {
if (handler != null) {
handler.removeCallbacksAndMessages(null);
}
}

public static void listenNetworkChangeToRequestAdsFull(Activity activity) {
if (networkCheckRunnable == null) {
networkCheckRunnable = new RCheckNetworkLoadAdsInterstitial(activity);
}

handler.post(networkCheckRunnable);
}

static class RCheckNetworkLoadAdsInterstitial implements Runnable {
private final Activity activity;

public RCheckNetworkLoadAdsInterstitial(Activity activity) {
this.activity = activity;
}

@Override
public void run() {
if (CheckInternet.isNetworkAvailable(activity)) {
setAdsVisibility(activity);
}

handler.postDelayed(this, 31000); // Check network status every 31 seconds
}
}
}

и xml 

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_alignParentBottom="true"
android:layout_gravity="bottom|center"
android:background="#ffffff"
android:orientation="vertical">



<RelativeLayout
android:id="@+id/adView_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
></RelativeLayout>


</LinearLayout>

во всем приложении баннер внизу обновление каждые 31 секунд.

Посмотри на стату баннера 
50 049 запросов
5 618 показов

У меня вопрос почему такой коэффициент!

Помню первый сайт делал на нем с доменом верхнего уровня лет 15 назад потом узнал про рег.ру и ушёл оттуда. 
Я использую chatgpt.com волне справляется с 500 строками больше пока не нужно... Если нужно больше тогда уже лучше нанять фрилансера профессионального.
Всего: 250