Google is committed to advancing racial equity for Black communities. See how.
इस पेज का अनुवाद Cloud Translation API से किया गया है.
Switch to English

Cocos2d-x

यह मार्गदर्शिका प्रदर्शित करती है कि AdMob को Firebase के साथ नए बनाए गए Cocos2d-x प्रोजेक्ट में कैसे शामिल किया जाए। यदि आपके पास पहले से कोई प्रोजेक्ट नहीं है, तो आप पूर्वापेक्षाएँ प्राप्त करके और कमांड से एक नया कोको प्रोजेक्ट बनाकर अनुसरण कर सकते हैं:

cocos new MyGame -l cpp
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID ||
     CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
  ...
#endif

आवश्यक शर्तें

आपको अपनी मशीन पर स्थापित होना चाहिए:

  • Cocos2d-x का नवीनतम संस्करण
  • पायथन 2.7 या उच्चतर
  • NDK r10d या उच्चतर (केवल Android विकास के लिए आवश्यक)
  • कोकोआ 1.0.0 या उच्चतर (केवल iOS विकास के लिए आवश्यक)

Firebase C ++ SDK के साथ AdMob प्राप्त करें

फायरबेस सी ++ एसडीके डाउनलोड करें। अपने Cocos2d-x प्रोजेक्ट के शीर्ष स्तर निर्देशिका में फ़ाइलें निकालें, वही निर्देशिका जिसमें आपका proj.android-studio और proj.ios_mac निर्देशिका हैं। फ़ोल्डर का नाम firebase_cpp_sdk

IOS सेट करें

निम्नलिखित चरण बताते हैं कि फायरबेस एसडीके को एक नए बनाए गए Cocos2d-x iOS प्रोजेक्ट में कैसे आयात किया जाए।

  1. अपने ऐप में Firebase जोड़ने के चरणों का पालन करें। एक बार पूरा होने के बाद, proj.ios_mac/ निर्देशिका के अंदर आपका Xcode प्रोजेक्ट GoogleService-Info.plist फ़ाइल को संदर्भित करना चाहिए।

  2. निम्नलिखित सामग्री के साथ अपने proj.ios_mac/ निर्देशिका में एक पॉडफाइल बनाएं:

    source 'https://github.com/CocoaPods/Specs.git'
    
    platform :ios, '7.0'
    
    # Replace "MyGame" with the name of your game.
    target 'MyGame-mobile' do
      pod 'Firebase'
      pod 'Firebase/AdMob'
    end
    
  3. कोकोआपोड्स को स्थापित करने के लिए pod update चलाएं और MyGame.xcworkspace के निर्देशानुसार MyGame.xcworkspace खोलें। इस बिंदु पर, आपके पास आपके प्रोजेक्ट में शामिल Firebase और AdMob iOS SDK हैं।

  4. कोकोआपोड्स कुछ गुणों पर लापता $(inherited) बारे में चेतावनी देता है। Xcode में MyGame-mobile लक्ष्य के लिए बिल्ड सेटिंग्स पर जाएं, और निम्न बिल्ड सेटिंग्स में से प्रत्येक के लिए सूची के निचले भाग में $(inherited) जोड़ें:

    • अन्य लिंकर झंडे
    • प्रीप्रोसेसर मैक्रोज़
    • पुस्तकालय खोज पथ
  5. जब आप बिल्ड सेटिंग में हों, तो अपने फ्रेमवर्क सर्च पाथ्स और $(PROJECT_DIR)/../firebase_cpp_sdk/include $(PROJECT_DIR)/../firebase_cpp_sdk/frameworks/ios/universal और $(PROJECT_DIR)/../firebase_cpp_sdk/include अपने हैडर खोज पथों में शामिल करें

  6. इसके बाद, आपको उन पुस्तकालयों का संदर्भ शामिल करना होगा जिनका आप उपयोग करना चाहते हैं। अपनी परियोजना पर राइट क्लिक करें और "MyGame" में फ़ाइलें जोड़ें चुनें। firebase_cpp_sdk/frameworks/ios/universal निर्देशिका से, firebase.framework और firebase_admob.framework चयन करें। चौखटे जोड़ने से पहले, कॉपी किए गए आइटम को यदि आवश्यक हो तो अनचेक करें । पिछले चरण में आपके द्वारा जोड़ी गई बिल्ड सेटिंग्स Xcode को यह बताती हैं कि फ्रेमवर्क कहां खोजना है।

  7. GameController.framework को चरणों में जोड़ें > पुस्तकालयों के साथ लिंक बाइनरी

  8. IOS 9 और उससे ऊपर के सभी विज्ञापनों को सही ढंग से व्यवहार करने के लिए AdMob के ऐप ट्रांसपोर्ट सिक्योरिटी गाइड का पालन करें।

