Unity 使用新廣告 IronSource
分類
說明
在我使用 Unity 2022.2.1f1 版本時,舊版的 Unity 廣告 SDK 被自動刪除了,看到大量的廣告程式碼的錯誤訊息,我打開 Package Manager 看到一個跟廣告有關的套件,大概就是暗示我要使用新版的廣告 SDK,也就是 IronSource,本篇為 Mac 使用 Unity 在 iOS 平台上架廣告的教學。
IronSource 大部分的內容我還是迷迷糊糊,跌跌撞撞,此篇僅供參考,內容可能會有錯誤,主要是要幫助開發者更快速地了解整合 IronSource 到 Unity,如果有任何內容有誤,也請不吝指導
整個工作簡介可以參考此篇 How to start monetizing your first app
還有這篇 How to start working with ironSource
1. 註冊 ironSource 帳戶
根據影片說明,首先到 ironSource 註冊一個帳戶
2. 添加新的 app
當你註冊好你需要添加新的 app,如影片說明那樣
勾選廣告的部分,若沒特別要求,可以先都勾一勾,就算勾了也是要用程式跑廣告才會出現。
其餘的部分按照影片說明那樣即可。
3. 加入 ironSource Unity 套件到你的專案
以下步驟只重點說明,詳細最新步驟請參考官網 Step 1. Add the ironSource Unity package to your project
以前的版本需要自己下載 unitypackage 自己匯入到專案,現在可以直接到 Package Manager 安裝就好。
你可以參考 Update Ads Mediation package to 8.0.0+ 雖然這是告訴你如何從 IronSource 7.x 更新到 8.0,如果你是第一次安裝的開發者,你只要忽略刪除舊版的 IronSource 資料夾的步驟就行了。
- 使用支援的編輯器版本 ,在 Unity 編輯器中開啟您的專案。
- 在「專案」視窗中,找到 Assets > IronSource 資料夾。刪除 IronSource 資料夾及其內容。
- 返回 Unity 編輯器中的項目,然後到 Window > Package Manager。
- 在 Package Manager 視窗中:
- 選擇 Packages > Unity Registry。
- 從 packages 清單中選擇 Ads Mediation,然後選擇更新。
- 在 Unity 編輯器中開啟您的項目,然後前往 Ads Mediation > Network Manager。
- 選擇安裝以重新安裝 network adapters。
4. Unity 集成管理器
這個部分是處理廣告的中介商,因為我使用 Unity LevelPlay 當作 Mediation Partner,我不太確定是否要安裝 UnityAds,但保險起見,我還是選擇先安裝。
在安裝完 ironSource SDK 套件後,選單會出現 Ads Mediation,點擊選單 > Ads Mediation > Integration Manager
然後看一下是否有需要更新的 Network
5. 安裝 Cocoapods
安裝 ruby
第一步先安裝 Cocoapods 因為我的 Mac 的 ruby 是舊版的,導致我安裝 Cocoapods 發生了一些錯誤,最終我用 brew 安裝新版的 ruby 後再安裝 Cocoapods 就成功了。
$ brew install ruby
安裝完你會看到環境配置提示,大概如下,你的可能會與我的不同,安裝完後留意一下訊息。
By default, binaries installed by gem will be placed into:
/usr/local/lib/ruby/gems/3.1.0/bin
You may want to add this to your PATH.
ruby is keg-only, which means it was not symlinked into /usr/local,
because macOS already provides this software and installing another version in
parallel can cause all kinds of trouble.
If you need to have ruby first in your PATH, run:
echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> ~/.zshrc
For compilers to find ruby you may need to set:
export LDFLAGS="-L/usr/local/opt/ruby/lib"
export CPPFLAGS="-I/usr/local/opt/ruby/include"
For pkg-config to find ruby you may need to set:
export PKG_CONFIG_PATH="/usr/local/opt/ruby/lib/pkgconfig"
如上我的是在 ~/.zshrc 配置
.zshrc
export PATH="/usr/local/opt/ruby/bin:$PATH"
export LDFLAGS="-L/usr/local/opt/ruby/lib"
export CPPFLAGS="-I/usr/local/opt/ruby/include"
export PKG_CONFIG_PATH="/usr/local/opt/ruby/lib/pkgconfig"
配置完再重開終端或運行指令 $ source .zshrc
再安裝 Cocoapods
接著再安裝 Cocoapods
$ sudo gem install cocoapods
雖然這樣已經配置好了,但不幸的事 Unity 運行終端抓的配置檔是 .bash_profile
檔,導致打開 Unity 的時候 ruby 還是舊版的,然後舊版的 ruby 沒有安裝 cocoapods,然後又自動安裝,然後又發生錯誤…,所以在 ~/.bash_profile 檔再配置一次。
詳細可以在安裝 ironSource SDK 後打開 Unity 選單 Assets > Mobile Dependency Resolver > iOS Resolver > Settings
注意這兩個選項
- Use Shell to Execute Cocoapod Tool
- Auto Install Cocoapod Tools in Editor
.bash_profile
export PATH="/usr/local/opt/ruby/bin:$PATH"
export LDFLAGS="-L/usr/local/opt/ruby/lib"
export CPPFLAGS="-I/usr/local/opt/ruby/include"
export PKG_CONFIG_PATH="/usr/local/opt/ruby/lib/pkgconfig"
# CocoaPods 要求終端使用 UTF-8 編碼
export LANG=en_US.UTF-8
檢查 pad
上述預設的 ruby path 是 /usr/local/opt/ruby/bin
,但如果你的 path 如果不一樣的話,你可能會發生執行 pad 失敗,你需要更新 pad 腳本。
sudo vim /usr/local/bin/pod
假設我的 ruby 指令的 path 在 /opt/homebrew/opt/ruby/bin/ruby
,我需要將 pad 腳本第一行修改成 #!/opt/homebrew/opt/ruby/bin/ruby
。
Unity 安裝 Cocoapods
接著再前往 Unity 選單 > Assets > Mobile Dependency Manager > iOS Resolver > Install Cocoapods
因為我很久之前安裝完後,忘記過程,理論上點擊下去不會有錯誤訊息。
6. 手動整合
此步驟非必要,依照您的需求即可。
作為 Unity Integration Manager 的替代方案,您可以手動整合ironSource SDK。
最新步驟請參考 Step 5. Manual integration 裡面的步驟進行,分別有 Android 和 iOS 兩個平台的整合方式。
7. 建立 Organization
如果沒有 Organizations 的話到 https://unity.com 登入帳號
選擇 Organizations
添加新的 Organization
8. Service 設定
- 打開選單 > Edit > Project Settings… > Service
- 設定 Organizations 和
- 建立或使用現有的 project ID
設定完成畫面
設定是否是針對13歲以下兒童設計的 App,在這裡示範是 No,然後儲存。
9. 設定 Unity Monetize
這個部分我還不太清楚到底要不要設置,雖然我是照著 Move from Unity Mediation to Unity LevelPlay 做了,但我已經用 ironSource SDK,不確定 LevelPlay 是不是有其他的程式或者是有什麼用途,知道的大大們請跟我說一下。
點擊 Dashboard
點擊 Back to Gaming Services
點擊 Monetization,然後點擊 Get Started
- 點擊 I plan to use Mediation
- 選擇 Unity LevelPlay
- 點擊 Next
- 這是示範新的設定,點擊 No, I want to start fresh
- 點擊 Next
- 這個步驟不太清楚哪個比較好,我選擇比較新的 Bidding 比價方式
- 點擊 Next
- 目前 app 還沒上架到應用程式商店,所以選擇 My app is not live in an app store yet.
- 點擊 Add Project
先把完成資訊記下來,截圖或寫在一個檔案中,之後會用到。
10. 手動加入 Banner 放置位置
可能是上面選擇 Bidding 的關係,預設沒看到 Banner Placement,這裡將示範新增 Banner Placement
點擊 Monetization > Ad Units > Add Ad Unit
設定 Ad Unit
- Ad Unit Name: 廣告單元名稱
- Platform: 平台
- Ad Format: 廣告格式,這裡選 Banner
設定好按 Create
結果如下,剛建立會是0 Placement
接著點擊 Placements > BANNER
找到剛剛設定的 Ad Unit 滑到後面點擊 Add Placement
- 此時你只能選 Waterfall
- 設定 Placement Name
- 這裡我沒設定目標金額,所以我啟動 Backfill/auto-eCPM Placement
- 最後點擊 Add Placement
11. SDK Network Setup
回到 ironSource Dashboard,點擊 SDK Networks。
一開始確認一下是否有看到 Unity Ads,如果沒有的話,可手動加上。
點擊 Manage Networks
確認 ironSource 和 Unity Ads 已經安裝
設定 Unity Ads Setup
總共有兩個 Unity Ads Setup,BIDDING 和 NON BIDDING,我不知道詳細的關係,因為我之前 Unity Monetize 選擇的是 Bidding,我不確定是否有差異,暫時都將兩個都設定同樣的 Game ID 和 Placement ID。
Game ID 在之前的已經有叫大家截圖下來了,在此就不再贅述。
下圖是 Rewarded Video 的 Placement ID。
Placement ID 位置在 Unity Gaming Services > Monetization > Placements
最上面右邊紅框是廣告分類,選擇廣告分類,接著複製特定裝置的 Placement ID,例如下圖片是之前自訂的 BanneriOS Placement ID
以下是 ironSource 要求的資料和設定,我找很久,怕大家也跟我一樣,先截圖給大家,方便查找。
Game ID
Mediation Partner
12. ironSource 啟動測試
測試模式是用來測試廣告功能的,測試完畢後,記得要關掉,不然在測試模式看廣告是沒有收益的。
回到 ironSource Dashboard,點擊 SDK Networks,在 BIDDING 的 ironSource 點擊 Edit Network。
將要測試的廣告類型啟動測試模式
需注意的是,原本 Unity Editor 不能測試廣告,後來 iOS Simulator 也不能測試,只能在真實的裝置上才能測試,這是 ironSource 自己限制的,未來也許會慢慢開放,在還沒開方之前,只好先忍耐一下了。
13. 實作廣告程式
14. xcode project 設定
Info.plist 新增幾個屬性
按照 Step 3. Additional settings for iOS 說明,新增一些屬性,這個部分用途我不太清楚,暫時先照做。
還有 Unity Gaming Services > Monetization > Settings,有一個 Missing SKAdNetwork Ids from Info.plist 項目,保險起見也把他加進 Info.plist,把下圖黑色那段的內容添加到 SKAdNetworkItems Array 裡面。
xcode build failed
如果你看到錯誤訊息是有關 bitcode,我不清楚這是什麼錯誤,我暫時先把 Enable Bitcode 設 No 跳過此問題。
參考
相關文章:
一杯咖啡的力量,勝過千言萬語的感謝。
支持我一杯咖啡,讓我繼續創作優質內容,與您分享更多知識與樂趣!