Recently, I made an android app. After that, I have opened my account in AdMob and entered my app. I have got an App ID and Unit ID. For the first time, I tested my App with testing ID codes from developers.google.com. It worked well. But I have put IDs which are from AdMob in my codes. As a result, It is not displaying. Here is my Manifest.xml file

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:tools="http://schemas.android.com/tools"     package="com.example.myapp2">     <uses-permission android:name="android.permission.INTERNET" />     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />     <application         android:allowBackup="true"         android:icon="@mipmap/ic_launcher"         android:label="Lotin-Kirill Converter"         android:roundIcon="@mipmap/ic_launcher_round"         android:supportsRtl="true"         android:theme="@style/AppTheme">         <meta-data             android:name="com.google.android.gms.ads.APPLICATION_ID"             android:value="ca-app-pub-xxxxxxxxxxxxxxxx~xxxxxxxxxx"/>         <activity             android:name="com.example.myapp2.Splash"             android:screenOrientation="portrait"             tools:ignore="LockedOrientationActivity">             <intent-filter>                 <action android:name="android.intent.action.MAIN" />                 <category android:name="android.intent.category.LAUNCHER" />             </intent-filter>         </activity>         <activity             android:name="com.example.myapp2.MainActivity">         </activity>         <meta-data             android:name="preloaded_fonts"             android:resource="@array/preloaded_fonts" />     </application> </manifest> 

It is build.gradle(:app)

apply plugin: 'com.android.application' android {     compileSdkVersion 29     buildToolsVersion "29.0.3"     defaultConfig {         applicationId "com.example.myapp2"         minSdkVersion 16         targetSdkVersion 29         versionCode 1         versionName "1.0"         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"     }     buildTypes {         release {             minifyEnabled false             proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'         }     } } dependencies {     implementation fileTree(dir: 'libs', include: ['*.jar'])     implementation 'androidx.appcompat:appcompat:1.1.0'     implementation 'androidx.constraintlayout:constraintlayout:1.1.3'     implementation 'com.google.android.gms:play-services-ads:19.2.0'     testImplementation 'junit:junit:4.12'     androidTestImplementation 'androidx.test.ext:junit:1.1.1'     androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' } 

Here is MainActivity.java

package com.example.myapp2; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AppCompatActivity; import android.content.DialogInterface; import android.os.Bundle; import android.os.Handler; import android.os.StrictMode; import android.view.View; import android.webkit.WebView; import android.widget.Toast; import com.google.android.gms.ads.AdRequest; import com.google.android.gms.ads.AdSize; import com.google.android.gms.ads.AdView; import com.google.android.gms.ads.MobileAds; import com.google.android.gms.ads.initialization.InitializationStatus; import com.google.android.gms.ads.initialization.OnInitializationCompleteListener; public class MainActivity extends AppCompatActivity {     WebView view;     AdView mAdview;     @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_main);         MobileAds.initialize(this, new OnInitializationCompleteListener() {             @Override             public void onInitializationComplete(InitializationStatus initializationStatus) {             }         });         mAdview = (AdView)findViewById(R.id.adView);         AdRequest adRequest = new AdRequest.Builder().build();         mAdview.loadAd(adRequest);         StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();         StrictMode.setVmPolicy(builder.build());         view = (WebView) this.findViewById(R.id.webView);         view.getSettings().setJavaScriptEnabled(true);         view.getSettings().setDatabaseEnabled(true);         view.getSettings().setDatabasePath("/data/data/" + view.getContext().getPackageName() + "/databases/");         view.getSettings().setDomStorageEnabled(true);         view.getSettings().setLoadsImagesAutomatically(true);         view.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);         view.loadUrl("file:///android_asset/test.html");     }     boolean doubleBackToExitPressedOnce = false;     @Override     public void onBackPressed() {         if (doubleBackToExitPressedOnce) {             new AlertDialog.Builder(this)                     .setTitle("Lotin-Kirill Converter.")                     .setMessage("Dasturdan chiqmoqchimisiz?")                     .setPositiveButton("Ha",                             new DialogInterface.OnClickListener() {                                 @Override                                 public void onClick(DialogInterface dialog,                                                     int which) {                                     finish();                                 }                             }).setNegativeButton("Yo'q", null).show();             return;         }         this.doubleBackToExitPressedOnce = true;         Toast.makeText(this, "Iltimos, Dasturdan chiqish uchun yana bir marta bosing!", Toast.LENGTH_SHORT).show();         new Handler().postDelayed(new Runnable() {             @Override             public void run() {                 doubleBackToExitPressedOnce=false;             }         }, 2000);     } } 