चेकपॉइंट: आपको Xcode से iOS ऐप बनाने और चलाने में सक्षम होना चाहिए।

अब आपके पास AdMob और Firebase के साथ अपनी iOS परियोजना स्थापित है। आप Android प्रोजेक्ट सेट करने के लिए तैयार हैं।

Android सेट करें

निम्नलिखित चरण बताते हैं कि फायरबेस एसडीके को एक नए बनाए गए Cocos2d-x Android प्रोजेक्ट में कैसे आयात किया जाए।

  1. अपने proj.android-studio/app/jni/Android.mk खोलें और नीचे दिखाए गए पंक्तियों को जोड़ दें। FIREBASE_CPP_SDK_DIR को आपके द्वारा डाउनलोड किए गए Firebase C ++ SDK के स्थानीय पथ पर सेट करना सुनिश्चित करें।

    LOCAL_PATH := $(call my-dir)
     
    # The path to the Firebase C++ SDK, in the project's root directory.
    FIREBASE_CPP_SDK_DIR := ../../../firebase_cpp_sdk
     
    APP_ABI := armeabi-v7a x86
    STL := $(firstword $(subst _, ,$(APP_STL)))
    FIREBASE_LIBRARY_PATH := $(FIREBASE_CPP_SDK_DIR)/libs/android/$(TARGET_ARCH_ABI)/$(STL)
     
    include $(CLEAR_VARS)
    LOCAL_MODULE := firebase_app
    LOCAL_SRC_FILES := $(FIREBASE_LIBRARY_PATH)/libapp.a
    LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/$(FIREBASE_CPP_SDK_DIR)/include
    include $(PREBUILT_STATIC_LIBRARY)
     
    include $(CLEAR_VARS)
    LOCAL_MODULE := firebase_feature
    LOCAL_SRC_FILES := $(FIREBASE_LIBRARY_PATH)/libadmob.a
    LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/$(FIREBASE_CPP_SDK_DIR)/include
    include $(PREBUILT_STATIC_LIBRARY)
     
    include $(CLEAR_VARS)
     
    $(call import-add-path,$(LOCAL_PATH)/../../../cocos2d)
    $(call import-add-path,$(LOCAL_PATH)/../../../cocos2d/external)
    $(call import-add-path,$(LOCAL_PATH)/../../../cocos2d/cocos)
    $(call import-add-path,$(LOCAL_PATH)/../../../cocos2d/cocos/audio/include)
     
    LOCAL_MODULE := MyGame_shared
    LOCAL_MODULE_FILENAME := libMyGame
     
    LOCAL_SRC_FILES := hellocpp/main.cpp \
                       ../../../Classes/AppDelegate.cpp \
                       ../../../Classes/HelloWorldScene.cpp
     
    LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../../Classes
     
    # _COCOS_HEADER_ANDROID_BEGIN
    # _COCOS_HEADER_ANDROID_END
     
    LOCAL_STATIC_LIBRARIES := cocos2dx_static
    LOCAL_STATIC_LIBRARIES += firebase_app
    LOCAL_STATIC_LIBRARIES += firebase_feature
     
    # _COCOS_LIB_ANDROID_BEGIN
    # _COCOS_LIB_ANDROID_END
     
    include $(BUILD_SHARED_LIBRARY)
     
    $(call import-module,.)
     
    # _COCOS_LIB_IMPORT_ANDROID_BEGIN
    # _COCOS_LIB_IMPORT_ANDROID_END
    
  2. जांचें कि आप अभी भी अपने कोको ऐप को संकलित कर सकते हैं:

    cocos compile -p android --ap android-24 --android-studio --app-abi armeabi-v7a
    
  3. अपने ऐप में Firebase जोड़ने के चरणों का पालन करें जो कि proj.android-studio/ निर्देशिका में स्थित है।

  4. अपने app/build.gradle में विज्ञापन पैकेज शामिल करें app/build.gradle :

    implementation 'com.google.firebase:firebase-ads:19.4.0'
    
  5. जांचें कि आप अभी भी अपने कोको ऐप को संकलित कर सकते हैं:

    cocos compile -p android --ap android-42 --android-studio --app-abi armeabi-v7a
    

