এই গাইডটি প্রদর্শন করে যে কীভাবে ফর্মবেস সহ অ্যাডমবকে একটি নতুন তৈরি কোকোস 2 ডি-এক্স প্রকল্পের অন্তর্ভুক্ত করা যায়। আপনার যদি ইতিমধ্যে কোনও প্রকল্প না থাকে তবে আপনি পূর্বশর্তগুলি পেয়ে এবং কমান্ড লাইন থেকে একটি নতুন কোকো প্রকল্প তৈরি করে অনুসরণ করতে পারেন:
cocos new MyGame -l cpp
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS) ... #endif
পূর্বশর্ত
আপনার অবশ্যই অবশ্যই আপনার মেশিনে ইনস্টল করা থাকতে হবে:
- কোকোস 2 ডি-এক্স এর সর্বশেষতম সংস্করণ
- পাইথন ২.7 বা তারও বেশি
- NDK r10d বা উচ্চতর (কেবল অ্যান্ড্রয়েড বিকাশের জন্য প্রয়োজনীয়)
- কোকোপডগুলি 1.0.0 বা উচ্চতর (কেবলমাত্র আইওএস বিকাশের জন্য প্রয়োজনীয়)
ফায়ারবেস সি ++ এসডিকে দিয়ে অ্যাডমব পান
ফায়ারবেস সি ++ এসডিকে ডাউনলোড করুন। আপনার কোকোস 2 ডি-এক্স প্রকল্পের শীর্ষ স্তরের ডিরেক্টরিতে ফাইলগুলি বের করুন, একই ডিরেক্টরিতে আপনার proj.android-studio
এবং proj.ios_mac
ডিরেক্টরি রয়েছে। firebase_cpp_sdk
ফোল্ডারের নাম দিন।
আইওএস সেট আপ করুন
নিম্নলিখিত পদক্ষেপগুলি কীভাবে ফায়ারবেস এসডিকে নতুনভাবে তৈরি কোকোস 2 ডি-এক্স আইওএস প্রকল্পে আমদানি করবে তা ব্যাখ্যা করে।
আপনার অ্যাপে ফায়ারবেস যুক্ত করার পদক্ষেপগুলি অনুসরণ করুন । একবার সম্পন্ন হয়ে গেলে, আপনার
proj.ios_mac/
ডিরেক্টরিতে থাকাproj.ios_mac/
প্রকল্পটির কোনওproj.ios_mac/
GoogleService-Info.plist
ফাইলটি উল্লেখ করা উচিত।নীচের বিষয়বস্তু সহ আপনার
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
কোকোপডগুলি ইনস্টল করতে
pod update
চালান এবংMyGame.xcworkspace
নির্দেশ অনুসারে মাইগেম.এক্সক্রেসস্পেস খুলুন। এই মুহুর্তে, আপনার প্রকল্পে ফায়ারবেস এবং অ্যাডমোব আইওএস এসডি রয়েছে।কোকোপডস কয়েকটি বৈশিষ্ট্যে হারিয়ে যাওয়া
$(inherited)
সম্পর্কে সতর্কতা দেয়। এক্সকোডে মাইগেম-মোবাইল টার্গেটের জন্য বিল্ড সেটিংসে যান এবং নীচের প্রতিটি বিল্ড সেটিংসের জন্য তালিকার নীচে$(inherited)
যুক্ত করুন:- অন্যান্য লিঙ্কার পতাকা
- প্রিপ্রসেসর ম্যাক্রোস
- লাইব্রেরি অনুসন্ধানের পথগুলি
আপনি বিল্ড সেটিংসে থাকাকালীন আপনার ফ্রেমওয়ার্ক অনুসন্ধানের পথে
$(PROJECT_DIR)/../firebase_cpp_sdk/frameworks/ios/universal
এবং আপনার শিরোনাম অনুসন্ধানের$(PROJECT_DIR)/../firebase_cpp_sdk/include
।এর পরে, আপনি যে লাইব্রেরিগুলি ব্যবহার করতে চান তার একটি রেফারেন্স অন্তর্ভুক্ত করতে হবে। আপনার প্রকল্পে ডান ক্লিক করুন এবং "মাইগেম" এ ফাইল যুক্ত করুন নির্বাচন করুন ।
firebase_cpp_sdk/frameworks/ios/universal
ডিরেক্টরি থেকে,firebase.framework
এবংfirebase_admob.framework
নির্বাচন করুন। ফ্রেমওয়ার্কগুলি যুক্ত করার আগে, বিকল্পের প্রয়োজন হলে অনুলিপি করুন অনুলিপি করুন । পূর্ববর্তী পদক্ষেপে আপনি যে বিল্ড সেটিংস যুক্ত করেছেন সেটি ফ্রেমওয়ার্কগুলি কোথায় পাবেন তা এক্সকোডকে জানায়।GameController.framework
করুনGameController.framework
তৈরি করতে > গ্রন্থাগারগুলির সাথে বাইনারি লিঙ্ক করুন ।আইওএস 9 এবং তার বেশি বয়সে সমস্ত বিজ্ঞাপন সঠিকভাবে আচরণ করে তা নিশ্চিত করতে অ্যাডমবের অ্যাপ ট্রান্সপোর্ট সুরক্ষা গাইড অনুসরণ করুন।
চেকপয়েন্ট: আপনার এক্সকোড থেকে আইওএস অ্যাপটি তৈরি এবং পরিচালনা করতে সক্ষম হওয়া উচিত।
আপনি এখন আপনার আইওএস প্রকল্প অ্যাডমব এবং ফায়ারবেস সংহত করে সেট আপ করেছেন। আপনি অ্যান্ড্রয়েড প্রকল্প সেট আপ করতে প্রস্তুত।
অ্যান্ড্রয়েড সেট আপ করুন
নিম্নলিখিত পদক্ষেপগুলি কীভাবে ফায়ারবেস এসডিকে নতুনভাবে তৈরি কোকোস 2 ডি-এক্স অ্যান্ড্রয়েড প্রকল্পে আমদানি করবে তা ব্যাখ্যা করে।
আপনার
proj.android-studio/app/jni/Android.mk
খুলুন এবং নীচেproj.android-studio/app/jni/Android.mk
দেখানো লাইনগুলি যুক্ত করুন। আপনি সবেমাত্র ডাউনলোড করেছেনFIREBASE_CPP_SDK_DIR
সি ++ এসডিকে লোকাল পথেFIREBASE_CPP_SDK_DIR
সেট করা নিশ্চিত করুন।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
আপনি এখনও আপনার কোকোস অ্যাপ্লিকেশন সংকলন করতে পারেন তা পরীক্ষা করুন:
cocos compile -p android --ap android-24 --android-studio --app-abi armeabi-v7a
proj.android-studio/
ডিরেক্টরিতে থাকা আপনার অ্যাপ্লিকেশনটিতেproj.android-studio/
করার পদক্ষেপগুলি অনুসরণ করুন।আপনার
app/build.gradle
এ বিজ্ঞাপন প্যাকেজ অন্তর্ভুক্ত করুন:implementation 'com.google.firebase:firebase-ads:19.6.0'
আপনি এখনও আপনার কোকোস অ্যাপ্লিকেশন সংকলন করতে পারেন তা পরীক্ষা করুন:
cocos compile -p android --ap android-42 --android-studio --app-abi armeabi-v7a
আপনার অ্যান্ড্রয়েড প্রকল্পটি এখন ফায়ারবেস সি ++ এসডিকে অ্যাডমব উপাদানগুলি উল্লেখ করে।
সি ++ ইন্টিগ্রেশন
এখন আপনার আইওএস এবং অ্যান্ড্রয়েড প্রকল্পগুলি ফায়ারবেস সি ++ এসডিকে রেফারেন্স করা হয়েছে, পরবর্তী পদক্ষেপটি এসডিকে ব্যবহার শুরু করা এবং কিছু বিজ্ঞাপন লোড করা।
ফায়ারবেস এবং অ্যাডমব শুরু করুন
আপনার অ্যাপ্লিকেশন লাইফসাইকে যত তাড়াতাড়ি সম্ভব ফায়ারবেস এবং অ্যাডমব শুরু করার পরামর্শ দেওয়া হয়। একটি 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; }
অ্যান্ড্রয়েডে, ফায়ারবেস অ্যাপ্লিকেশন তৈরি করার জন্য একটি জেএনআই পরিবেশ এবং ক্রিয়াকলাপ প্রয়োজন। ব্যবহারসমূহ উপরে নমুনা কোড JniHelper
থেকে Cocos2d-X বর্গ এই পরামিতি সরবরাহ করা যায়।
একটি বিজ্ঞাপন পিতামাতা পান
প্রতিটি বিজ্ঞাপনের ফর্ম্যাটটি আরম্ভ করার জন্য firebase::admob::AdParent
অবজেক্ট দরকার। এই বস্তুটি অ্যান্ড্রয়েডের একটি Activity
এবং আইওএস-এ একটি UIView
যায়। নিম্নলিখিত সহায়ক শ্রেণি একটি একক getAdParent()
পদ্ধতি তৈরি করে যা প্ল্যাটফর্মের উপর নির্ভর করে উপযুক্ত বস্তুটি প্রদান করে।
ফায়ারব্যাসহেল্পার
#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__
ফায়ারবেসহেল্পারসিপিপি
#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
}
আপনার প্রকল্পের Classes/
ফোল্ডারে এই ফায়ারব্যাসহেলপার ক্লাসটি যুক্ত করুন। আইওএসের জন্য আপনার এক্সকোড প্রকল্পে এই ফাইলটি যুক্ত করা এবং অ্যান্ড্রয়েডের জন্য আপনার অ্যান্ড্রয়েড.এমকে স্থানীয় উত্স ফাইলগুলি আপডেট করার বিষয়টি নিশ্চিত করুন:
একটি ব্যানার বিজ্ঞাপন লোড করুন
উপরে বর্ণিত getAdParent()
পদ্ধতিটি ব্যবহার করে getAdParent()
ব্যানার বিজ্ঞাপনটি লোড করা যায় তার সম্পূর্ণ উদাহরণ নীচে প্রদর্শিত হবে 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);
}
}
}
এরপর কি
এখন আপনার অ্যাডমব এসডিকে ফায়ারবেস আপনার কোকোস 2 ডি-এক্স প্রকল্পের সাথে সংহত করা হয়েছে, আপনি গুগল মোবাইল বিজ্ঞাপন এসডিকে সাথে ইন্টারঅ্যাক্ট করতে পারেন এবং আপনার পছন্দসই ফর্ম্যাটটি প্রয়োগ করতে পারেন: