āĻļ⧁āϰ⧁ āĻ•āϰ⧁āύ


āĻāχ āύāĻŋāĻ°ā§āĻĻ⧇āĻļāĻŋāĻ•āĻžāϟāĻŋ āĻĒā§āϰāĻ•āĻžāĻļāĻ•āĻĻ⧇āϰ āϜāĻ¨ā§āϝ āϝāĻžāϰāĻž Firebase āĻŦā§āϝāĻŦāĻšāĻžāϰ āύāĻž āĻ•āϰ⧇ AdMob-āĻāϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āĻāĻ•āϟāĻŋ C++ āĻ…ā§āϝāĻžāĻĒ āύāĻ—āĻĻā§€āĻ•āϰāĻŖ āĻ•āϰāϤ⧇ āϚāĻžāύāĨ¤ āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āφāĻĒāύāĻžāϰ āĻ…ā§āϝāĻžāĻĒ⧇ Firebase āĻ…āĻ¨ā§āϤāĻ°ā§āϭ⧁āĻ•ā§āϤ āĻ•āϰāĻžāϰ āĻĒāϰāĻŋāĻ•āĻ˛ā§āĻĒāύāĻž āĻ•āϰ⧇āĻ¨â€”āĻ…āĻĨāĻŦāĻž āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻāϟāĻŋ āĻŦāĻŋāĻŦ⧇āϚāύāĻž āĻ•āϰāϛ⧇āĻ¨â€”āϤāĻžāϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ āĻāχ āĻ—āĻžāχāĻĄā§‡āϰ Firebase āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ āϏāĻš AdMob āĻĻ⧇āϖ⧁āύāĨ¤

āĻāĻ•āϟāĻŋ āĻ…ā§āϝāĻžāĻĒ⧇ Google āĻŽā§‹āĻŦāĻžāχāϞ āĻŦāĻŋāĻœā§āĻžāĻžāĻĒāύ C++ SDK āϏāĻ‚āĻšāϤ āĻ•āϰāĻž āĻšāϞ āĻŦāĻŋāĻœā§āĻžāĻžāĻĒāύ āĻĒā§āϰāĻĻāĻ°ā§āĻļāύ āĻāĻŦāĻ‚ āωāĻĒāĻžāĻ°ā§āϜāύ⧇āϰ āĻĻāĻŋāϕ⧇ āĻĒā§āϰāĻĨāĻŽ āϧāĻžāĻĒāĨ¤ āĻāĻ•āĻŦāĻžāϰ āφāĻĒāύāĻŋ SDK āϏāĻ‚āĻšāϤ āĻ•āϰāĻžāϰ āĻĒāϰ⧇, āφāĻĒāύāĻŋ āĻāĻ•āϟāĻŋ āĻŦāĻŋāĻœā§āĻžāĻžāĻĒāύ āĻĢāĻ°ā§āĻŽā§āϝāĻžāϟ āĻŦ⧇āϛ⧇ āύāĻŋāϤ⧇ āĻĒāĻžāϰ⧇āύ, āϝ⧇āĻŽāύ āχāĻ¨ā§āϟāĻžāϰāĻ¸ā§āϟāĻŋāĻļāĻŋāϝāĻŧāĻžāϞ āĻŦāĻž āĻĒ⧁āϰāĻ¸ā§āĻ•ā§ƒāϤ, āĻāĻŦāĻ‚ āĻāϟāĻŋ āĻŦāĻžāĻ¸ā§āϤāĻŦāĻžāϝāĻŧāύ⧇āϰ āϜāĻ¨ā§āϝ āĻĒāĻĻāĻ•ā§āώ⧇āĻĒāϗ⧁āϞāĻŋ āĻ…āύ⧁āϏāϰāĻŖ āĻ•āϰ⧁āύ⧎

Google āĻŽā§‹āĻŦāĻžāχāϞ āĻŦāĻŋāĻœā§āĻžāĻžāĻĒāύ C++ SDK Google āĻŽā§‹āĻŦāĻžāχāϞ āĻŦāĻŋāĻœā§āĻžāĻžāĻĒāύ iOS āĻāĻŦāĻ‚ Android SDK āϗ⧁āϞāĻŋāϕ⧇ āĻŽā§‹āĻĄāĻŧāĻžāύ⧋, āĻāĻŦāĻ‚ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āϏ⧇āχ āĻĒā§āĻ˛ā§āϝāĻžāϟāĻĢāĻ°ā§āĻŽāϗ⧁āϞāĻŋāϤ⧇ āωāĻĒāϞāĻŦā§āϧāĨ¤ Google āĻŽā§‹āĻŦāĻžāχāϞ āĻŦāĻŋāĻœā§āĻžāĻžāĻĒāύ C++ SDK āĻ…ā§āϝāĻžāϏāĻŋāĻ™ā§āĻ•ā§āϰ⧋āύāĻžāϏ āĻ•ā§āϰāĻŋāϝāĻŧāĻžāĻ•āϞāĻžāĻĒāϗ⧁āϞāĻŋāϕ⧇ āϏāĻŽāĻ°ā§āĻĨāύ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ Firebase C++ āĻ—āĻ āύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇, āϤāĻžāχ āĻāϟāĻŋ firebase::gma āύāĻžāĻŽāĻ¸ā§āĻĨāĻžāύ⧇ āĻĨāĻžāϕ⧇āĨ¤

āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻĒā§āϰāĻĨāĻŽāĻŦāĻžāϰ āĻāχ āύāĻŋāĻ°ā§āĻĻ⧇āĻļāĻŋāĻ•āĻžāϟāĻŋ āĻĻ⧇āϖ⧇ āĻĨāĻžāϕ⧇āύ, āϤāĻžāĻšāϞ⧇ āφāĻŽāϰāĻž āϏ⧁āĻĒāĻžāϰāĻŋāĻļ āĻ•āϰāĻ›āĻŋ āϝ⧇ āφāĻĒāύāĻŋ Google āĻŽā§‹āĻŦāĻžāχāϞ āĻŦāĻŋāĻœā§āĻžāĻžāĻĒāύ C++ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ…ā§āϝāĻžāĻĒ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻĄāĻžāωāύāϞ⧋āĻĄ āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ āĻ…āύ⧁āϏāϰāĻŖ āĻ•āϰ⧁āύāĨ¤

āĻĒā§‚āĻ°ā§āĻŦāĻļāĻ°ā§āϤ

āĻ…ā§āϝāĻžāĻ¨ā§āĻĄā§āϰāϝāĻŧ⧇āĻĄ

  • āĻ…ā§āϝāĻžāĻ¨ā§āĻĄā§āϰāϝāĻŧ⧇āĻĄ āĻ¸ā§āϟ⧁āĻĄāĻŋāĻ“ 3.2 āĻŦāĻž āωāĻšā§āϚāϤāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ
  • āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰ⧁āύ āϝ⧇ āφāĻĒāύāĻžāϰ āĻ…ā§āϝāĻžāĻĒ⧇āϰ āĻŦāĻŋāĻ˛ā§āĻĄ āĻĢāĻžāχāϞ āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āĻŽāĻžāύāϗ⧁āϞāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇:
    • 16 āĻŦāĻž āωāĻšā§āϚāϤāϰ āĻāĻ•āϟāĻŋ minSdkVersion
    • 28 āĻŦāĻž āωāĻšā§āϚāϤāϰ āĻāĻ•āϟāĻŋ compileSdkVersion

iOS

  • Xcode 13 āĻŦāĻž āωāĻšā§āϚāϤāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ
  • āϞāĻ•ā§āĻˇā§āϝ iOS 10.0 āĻŦāĻž āωāĻšā§āϚāϤāϰ

āφāĻĒāύāĻžāϰ AdMob āĻ…ā§āϝāĻžāĻ•āĻžāωāĻ¨ā§āĻŸā§‡ āφāĻĒāύāĻžāϰ āĻ…ā§āϝāĻžāĻĒ āϏ⧇āϟ āφāĻĒ āĻ•āϰ⧁āύ

āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āϧāĻžāĻĒāϗ⧁āϞāĻŋ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻ•āϰ⧇ āφāĻĒāύāĻžāϰ āĻ…ā§āϝāĻžāĻĒāϟāĻŋāϕ⧇ āĻāĻ•āϟāĻŋ AdMob āĻ…ā§āϝāĻžāĻĒ āĻšāĻŋāϏ⧇āĻŦ⧇ āύāĻŋāĻŦāĻ¨ā§āϧāύ āĻ•āϰ⧁āύ:

  1. āĻāĻ•āϟāĻŋ AdMob āĻ…ā§āϝāĻžāĻ•āĻžāωāĻ¨ā§āĻŸā§‡ āϏāĻžāχāύ āχāύ āĻ•āϰ⧁āύ āĻŦāĻž āϏāĻžāχāύ āφāĻĒ āĻ•āϰ⧁āύ ⧎

  2. AdMob-āĻāϰ āϏāĻžāĻĨ⧇ āφāĻĒāύāĻžāϰ āĻ…ā§āϝāĻžāĻĒ āύāĻŋāĻŦāĻ¨ā§āϧāύ āĻ•āϰ⧁āύ āĨ¤ āĻāχ āĻĒāĻĻāĻ•ā§āώ⧇āĻĒāϟāĻŋ āĻāĻ•āϟāĻŋ āĻ…āύāĻ¨ā§āϝ AdMob āĻ…ā§āϝāĻžāĻĒ āφāχāĻĄāĻŋ āϏāĻš āĻāĻ•āϟāĻŋ AdMob āĻ…ā§āϝāĻžāĻĒ āϤ⧈āϰāĻŋ āĻ•āϰ⧇ āϝāĻž āĻĒāϰāĻŦāĻ°ā§āϤ⧀āϤ⧇ āĻāχ āύāĻŋāĻ°ā§āĻĻ⧇āĻļāĻŋāĻ•āĻžāϝāĻŧ āĻĒā§āϰāϝāĻŧā§‹āϜāύāĨ¤

Google āĻŽā§‹āĻŦāĻžāχāϞ āĻŦāĻŋāĻœā§āĻžāĻžāĻĒāύ C++ SDK āχāύāĻ¸ā§āϟāϞ āĻ•āϰ⧁āύ

āϝ⧇āĻšā§‡āϤ⧁ Google āĻŽā§‹āĻŦāĻžāχāϞ āĻŦāĻŋāĻœā§āĻžāĻžāĻĒāύ C++ SDK firebase::gma āύāĻžāĻŽāĻ¸ā§āĻĨāĻžāύ⧇ āĻĨāĻžāϕ⧇, āϤāĻžāχ Firebase C++ SDK āĻĄāĻžāωāύāϞ⧋āĻĄ āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ āϤāĻžāϰāĻĒāϰ āφāĻĒāύāĻžāϰ āĻĒāĻ›āĻ¨ā§āĻĻ⧇āϰ āĻāĻ•āϟāĻŋ āĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋāϤ⧇ āφāύāϜāĻŋāĻĒ āĻ•āϰ⧁āύāĨ¤

Firebase C++ SDK āĻĒā§āĻ˛ā§āϝāĻžāϟāĻĢāĻ°ā§āĻŽ-āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āύāϝāĻŧ, āϤāĻŦ⧇ āĻāϟāĻŋāϰ āϜāĻ¨ā§āϝ āĻĒā§āĻ˛ā§āϝāĻžāϟāĻĢāĻ°ā§āĻŽ-āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āĻĒā§āϰāϝāĻŧā§‹āϜāύāĨ¤

āĻ…ā§āϝāĻžāĻ¨ā§āĻĄā§āϰāϝāĻŧ⧇āĻĄ

āφāĻŽāϰāĻž CMake āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āĻĒāϰāĻžāĻŽāĻ°ā§āĻļ āĻĻāĻŋāχ, āĻ•āĻŋāĻ¨ā§āϤ⧁ āφāĻĒāύāĻŋ āφāĻĒāύāĻžāϰ āĻ…ā§āϝāĻžāĻĒ⧇ libfirebase_app.a āĻāĻŦāĻ‚ libfirebase_gma.a āϞāĻŋāĻ™ā§āĻ• āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āφāĻŽāĻžāĻĻ⧇āϰ āϏāĻžāϧāĻžāϰāĻŖ Firebase C++ SDK āĻļ⧁āϰ⧁ āĻ•āϰ⧁āύ āĻ—āĻžāχāĻĄā§‡ ndk-āĻŦāĻŋāĻ˛ā§āĻĄā§‡āϰ āύāĻŋāĻ°ā§āĻĻ⧇āĻļāĻžāĻŦāϞ⧀ āĻĒ⧇āϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤

  1. āφāĻĒāύāĻžāϰ āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇āϰ gradle.properties āĻĢāĻžāχāϞ⧇, āφāύāϜāĻŋāĻĒ āĻ•āϰāĻž SDK-āĻāϰ āĻ…āĻŦāĻ¸ā§āĻĨāĻžāύ āωāĻ˛ā§āϞ⧇āĻ– āĻ•āϰ⧁āύ:

    systemProp.firebase_cpp_sdk.dir=FULL_PATH_TO_SDK
    
  2. āφāĻĒāύāĻžāϰ āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇āϰ settings.gradle āĻĢāĻžāχāϞ⧇, āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āĻŦāĻŋāώāϝāĻŧāĻŦāĻ¸ā§āϤ⧁ āϝ⧋āĻ— āĻ•āϰ⧁āύ:

    def firebase_cpp_sdk_dir = System.getProperty('firebase_cpp_sdk.dir')
    
    gradle.ext.firebase_cpp_sdk_dir = "$firebase_cpp_sdk_dir"
    includeBuild "$firebase_cpp_sdk_dir"
    
  3. āφāĻĒāύāĻžāϰ āĻŽāĻĄāĻŋāωāϞ⧇ (āĻ…ā§āϝāĻžāĻĒ-āϞ⧇āϭ⧇āϞ) āĻ—ā§āϰ⧇āĻĄāϞ āĻĢāĻžāχāĻ˛â€”āϏāĻžāϧāĻžāϰāĻŖāϤ app/build.gradle — āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āĻŦāĻŋāώāϝāĻŧāĻŦāĻ¸ā§āϤ⧁ āϝ⧋āĻ— āĻ•āϰ⧁āύ, āϝāĻžāϰ āĻŽāĻ§ā§āϝ⧇ Google āĻŽā§‹āĻŦāĻžāχāϞ āĻŦāĻŋāĻœā§āĻžāĻžāĻĒāύ C++ SDK-āĻāϰ āϜāĻ¨ā§āϝ āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋ āύāĻŋāĻ°ā§āĻ­āϰāϤāĻž āϰāϝāĻŧ⧇āϛ⧇āĨ¤

    android.defaultConfig.externalNativeBuild.cmake {
      arguments "-DFIREBASE_CPP_SDK_DIR=$gradle.firebase_cpp_sdk_dir"
    }
    
    # Add the dependency for the Google Mobile Ads C++ SDK
    apply from: "$gradle.firebase_cpp_sdk_dir/Android/firebase_dependencies.gradle"
    firebaseCpp.dependencies {
      gma
    }
    
  4. āφāĻĒāύāĻžāϰ āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇āϰ CMakeLists.txt āĻĢāĻžāχāϞ⧇, āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āĻŦāĻŋāώāϝāĻŧāĻŦāĻ¸ā§āϤ⧁ āϝ⧋āĻ— āĻ•āϰ⧁āύāĨ¤

    # Add Firebase libraries to the target using the function from the SDK.
    add_subdirectory(${FIREBASE_CPP_SDK_DIR} bin/ EXCLUDE_FROM_ALL)
    
    # Add the Google Mobile Ads C++ SDK.
    
    # The Firebase C++ library `firebase_app` is required,
    # and it must always be listed last.
    
    set(firebase_libs
      firebase_gma
      firebase_app
    )
    
    target_link_libraries(${target_name} "${firebase_libs}")
    
  5. āϏāĻŽāĻ¸ā§āϤ āύāĻŋāĻ°ā§āĻ­āϰāϤāĻžāϗ⧁āϞāĻŋāϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ āϰāϝāĻŧ⧇āϛ⧇ āϤāĻž āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰāϤ⧇ āφāĻĒāύāĻžāϰ āĻ…ā§āϝāĻžāĻĒ āϏāĻŋāĻ™ā§āĻ• āĻ•āϰ⧁āύāĨ¤

iOS

āĻāχ āĻŦāĻŋāĻ­āĻžāϗ⧇āϰ āϧāĻžāĻĒāϗ⧁āϞāĻŋ āφāĻĒāύāĻžāϰ iOS āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇ Google āĻŽā§‹āĻŦāĻžāχāϞ āĻŦāĻŋāĻœā§āĻžāĻžāĻĒāύ C++ SDK āϝ⧋āĻ— āĻ•āϰāĻžāϰ āĻāĻ•āϟāĻŋ āωāĻĻāĻžāĻšāϰāĻŖāĨ¤

  1. āϚāĻžāϞāĻžāύ⧋āϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ CocoaPods āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1 āĻŦāĻž āϤāĻžāϰ āĻĒāϰ⧇ āĻĒāĻžāύ:

    sudo gem install cocoapods --pre
  2. āφāύāϜāĻŋāĻĒ āĻ•āϰāĻž SDK āĻĨ⧇āϕ⧇ Google āĻŽā§‹āĻŦāĻžāχāϞ āĻŦāĻŋāĻœā§āĻžāĻžāĻĒāύ āĻĒāĻĄ āϝ⧋āĻ— āĻ•āϰ⧁āύāĨ¤

    1. āφāĻĒāύāĻžāϰ āϝāĻĻāĻŋ āχāϤāĻŋāĻŽāĻ§ā§āϝ⧇ āĻāĻ•āϟāĻŋ āύāĻž āĻĨāĻžāϕ⧇ āϤāĻŦ⧇ āĻāĻ•āϟāĻŋ āĻĒāĻĄāĻĢāĻžāχāϞ āϤ⧈āϰāĻŋ āĻ•āϰ⧁āύ:

      cd APP_DIRECTORY
      pod init
    2. āφāĻĒāύāĻžāϰ āĻĒāĻĄāĻĢāĻžāχāϞ⧇, Google āĻŽā§‹āĻŦāĻžāχāϞ āĻŦāĻŋāĻœā§āĻžāĻžāĻĒāύ C++ SDK, Google āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀ āĻŽā§‡āϏ⧇āϜāĻŋāĻ‚ āĻĒā§āĻ˛ā§āϝāĻžāϟāĻĢāĻ°ā§āĻŽ SDK āĻāĻŦāĻ‚ āĻ¨ā§āϝ⧂āύāϤāĻŽ āĻĢāĻžāϝāĻŧāĻžāϰāĻŦ⧇āϏ āϕ⧋āϰ SDK (GMA C++ SDK-āĻāϰ āϜāĻ¨ā§āϝ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧ): āĻāϰ āϜāĻ¨ā§āϝ āĻĒāĻĄāϗ⧁āϞāĻŋ āϝ⧋āĻ— āĻ•āϰ⧁āύ:

      pod 'Firebase/CoreOnly'
      pod 'Google-Mobile-Ads-SDK'
      pod 'GoogleUserMessagingPlatform'
      
    3. āĻĒāĻĄ āχāύāĻ¸ā§āϟāϞ āĻ•āϰ⧁āύ, āϤāĻžāϰāĻĒāϰ Xcode-āĻ .xcworkspace āĻĢāĻžāχāϞāϟāĻŋ āϖ⧁āϞ⧁āύāĨ¤

      pod install
      open APP.xcworkspace
    4. Firebase C++ SDK āĻĨ⧇āϕ⧇ āĻĒā§āϰāĻœā§‡āĻ•ā§āĻŸā§‡ āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āĻĢā§āϰ⧇āĻŽāĻ“āϝāĻŧāĻžāĻ°ā§āĻ• āϝ⧋āĻ— āĻ•āϰ⧁āύ:

      • xcframeworks/firebase.xcframework
      • xcframeworks/firebase_gma.xcframework

āφāĻĒāύāĻŋ āϏāĻŦ āĻĒā§āϰāĻ¸ā§āϤ⧁āϤ! āφāĻĒāύāĻžāϰ C++ āĻ…ā§āϝāĻžāĻĒāϟāĻŋ āĻ…āĻ¨ā§āϝ āϕ⧋āύ⧋ āĻĢāĻžāϝāĻŧāĻžāϰāĻŦ⧇āϏ āĻĒāϰāĻŋāώ⧇āĻŦāĻž āĻ›āĻžāĻĄāĻŧāĻžāχ Google āĻŽā§‹āĻŦāĻžāχāϞ āĻŦāĻŋāĻœā§āĻžāĻžāĻĒāύ C++ SDK āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤

āφāĻĒāύāĻžāϰ āĻ…ā§āϝāĻžāĻĒ⧇āϰ AdMob āĻ…ā§āϝāĻžāĻĒ āφāχāĻĄāĻŋ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰ⧁āύ

āĻ…ā§āϝāĻžāĻ¨ā§āĻĄā§āϰāϝāĻŧ⧇āĻĄ

āĻŽā§‹āĻŦāĻžāχāϞ āĻŦāĻŋāĻœā§āĻžāĻžāĻĒāύ SDK āĻ…ā§āϝāĻžāĻ¨ā§āĻĄā§āϰāϝāĻŧ⧇āĻĄ āĻ—āĻžāχāĻĄ āĻĻā§āĻŦāĻžāϰāĻž āĻŦāĻ°ā§āĻŖāĻŋāϤ āφāĻĒāύāĻžāϰ āĻ…ā§āϝāĻžāĻĒ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰāĻžāϰ āϧāĻžāĻĒ 3 āĻ…āύ⧁āϏāϰāĻŖ āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ āϤāĻžāϰāĻĒāϰ⧇ āĻāχ āĻĒ⧃āĻˇā§āĻ āĻžāϝāĻŧ āĻĢāĻŋāϰ⧇ āφāϏ⧁āύāĨ¤

