GFW-knocker / MahsaNG

a V2RayNG with Fragment , DoH , Rotating Configs , & free VPN servers
GNU General Public License v3.0
1.71k stars 203 forks source link

نمایش تبلیغ ادموب برای اهداکنندگان #27

Open rezaafz opened 7 months ago

rezaafz commented 7 months ago

سلام. مساله‌ای که برای اهدا کانفیگ وجود داره اینه که الان اپ مهسا در گوکل پلی هست و همه از همه جای دنیا میتونن از این اپ رایگان استفاده کنند. خب این به طور کلی خوبه ولی بعضی از خیرین شاید بخوان پولی که هزینه میکنن فقط برای ایرانی ها قابل اسفاده باشه. (به خاطر محدودیت بودجه) نمیگم اپ رو برای خارجی ها ببندین! ولی بهترین راهکار همینه که اهداکننده بتونه تبلیغ ادموب رو در اپ نمایش بده تا با استفاده همه‌ی کاربرها، اعم از ایرانی یا خارجی هزینه‌هاش رو تامین کنه(قبلا اضافه شدن این قابلیت در گروه تلگرام مطرح شده). علاوه بر این، حتما اهداکننده های بیشتری حتی خارج از ایران هم، کانفیگ ارسال میکنند. و با افزایش کاربرها دغدغه ی افزایش ظرفیت رو نخواهیم داشت.. به نظرم پیاده سازی این فیچر کار سختی نیست! نظرتون چیه؟

GFW-knocker commented 6 months ago

@rezaafz

با درود سمت سرور میتونیم تعیین کنیم کانفیگ ها به کجا داده بشه اصولا منطقه ای توزیع میشه درباره اد موب هم فکر میکنیم اگر راه های دیگه جواب نده مشکل اینه که نمیخوایم ما واسطه انتقال پول باشیم داریم فکر میکنیم و حمایت از کانفیگ سازا اولویت اولمون هست

rezaafz commented 6 months ago

درود بر شما. واقعیت اینه که خواهش التماس از کاربرها برای عضویت در کانال اهداکننده ها اصلا راهکار کارامدی نیست و به هیچ وجه منبع درامد قابل تجهی برای کانفیگ سازها نخواهد بود. این رو در نظر بگیرید که بیشتر کانفیگ سازها (مثل من) حتی کانالی برای تبلیغ ندارند. هدف اصلی از ادموب همینه که اهداکننده ها بتونن حداقل هزینه هاشون رو تامین کنند تا به کاربرهای بیشتری سرویس بدند. برای ادموب نیازی نیست شما واسطه انتقال پول باشید. من کدنویسی بلد نیستم ولی از GPT-4 خواستم، کدی که بشه باهاش تبلیغات رو برای هر اهداکننده کانفیگ جداگانه نمایش داده بشه برای من تهیه کنه. به این صورت که اهدا کننده در گوگل ادموب ثبت نام کنه و ad unit id خودش رو دریافت کنه و برای تیم مهسا ارسال کنه. زمانی که کاربر به کانفیگ مورد نظر متصل شد. MahsaNG بیاد Ad unit id اهداکننده رو از یک external source بخونه و تبلیغ اهداکننده رو برای کاربر نشون بده. این توضیحات و کدی هست که چت بات phind (GPT-4) برای درخواست من داد.

To add Adobe advertising code to your MahsaNG app, you need to fetch the Ad unit ID from an external source and use it to load the ad. Here's how you can do it in Kotlin and Java.

First, add the Google Mobile Ads SDK to your project. Open your project's build.gradle file (Project-level) and add the following line to the dependencies section:

implementation 'com.google.android.gms:play-services-ads:20.4.0'

Next, add the following lines to your project's AndroidManifest.xml file:


<manifest ...>
   <application ...>
       ...
       <meta-data
           android:name="com.google.android.gms.ads.APPLICATION_ID"
           android:value="YOUR_ADMOB_APP_ID"/>
       ...
   </application>
</manifest>

Replace "YOUR_ADMOB_APP_ID" with the actual App ID from your AdMob account.

To integrate a banner ad in your application, add the following code to your activity's XML layout:


<com.google.android.gms.ads.AdView
   xmlns:ads="http://schemas.android.com/apk/res-auto"
   android:id="@+id/adView"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_centerHorizontal="true"
   android:layout_alignParentBottom="true"
   ads:adSize="BANNER"
   ads:adUnitId="YOUR_ADMOB_AD_UNIT_ID">
</com.google.android.gms.ads.AdView>

Replace "YOUR_ADMOB_AD_UNIT_ID" with your actual Ad Unit ID from your AdMob account. Next, add the following code to your activity's Kotlin file:

import com.google.android.gms.ads.AdRequest
import com.google.android.gms.ads.AdView

// ...

private lateinit var mAdView: AdView

override fun onCreate(savedInstanceState: Bundle?) {
   super.onCreate(savedInstanceState)
   setContentView(R.layout.activity_main)

   // Initialize Mobile Ads SDK
   MobileAds.initialize(this) {}

   // Load Banner Ad
   mAdView = findViewById(R.id.adView)
   val adRequest = AdRequest.Builder().build()
   mAdView.loadAd(adRequest)
}

To fetch the Ad unit ID from an external source, you can use the Retrofit library to make a network request to the specific link you mentioned. Here's an example of how you can do it:

First, define your API interface:

interface ApiService {
   @GET("ad_unit_id_endpoint")
   fun getAdUnitId(): Call<String>
}

Replace "ad_unit_id_endpoint" with the actual endpoint to fetch the Ad unit ID.

Then, create a Retrofit instance:

val retrofit = Retrofit.Builder()
   .baseUrl("https://your-api-base-url.com/")
   .addConverterFactory(GsonConverterFactory.create())
   .build()

val apiService = retrofit.create(ApiService::class.java)

Replace "https://your-api-base-url.com/" with the actual base URL of your API.

Finally, make a network request to fetch the Ad unit ID:

apiService.getAdUnitId().enqueue(object : Callback<String> {
   override fun onResponse(call: Call<String>, response: Response<String>) {
       if (response.isSuccessful) {
           val adUnitId = response.body()
           mAdView.adUnitId = adUnitId
           val adRequest = AdRequest.Builder().build()
           mAdView.loadAd(adRequest)
       }
   }

   override fun onFailure(call: Call<String>, t: Throwable) {
       // Handle the error
   }
})

Replace "ad_unit_id_endpoint" with the actual endpoint to fetch the Ad unit ID.

This way, you can fetch a unique Ad unit ID from an external source and use it to load the ad in your app.

@rezaafz

با درود سمت سرور میتونیم تعیین کنیم کانفیگ ها به کجا داده بشه اصولا منطقه ای توزیع میشه درباره اد موب هم فکر میکنیم اگر راه های دیگه جواب نده مشکل اینه که نمیخوایم ما واسطه انتقال پول باشیم داریم فکر میکنیم و حمایت از کانفیگ سازا اولویت اولمون هست

GFW-knocker commented 6 months ago

@rezaafz

مرسی از پیشنهاد شما حتما پرس و جو میکنم که آیا admob هرکس میتونه دریافت کنه یا نیاز داره اپ اپلود کرده باشه فعلا در قدم اول در حال تهیه صفحه ای هستیم که حساب کریپتو اهداکننده ها رو نشون بده برا دونیت قدم بعدی فراهم کردن بستر تبلیغاتی برا اهدا کننده ها هست مثلا یوتیوب فرد دیگری رو تبلیغ کنن و در مقابل هزینه سرور رو ازش دریافت کنن اگر این روش ها جواب نداد از admob هم کمک میگیریم