आपका Android प्रोजेक्ट अब FireMase C ++ SDK में AdMob घटकों का संदर्भ देता है।

C ++ एकीकरण

अब जब आपके iOS और Android प्रोजेक्ट्स को Firebase C ++ SDK में संदर्भित किया गया है, तो अगला कदम SDK का उपयोग शुरू करना और कुछ विज्ञापनों को लोड करना है।

फायरबेस और AdMob की शुरुआत करें

यह आपके आवेदन जीवनचक्र में जितनी जल्दी हो सके Firebase और AdMob को शुरू करने की सिफारिश की गई है। Cocos2d-x प्रोजेक्ट के लिए इस इनिशियलाइज़ेशन कोड को जोड़ने का सबसे प्राकृतिक स्थान AppDelegate.cpp फ़ाइल में है:

AppDelegate.cpp


#include "firebase/app.h"
#include "firebase/admob.h"

USING_NS_CC;

bool AppDelegate::applicationDidFinishLaunching() {

  ...

  #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
  // Initialize Firebase for Android.
  firebase::App* app = firebase::App::Create(
  firebase::AppOptions(), JniHelper::getEnv(), JniHelper::getActivity());
  // Initialize AdMob.
  firebase::admob::Initialize(*app, "INSERT_YOUR_ADMOB_ANDROID_APP_ID");
  #elif (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
  // Initialize Firebase for iOS.
  firebase::App* app = firebase::App::Create(firebase::AppOptions());
  // Initialize AdMob.
  firebase::admob::Initialize(*app, "INSERT_YOUR_ADMOB_IOS_APP_ID");
  #endif
  // Initialize AdMob.
  firebase::admob::Initialize(*app);
  // Create a scene. it's an autorelease object.
  auto scene = HelloWorldScene::createScene();
  // run
  director->runWithScene(scene);
  return true;
}

एंड्रॉइड पर, फायरबेस ऐप बनाने के लिए जेएनआई पर्यावरण और गतिविधि की आवश्यकता होती है। ऊपर दिया गया नमूना कोड इन मापदंडों की आपूर्ति करने के लिए Cocos2d-x से JniHelper वर्ग का उपयोग करता है।

एक विज्ञापन माता-पिता को प्राप्त करें

AdMob को एक firebase::admob::AdParent आवश्यकता होती है firebase::admob::AdParent प्रत्येक विज्ञापन प्रारूप को आरंभ करने के लिए firebase::admob::AdParent ऑब्जेक्ट। यह ऑब्जेक्ट Android पर एक Activity और iOS पर एक UIView मेल खाती है। निम्न सहायक वर्ग एकल getAdParent() विधि बनाता है जो प्लेटफ़ॉर्म के आधार पर उपयुक्त ऑब्जेक्ट देता है।

FirebaseHelper.h

#ifndef __FIREBASE_HELPER_H__
#define __FIREBASE_HELPER_H__

#include "firebase/admob/types.h"