iOS

āĻŽā§‹āĻŦāĻžāχāϞ āĻŦāĻŋāĻœā§āĻžāĻžāĻĒāύ SDK iOS āĻ—āĻžāχāĻĄ āĻĻā§āĻŦāĻžāϰāĻž āĻŦāĻ°ā§āĻŖāĻŋāϤ āφāĻĒāύāĻžāϰ Info.plist āφāĻĒāĻĄā§‡āϟ āĻ•āϰ⧁āύ āϧāĻžāĻĒ āĻ…āύ⧁āϏāϰāĻŖ āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ āϤāĻžāϰāĻĒāϰ⧇ āĻāχ āĻĒ⧃āĻˇā§āĻ āĻžāϝāĻŧ āĻĢāĻŋāϰ⧇ āφāϏ⧁āύāĨ¤

Google āĻŽā§‹āĻŦāĻžāχāϞ āĻŦāĻŋāĻœā§āĻžāĻžāĻĒāύ SDK āĻļ⧁āϰ⧁ āĻ•āϰ⧁āύ⧎

āĻŦāĻŋāĻœā§āĻžāĻžāĻĒāύ āϞ⧋āĻĄ āĻ•āϰāĻžāϰ āφāϗ⧇, āφāĻĒāύāĻžāϰ āĻ…ā§āϝāĻžāĻĒāϟāĻŋāϕ⧇ firebase::gma::Initialize() āĻ•āϞ āĻ•āϰ⧇ Google Mobile Ads C++ SDK āϚāĻžāϞ⧁ āĻ•āϰāϤ⧇ āĻŦāϞ⧁āύ āϝāĻž SDK-āϕ⧇ āφāϰāĻŽā§āĻ­ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āĻāĻ•āϟāĻŋ firebase::Future āϏāĻŽā§āĻĒāĻ¨ā§āύ āĻšāϞ⧇ (āĻŦāĻž 30-āϏ⧇āϕ⧇āĻ¨ā§āĻĄā§‡āϰ āϟāĻžāχāĻŽāφāωāĻŸā§‡āϰ āĻĒāϰ⧇)āĨ¤ āĻāϟāĻŋ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻāĻ•āĻŦāĻžāϰ āĻ•āϰāĻž āĻĻāϰāĻ•āĻžāϰ, āφāĻĻāĻ°ā§āĻļāĻ­āĻžāĻŦ⧇ āĻ…ā§āϝāĻžāĻĒ āϞāĻžā§āĻšā§‡āϰ āϏāĻŽāϝāĻŧāĨ¤

Initialize() āĻ āĻ•āϞ āĻ•āϰāĻžāϰ āĻĒāϰ⧇ Google āĻŽā§‹āĻŦāĻžāχāϞ āĻŦāĻŋāĻœā§āĻžāĻžāĻĒāύ C++ SDK āĻŦāĻž āĻŽāĻ§ā§āϝāĻ¸ā§āĻĨāϤāĻž āĻ…āĻ‚āĻļā§€āĻĻāĻžāϰ SDK āĻĻā§āĻŦāĻžāϰāĻž āĻŦāĻŋāĻœā§āĻžāĻžāĻĒāύāϗ⧁āϞāĻŋ āĻĒā§āϰāĻŋāϞ⧋āĻĄ āĻ•āϰāĻž āĻšāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āχāωāϰ⧋āĻĒā§€āϝāĻŧ āĻ…āĻ°ā§āĻĨāύ⧈āϤāĻŋāĻ• āĻ…āĻžā§āϚāϞ⧇āϰ (EEA) āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āĻĻ⧇āϰ āĻ•āĻžāĻ› āĻĨ⧇āϕ⧇ āϏāĻŽā§āĻŽāϤāĻŋ āĻĒ⧇āϤ⧇ āϚāĻžāύ, āϤāĻžāĻšāϞ⧇ āϝ⧇āϕ⧋āύ⧋ āĻ…āύ⧁āϰ⧋āϧ-āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻĒāϤāĻžāĻ•āĻž āϏ⧇āϟ āĻ•āϰ⧁āύ (āϝ⧇āĻŽāύ tag_for_child_directed_treatment āĻŦāĻž tag_for_under_age_of_consent ), āĻ…āĻĨāĻŦāĻž āĻ…āĻ¨ā§āϝāĻĨāĻžāϝāĻŧ āĻŦāĻŋāĻœā§āĻžāĻžāĻĒāύ āϞ⧋āĻĄ āĻ•āϰāĻžāϰ āφāϗ⧇ āĻĒāĻĻāĻ•ā§āώ⧇āĻĒ āύāĻŋāύ, āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰ⧁āύ āϝ⧇ āφāĻĒāύāĻŋ firebase::gma::SetRequestConfiguration() āĻāϰ āφāϗ⧇ Google-āĻāϰ āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻ• āĻŦāĻŋāĻœā§āĻžāĻžāĻĒāύāϗ⧁āϞāĻŋ āϚāĻžāϞ⧁ āĻ•āϰāĻžāϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āϤāĻž āĻ•āϰāϛ⧇āύāĨ¤ SDK āφāϰāĻ“ āϤāĻĨā§āϝ⧇āϰ āϜāĻ¨ā§āϝ āφāĻŽāĻžāĻĻ⧇āϰ āϞāĻ•ā§āĻˇā§āϝ āύāĻŋāĻ°ā§āĻĻ⧇āĻļāĻŋāĻ•āĻž āĻĻ⧇āϖ⧁āύāĨ¤

āĻ•āĻŋāĻ­āĻžāĻŦ⧇ Initialize() āĻ•āϞ āĻ•āϰāϤ⧇ āĻšāϝāĻŧ āϤāĻžāϰ āĻāĻ•āϟāĻŋ āωāĻĻāĻžāĻšāϰāĻŖ āĻāĻ–āĻžāύ⧇ āĻĻ⧇āĻ“āϝāĻŧāĻž āĻšāϞ:

āĻ…ā§āϝāĻžāĻ¨ā§āĻĄā§āϰāϝāĻŧ⧇āĻĄ

// Initialize the Google Mobile Ads library
firebase::InitResult result;
Future<AdapterInitializationStatus> future =
  firebase::gma::Initialize(jni_env, j_activity, &result);

if (result != kInitResultSuccess) {
  // Initialization immediately failed, most likely due to a missing
  // dependency. Check the device logs for more information.
  return;
}

// Monitor the status of the future.
// See "Use a Future to monitor the completion status of a method call" below.
if (future.status() == firebase::kFutureStatusComplete &&
    future.error() == firebase::gma::kAdErrorCodeNone) {
  // Initialization completed.
} else {
  // Initialization on-going, or an error has occurred.
}

iOS

// Initialize the Google Mobile Ads library.
firebase::InitResult result;
Future<AdapterInitializationStatus> future =
  firebase::gma::Initialize(&result);

if (result != kInitResultSuccess) {
  // Initialization immediately failed, most likely due to a missing
  // dependency. Check the device logs for more information.
  return;
}

// Monitor the status of the future.
// See "Use a Future to monitor the completion status of a method call" below.
if (future.status() == firebase::kFutureStatusComplete &&
    future.error() == firebase::gma::kAdErrorCodeNone) {
  // Initialization completed.
} else {
  // Initialization on-going, or an error has occurred.
}

āĻāĻ•āϟāĻŋ āĻĒāĻĻā§āϧāϤāĻŋ āĻ•āϞ āϏāĻŽāĻžāĻĒā§āϤāĻŋāϰ āĻ¸ā§āĻĨāĻŋāϤāĻŋ āύāĻŋāϰ⧀āĻ•ā§āώāĻŖ āĻ•āϰāϤ⧇ āĻāĻ•āϟāĻŋ Future āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ

āĻāĻ•āϟāĻŋ Future āφāĻĒāύāĻžāϕ⧇ āφāĻĒāύāĻžāϰ āĻ…ā§āϝāĻžāϏāĻŋāĻ™ā§āĻ•ā§āϰ⧋āύāĻžāϏ āĻŽā§‡āĻĨāĻĄ āĻ•āϞāϗ⧁āϞāĻŋāϰ āϏāĻŽāĻžāĻĒā§āϤāĻŋāϰ āĻ¸ā§āĻĨāĻŋāϤāĻŋ āύāĻŋāĻ°ā§āϧāĻžāϰāĻŖ āĻ•āϰāĻžāϰ āĻāĻ•āϟāĻŋ āωāĻĒāĻžāϝāĻŧ āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰ⧇⧎

āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, āϝāĻ–āύ āφāĻĒāύāĻžāϰ āĻ…ā§āϝāĻžāĻĒ firebase::gma::Initialize() āĻ•āϞ āĻ•āϰ⧇, āϤāĻ–āύ āĻāĻ•āϟāĻŋ āύāϤ⧁āύ firebase::Future āϤ⧈āϰāĻŋ āĻšāϝāĻŧ āĻāĻŦāĻ‚ āĻĢāĻŋāϰ⧇ āφāϏ⧇āĨ¤ āφāĻĒāύāĻžāϰ āĻ…ā§āϝāĻžāĻĒāϟāĻŋ Future status() āĻĒā§‹āϞ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇ āĻ•āĻ–āύ āĻļ⧁āϰ⧁ āĻ•āϰāĻž āĻļ⧇āώ āĻšāϝāĻŧ⧇āϛ⧇ āϤāĻž āύāĻŋāĻ°ā§āϧāĻžāϰāĻŖ āĻ•āϰāϤ⧇āĨ¤ āĻāĻ•āĻŦāĻžāϰ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻšāϝāĻŧ⧇ āϗ⧇āϞ⧇, āφāĻĒāύāĻžāϰ āĻ…ā§āϝāĻžāĻĒ result() āĻāϰ āĻĢāϞ⧇ AdapterInitializationStatus āĻĒ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤

āϝ⧇ āĻĒāĻĻā§āϧāϤāĻŋāϗ⧁āϞāĻŋ āĻāĻ•āϟāĻŋ Future āĻĢ⧇āϰāϤ āĻĻ⧇āϝāĻŧ āϏ⧇āϗ⧁āϞāĻŋāϰ āĻāĻ•āϟāĻŋ āĻ…āύ⧁āϰ⧂āĻĒ "āĻļ⧇āώ āĻĢāϞāĻžāĻĢāϞ" āĻĒāĻĻā§āϧāϤāĻŋ āϰāϝāĻŧ⧇āϛ⧇ āϝāĻž āĻ…ā§āϝāĻžāĻĒāϗ⧁āϞāĻŋ āĻāĻ•āϟāĻŋ āĻĒā§āϰāĻĻāĻ¤ā§āϤ āĻ•āĻ°ā§āĻŽā§‡āϰ āϜāĻ¨ā§āϝ āϏāĻžāĻŽā§āĻĒā§āϰāϤāĻŋāĻ•āϤāĻŽ Future āĻĒ⧁āύāϰ⧁āĻĻā§āϧāĻžāϰ āĻ•āϰāϤ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇⧎ āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, firebase::gma::Initialize() āĻāĻ•āϟāĻŋ āϏāĻ‚āĻļā§āϞāĻŋāĻˇā§āϟ āĻĒāĻĻā§āϧāϤāĻŋ āϰāϝāĻŧ⧇āϛ⧇ āϝāĻžāϰ āύāĻžāĻŽ firebase::gma::InitializeLastResult() , āϝāĻž āĻāĻ•āϟāĻŋ Future āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰ⧇ āϝāĻž āφāĻĒāύāĻžāϰ āĻ…ā§āϝāĻžāĻĒ firebase::gma::Initialize() āĻ āĻļ⧇āώ āĻ•āϞ⧇āϰ āĻ¸ā§āĻĨāĻŋāϤāĻŋ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰāϤ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤

āϝāĻĻāĻŋ Future āĻ¸ā§āĻĨāĻŋāϤāĻŋ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻšāϝāĻŧ āĻāĻŦāĻ‚ āĻāϰ āĻ¤ā§āϰ⧁āϟāĻŋ āϕ⧋āĻĄ āĻšāϝāĻŧ firebase::gma::kAdErrorCodeNone , āϤāĻžāĻšāϞ⧇ āĻ…āĻĒāĻžāϰ⧇āĻļāύāϟāĻŋ āϏāĻĢāϞāĻ­āĻžāĻŦ⧇ āϏāĻŽā§āĻĒāĻ¨ā§āύ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāĻ•āϟāĻŋ Future āϏāĻŽā§āĻĒāĻ¨ā§āύ āĻšāϞ⧇ āĻ•āϞāĻŦā§āϝāĻžāĻ• āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āφāĻĒāύāĻŋ āύāĻŋāĻŦāĻ¨ā§āϧāύ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤ āĻ•āĻŋāϛ⧁ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇, āĻ•āϞāĻŦā§āϝāĻžāĻ• āĻāĻ•āϟāĻŋ āĻ­āĻŋāĻ¨ā§āύ āĻĨā§āϰ⧇āĻĄā§‡ āϚāϞāĻŦ⧇, āϤāĻžāχ āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰ⧁āύ āϝ⧇ āφāĻĒāύāĻžāϰ āϕ⧋āĻĄāϟāĻŋ āĻĨā§āϰ⧇āĻĄ-āύāĻŋāϰāĻžāĻĒāĻĻāĨ¤ āĻāχ āϕ⧋āĻĄ āĻ¸ā§āύāĻŋāĻĒ⧇āϟ āĻ•āϞāĻŦā§āϝāĻžāϕ⧇āϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻĢāĻžāĻ‚āĻļāύ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇:

// Registers the OnCompletion callback. user_data is a pointer that is passed verbatim
// to the callback as a void*. This allows you to pass any custom data to the callback
// handler. In this case, the app has no data, so you must pass nullptr.
firebase::gma::InitializeLastResult().OnCompletion(OnCompletionCallback,
  /*user_data=*/nullptr);

// The OnCompletion callback function.
static void OnCompletionCallback(
  const firebase::Future<AdapterInitializationStatus>& future, void* user_data) {
  // Called when the Future is completed for the last call to firebase::gma::Initialize().
  // If the error code is firebase::gma::kAdErrorCodeNone,
  // then the SDK has been successfully initialized.
  if (future.error() == firebase::gma::kAdErrorCodeNone) {
    // success!
  } else {
    // failure.
  }
}

āĻāĻ•āϟāĻŋ āĻŦāĻŋāĻœā§āĻžāĻžāĻĒāύ āĻŦāĻŋāĻ¨ā§āϝāĻžāϏ āύāĻŋāĻ°ā§āĻŦāĻžāϚāύ āĻ•āϰ⧁āύ

Google āĻŽā§‹āĻŦāĻžāχāϞ āĻŦāĻŋāĻœā§āĻžāĻžāĻĒāύ C++ SDK āĻāĻ–āύ āφāĻŽāĻĻāĻžāύāĻŋ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āĻāĻŦāĻ‚ āφāĻĒāύāĻŋ āĻāĻ•āϟāĻŋ āĻŦāĻŋāĻœā§āĻžāĻžāĻĒāύ āĻŦāĻžāĻ¸ā§āϤāĻŦāĻžāϝāĻŧāύ⧇āϰ āϜāĻ¨ā§āϝ āĻĒā§āϰāĻ¸ā§āϤ⧁āϤāĨ¤ AdMob āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āĻŦāĻŋāĻœā§āĻžāĻžāĻĒāύ āĻĢāĻ°ā§āĻŽā§āϝāĻžāϟ āĻ…āĻĢāĻžāϰ āĻ•āϰ⧇, āϤāĻžāχ āφāĻĒāύāĻŋ āφāĻĒāύāĻžāϰ āĻ…ā§āϝāĻžāĻĒ⧇āϰ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āϰ āĻ…āĻ­āĻŋāĻœā§āĻžāϤāĻžāϰ āϏāĻžāĻĨ⧇ āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āωāĻĒāϝ⧁āĻ•ā§āϤ āĻāĻ•āϟāĻŋ āĻŦ⧇āϛ⧇ āύāĻŋāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤

āφāϝāĻŧāϤāĻ•ā§āώ⧇āĻ¤ā§āϰāĻžāĻ•āĻžāϰ āĻŦāĻŋāĻœā§āĻžāĻžāĻĒāύ āϝāĻž āĻĄāĻŋāĻ­āĻžāχāϏ āĻ¸ā§āĻ•ā§āϰāĻŋāύ⧇āϰ āωāĻĒāϰ⧇ āĻŦāĻž āύ⧀āĻšā§‡ āĻĒā§āϰāĻĻāĻ°ā§āĻļāĻŋāϤ āĻšāϝāĻŧāĨ¤ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āϰāĻž āĻ…ā§āϝāĻžāĻĒ⧇āϰ āϏāĻžāĻĨ⧇ āχāĻ¨ā§āϟāĻžāϰāĻ…ā§āϝāĻžāĻ•ā§āϟ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻŦā§āϝāĻžāύāĻžāϰ āĻŦāĻŋāĻœā§āĻžāĻžāĻĒāύāϗ⧁āϞāĻŋ āĻ¸ā§āĻ•ā§āϰāĻŋāύ⧇ āĻĨāĻžāϕ⧇ āĻāĻŦāĻ‚ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āϏāĻŽāϝāĻŧ⧇āϰ āĻĒāϰ⧇ āĻ¸ā§āĻŦāϝāĻŧāĻ‚āĻ•ā§āϰāĻŋāϝāĻŧāĻ­āĻžāĻŦ⧇ āϰāĻŋāĻĢā§āϰ⧇āĻļ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻŽā§‹āĻŦāĻžāχāϞ āĻŦāĻŋāĻœā§āĻžāĻžāĻĒāύ⧇ āύāϤ⧁āύ āĻšāύ, āϤāĻžāĻšāϞ⧇ āĻļ⧁āϰ⧁ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻāϗ⧁āϞāĻŋ āĻāĻ•āϟāĻŋ āĻĻ⧁āĻ°ā§āĻĻāĻžāĻ¨ā§āϤ āϜāĻžāϝāĻŧāĻ—āĻžā§ˇ

āĻŦā§āϝāĻžāύāĻžāϰ āĻŦāĻŋāĻœā§āĻžāĻžāĻĒāύ āĻŦāĻžāĻ¸ā§āϤāĻŦāĻžāϝāĻŧāύ

āχāĻ¨ā§āϟāĻžāϰāĻ¸ā§āϟāĻŋāĻļāĻŋāϝāĻŧāĻžāϞ

āĻĒā§‚āĻ°ā§āĻŖ-āĻ¸ā§āĻ•ā§āϰ⧀āύ āĻŦāĻŋāĻœā§āĻžāĻžāĻĒāύ āϝāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀ āĻĻā§āĻŦāĻžāϰāĻž āĻŦāĻ¨ā§āϧ āύāĻž āĻšāĻ“āϝāĻŧāĻž āĻĒāĻ°ā§āϝāĻ¨ā§āϤ āĻāĻ•āϟāĻŋ āĻ…ā§āϝāĻžāĻĒ⧇āϰ āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ āĻ•āĻ­āĻžāϰ āĻ•āϰ⧇āĨ¤ āĻāϗ⧁āϞāĻŋ āĻāĻ•āϟāĻŋ āĻ…ā§āϝāĻžāĻĒ⧇āϰ āĻ•āĻžāĻ°ā§āϝ āϏāĻŽā§āĻĒāĻžāĻĻāύ⧇āϰ āĻĒā§āϰāĻŦāĻžāĻšā§‡ āĻĒā§āϰāĻžāĻ•ā§ƒāϤāĻŋāĻ• āĻŦāĻŋāϰāϤāĻŋāϤ⧇ āϏāĻ°ā§āĻŦā§‹āĻ¤ā§āϤāĻŽāĻ­āĻžāĻŦ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧ, āϝ⧇āĻŽāύ āĻāĻ•āϟāĻŋ āϗ⧇āĻŽā§‡āϰ āĻ¸ā§āϤāϰ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āĻŦāĻž āĻāĻ•āϟāĻŋ āϟāĻžāĻ¸ā§āĻ• āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻšāĻ“āϝāĻŧāĻžāϰ āĻĒāϰ⧇āĨ¤

āχāĻ¨ā§āϟāĻžāϰāĻ¸ā§āϟāĻŋāĻļāĻŋāϝāĻŧāĻžāϞ āĻŦāĻŋāĻœā§āĻžāĻžāĻĒāύ āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰ⧁āύ

āĻĒ⧁āϰāĻ¸ā§āĻ•ā§ƒāϤ

āĻŦāĻŋāĻœā§āĻžāĻžāĻĒāύ āϝāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āĻĻ⧇āϰ āϛ⧋āϟ āĻ­āĻŋāĻĄāĻŋāĻ“ āĻĻ⧇āĻ–āĻžāϰ āϜāĻ¨ā§āϝ āĻāĻŦāĻ‚ āĻĒā§āϞ⧇āϝ⧋āĻ—ā§āϝ āĻŦāĻŋāĻœā§āĻžāĻžāĻĒāύ āĻāĻŦāĻ‚ āϏāĻŽā§€āĻ•ā§āώāĻžāϰ āϏāĻžāĻĨ⧇ āχāĻ¨ā§āϟāĻžāϰāĻ…ā§āϝāĻžāĻ•ā§āϟ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻĒ⧁āϰāĻ¸ā§āĻ•ā§ƒāϤ āĻ•āϰ⧇āĨ¤ āĻĢā§āϰāĻŋ-āϟ⧁-āĻĒā§āϞ⧇ āĻ…ā§āϝāĻžāĻĒāϗ⧁āϞāĻŋ āύāĻ—āĻĻā§€āĻ•āϰāϪ⧇āϰ āϜāĻ¨ā§āϝ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻšāϝāĻŧāĨ¤

āĻĒ⧁āϰāĻ¸ā§āĻ•ā§ƒāϤ āĻŦāĻŋāĻœā§āĻžāĻžāĻĒāύ āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰ⧁āύ