It is activity_main.xml

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:app="http://schemas.android.com/apk/res-auto"     xmlns:tools="http://schemas.android.com/tools"     android:layout_width="fill_parent"     android:layout_height="fill_parent"     tools:context=".MainActivity">     <WebView         android:id="@+id/webView"         android:layout_width="fill_parent"         android:layout_height="fill_parent"         app:layout_constraintBottom_toBottomOf="parent"         app:layout_constraintEnd_toEndOf="parent"         app:layout_constraintStart_toStartOf="parent">     </WebView>     <com.google.android.gms.ads.AdView         android:id="@+id/adView"         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:layout_alignParentBottom="true"         android:layout_centerHorizontal="true"         app:adSize="BANNER"         app:adUnitId="ca-app-pub-xxxxxxxxxxxxxxxx/xxxxxxxxxx" /> </RelativeLayout> 

If you find my mistake, Please help me! Thank you for your attention!

I would like to implement notifications through WhatsApp API into my app. I've done lots of research but I couldn't find anything official.

Officially WhatsApp API Bussiness exists, but it is a beta version and only for companies that send massive volume of messages (1 million+). There is also Twilio, it requires a business approval and I got denied because (again) my volume requirement isn't into the millions of messages per month.

Unofficial libraries exist that potentially could get the job done. I looked into it and the one that I was contemplating seemed to be unreliable. But is this really the only way?

Since the start of pandemic I've been receiving all sorts of ads with apps that offer WhatsApp notification for orders and customer services... how are they doing it? I know they are small businesses, so there must be a way.

My app was built using JavaScript/React, any information is appreciated.

we market our App via App Install campaigns via Google Ads. Now we would like to be able to detect within our iOS (and later Android) app that a user is coming from a certain ad campaign, so we can display related content (e.g. a coupon code for all those coming from Google Ad). However, here we are faced with the challenge to recognize within the app after the installation whether the user comes from that Google Ad campaign. We have integrated the Firbase SDK, but I have not found any references here. A Campaign Link from Apple only provides the install in App Analytics, but I cannot access it in the app. What I had found so far was the following documentation: https://developers.google.com/analytics/devguides/collection/ios/v3/campaigns and some tips on how to track the campaign via GAITracker. However, this refers to the outdated Google Analytics SDK and I have already migrated to Firebase anyway. We set up a campaign as follows:

If a user now sees the advertisement and clicks on it, he will be directed to the App Store via the Google Analytics link "click.google-analytics....redirect=... ". Afterwards I would like to see in the AppDelegate if it comes over such a link. Can I take this from the URL, for example? Or is that not possible because it is routed through the App Store?

     func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any] = [:]) -> Bool {         // Get CampaignName or some identifier from the Google Ad         return true     } 

If this is not possible, would using an attribution service like Adjust or Branch.io be the solution to make this possible? What would be the flow when using such a service?

Many thanks in advance for appropriate help!

I am attempting to pull in a users account hierarchy after I've received their three credentials through Oauth access ('client_id','client_secret','refresh_token'). Google API code sample I am referring to: https://developers.google.com/adwords/api/docs/samples/python/account-management#get-the-account-hierarchy-under-the-current-account

When I attempted to do this with my own account I had signed up with, client_customer_id was not needed in the .yml file, and I was successfully able to pull in the account hierarcy. When an account that was not associated with my original email gave oauth access I received an googleads.errors.GoogleAdsServerFault: [AuthorizationError.NO_CUSTOMER_FOUND @ ].

This error went away when I included their client_customer_id manually into the yml file. I feel as though I'm in a Catch-22, I need a client_customer_id to access the client_customer_id??

So, my question is, how can I pull in the client_customer_id that will give me access to the account hierarchy?