#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
#include <jni.h>
#elif (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
extern "C" {
#include <objc/objc.h>
}  // extern "C"
#endif

// Returns a variable that describes the ad parent for the app. On Android
// this will be a JObject pointing to the Activity. On iOS, it's an ID pointing
// to the root view of the view controller.
firebase::admob::AdParent getAdParent();

#endif // __FIREBASE_HELPER_H__

FirebaseHelper.cpp

#include "FirebaseHelper.h"

#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
#include "platform/android/jni/JniHelper.h"
#endif

USING_NS_CC;

firebase::admob::AdParent getAdParent() {
  #if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
  // Returns the iOS RootViewController's main view (i.e. the EAGLView).
  return (id)Director::getInstance()->getOpenGLView()->getEAGLView();
  #elif (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
  // Returns the Android Activity.
  return JniHelper::getActivity();
  #else
  // A void* for any other environments.
  return 0;
  #endif
}

इस FirebaseHelper वर्ग को अपनी परियोजना के Classes/ फ़ोल्डर में जोड़ें। IOS के लिए इस फ़ाइल को अपने Xcode प्रोजेक्ट में जोड़ना सुनिश्चित करें और Android के लिए अपने Android.mk में स्थानीय स्रोत फ़ाइलों को अपडेट करें:

LOCAL_SRC_FILES := hellocpp/main.cpp \
                   ../../../Classes/AppDelegate.cpp \
                   ../../../Classes/HelloWorldScene.cpp \
                   ../../../Classes/FirebaseHelper.cpp

एक बैनर विज्ञापन लोड करें

एक बैनर विज्ञापन को कैसे लोड किया जाए, इसका एक पूरा उदाहरण नीचे दिया गया है, जो ऊपर दिए गए getAdParent() विधि का उपयोग करके दिखाया गया है।

#include "FirebaseHelper.h"

#include "firebase/admob.h"
#include "firebase/admob/types.h"
#include "firebase/app.h"
#include "firebase/future.h"
#include "firebase/admob/banner_view.h"

#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
#include <android/log.h>
#include <jni.h>
#include "platform/android/jni/JniHelper.h"
#endif

USING_NS_CC;

bool HelloWorld::init()
{
  // General scene setup ...

  #if defined(__ANDROID__)
  // Android ad unit IDs.
  const char* kBannerAdUnit = "ca-app-pub-3940256099942544/6300978111";
  #else
  // iOS ad unit IDs.
  const char* kBannerAdUnit = "ca-app-pub-3940256099942544/2934735716";
  #endif

  // Create and initialize banner view.
  firebase::admob::BannerView* banner_view;
  banner_view = new firebase::admob::BannerView();
  firebase::admob::AdSize ad_size;
  ad_size.ad_size_type = firebase::admob::kAdSizeStandard;
  ad_size.width = 320;
  ad_size.height = 50;
  banner_view->Initialize(getAdParent(), kBannerAdUnit, ad_size);

  // Schedule updates so that the Cocos2d-x update() method gets called.
  this->scheduleUpdate();
  return true;
}

void HelloWorld::update(float delta) {
  // Check that the banner has been initialized.
  if (banner_view->InitializeLastResult().status() ==
      firebase::kFutureStatusComplete) {
    // Check that the banner hasn't started loading.
    if (banner_view->LoadAdLastResult().status() ==
        firebase::kFutureStatusInvalid) {
      // Make the banner visible and load an ad.
      CCLOG("Loading a banner.");
      banner_view->Show();
      firebase::admob::AdRequest my_ad_request = {};
      banner_view->LoadAd(my_ad_request);
    }
  }
}

आगे क्या होगा

अब जब आपके पास AdMob SDK के साथ Firebase आपके Cocos2d-x प्रोजेक्ट में एकीकृत हो गया है, तो आप Google मोबाइल विज्ञापन SDK के साथ सहभागिता कर सकते हैं और अपना पसंदीदा प्रारूप लागू कर सकते हैं: