
雖然這問題"只"浪費了我一天半的時間
但我內心還是覺得相當肚爛 =.=
說到我最近主要的工作內容
就是一邊開發新專案
一邊優化舊有專案的廣告營收
每天看各個廣告成效如何
已經是社長每天的日常
哪個廣告表現的不理想
就去調整哪個廣告
就是老娘我每天的日常。

因為被一個機車的問題卡很久
一邊Debug一邊滿肚子苦水
實在是不吐不快!

馬的這什麼鳥問題~~!!!!
在我說明是什麼問題
以及我怎麼解決的
先簡單說一下我們的遊戲裡
大約都用到哪些廣告好了。

就是通常會在畫面最底下的那一橫板)
以前的遊戲常常會設計成容易誤點它
不過....現在應該很少人這麼做
因為以Google Admob 為首
大部份有提供Banner廣告的廣告商
都已經把誤點的判定處理掉了
所以現在想要靠Banner賺錢
已經不是那麼容易~
玩家幹譙度:★★


像這樣融入在遊戲介面中的廣告
就叫做原生廣告
如果做的好
甚至會讓人看不出來它是廣告
原生廣告的部份目前我們試用的心得
都是日本廣告商提供的比較完整
加上我們的遊戲適性為日本市場
所以Native廣告也曾經為我們帶來不少營收
玩家幹譙度:★

如果玩家們不想要花錢
又想要拿到遊戲中的虛擬道具
那麼就提供他們一種
不用花錢只需花點時間(幫你點)
就能享用半套功能的影音廣告
這種廣告剛出來的時候
簡直就是廣告界的Rock Star!
讓大家都迫不及待想點廣告
沒廣告點還會生氣
根本就顛覆了廣告界的遊戲規則 XD
現在這種獎勵廣告模式已經相當成熟
也是我們廣告營收的主力之一
玩家幹譙度:☆
好了,那麼就如標題所說
那個萬惡的全版廣告Interstitial竟然給我出了問題!

蝦密!之前的版本就會發生了喔?
(拿出自家其他遊戲來測測看)

Interstital的部份我們使用的是
Google提供的
GoogleMobileAds for Unity的plugin
(v3.13.1)
這個plugin是在今年4/14釋出的
照理來說應該還算新吧
於是一邊對照Google提供範例
開始檢查播放廣告的流程有無錯誤
改寫原本看起來可能不靠譜的code
用乖乖牌的方式整個重順一遍
聽起來就跟一般Debug沒啥兩樣
實際上卻不然!
測這種第三方plugin最討厭了!
因為沒辦法在Unity裡直接測
都要編到實機上做測試
也就是說
只要有任何一點點變動
想知道有什麼結果
都得重新build到手機上!
結果試了n次都沒有用Orz
還以為是不是要自己手動
在放全版廣告前
先把遊戲音樂關掉
廣告關掉後再重新打開
之類的我也給它試了 還是沒有用
就這樣在不斷的在
加log->測試->改寫->測試
之間 時間就這樣流逝......

我的青春不是這樣浪費的啊
過程中也一直問TMD的Google大神
結果似乎沒有太多跟我這個問題相關的
唯獨找到一篇:
https://github.com/googleads/googleads-mobile-unity/issues/565
內文提到的問題
就跟我一模一樣!+.+
發文者說他寫了一個fix的code
但卻沒說這個方法到底有沒有成功
然後底下留言又說
他把自己fix的code拿掉以後
就又正常ok了....
在我說明是什麼問題
以及我怎麼解決的
先簡單說一下我們的遊戲裡
大約都用到哪些廣告好了。
傳統的橫幅廣告 (Banner)
就是通常會在畫面最底下的那一橫板)
以前的遊戲常常會設計成容易誤點它
不過....現在應該很少人這麼做
因為以Google Admob 為首
大部份有提供Banner廣告的廣告商
都已經把誤點的判定處理掉了
所以現在想要靠Banner賺錢
已經不是那麼容易~
玩家幹譙度:★★
全畫面的插頁廣告 (Interstitial)
如上圖把整個遊戲畫面全部蓋住的全版廣告
通常會在玩完遊戲一局於結果畫面時秀出
不過因為完完全全把遊戲遮住
會中斷玩家的體驗
必須要很小心很小心的使用
但也因為它真的很討厭的這一點
反而被開發者們拿來發揮
比如說花$2.99之類的
就能把廣告去除的「無廣告」功能
不要小看這個功能
如果遊戲內容與廣告設計得當
事實上真的不少人會願意花錢把廣告拿掉的喔
玩家幹譙度:★★★★
原生廣告 (Native)
像這樣融入在遊戲介面中的廣告
就叫做原生廣告
如果做的好
甚至會讓人看不出來它是廣告
原生廣告的部份目前我們試用的心得
都是日本廣告商提供的比較完整
加上我們的遊戲適性為日本市場
所以Native廣告也曾經為我們帶來不少營收
玩家幹譙度:★
影音式獎勵廣告 (Rewarded Video)
如果玩家們不想要花錢
又想要拿到遊戲中的虛擬道具
那麼就提供他們一種
不用花錢只需花點時間(幫你點)
就能享用半套功能的影音廣告
這種廣告剛出來的時候
簡直就是廣告界的Rock Star!
讓大家都迫不及待想點廣告
沒廣告點還會生氣
根本就顛覆了廣告界的遊戲規則 XD
現在這種獎勵廣告模式已經相當成熟
也是我們廣告營收的主力之一
玩家幹譙度:☆
好了,那麼就如標題所說
那個萬惡的全版廣告Interstitial竟然給我出了問題!

咦?為什麼按叉叉把全版廣告關掉後,我的遊戲就沒聲惹???
先說,這個問題只有發生在iOS
本來一切安好
就如往常的把這次要更新的功能
做好做滿也測好測滿
只等我把它送出去
想說再測最後一次好了.....
玩到死掉...進到遊戲結果畫面....
廣告跳出來....按叉叉關掉....... !!????
咦?為什麼聲音都不見溜?

本來一切安好
就如往常的把這次要更新的功能
做好做滿也測好測滿
只等我把它送出去
想說再測最後一次好了.....

廣告跳出來....按叉叉關掉....... !!????
咦?為什麼聲音都不見溜?

怎麼會這樣咧?
之前不是還好好的嘛?
(拿出舊的版本測測看)

蝦密!之前的版本就會發生了喔?
(拿出自家其他遊戲來測測看)

蝦毀!?原來其他的也有這個問題喔?
Interstital的部份我們使用的是
Google提供的
GoogleMobileAds for Unity的plugin
(v3.13.1)
這個plugin是在今年4/14釋出的
照理來說應該還算新吧
於是一邊對照Google提供範例
開始檢查播放廣告的流程有無錯誤
改寫原本看起來可能不靠譜的code
用乖乖牌的方式整個重順一遍
聽起來就跟一般Debug沒啥兩樣
實際上卻不然!
測這種第三方plugin最討厭了!

大嫌いだ〜〜!!
因為沒辦法在Unity裡直接測
都要編到實機上做測試
也就是說
只要有任何一點點變動
想知道有什麼結果
都得重新build到手機上!
結果試了n次都沒有用Orz
還以為是不是要自己手動
在放全版廣告前
先把遊戲音樂關掉
廣告關掉後再重新打開
之類的我也給它試了 還是沒有用
就這樣在不斷的在
加log->測試->改寫->測試
之間 時間就這樣流逝......

我的青春不是這樣浪費的啊
結果似乎沒有太多跟我這個問題相關的
唯獨找到一篇:
https://github.com/googleads/googleads-mobile-unity/issues/565
內文提到的問題
就跟我一模一樣!+.+
發文者說他寫了一個fix的code
但卻沒說這個方法到底有沒有成功
然後底下留言又說
他把自己fix的code拿掉以後
就又正常ok了....

幹!這樣到底是有沒有ok?
就在我窮途末路之際
我突然覺得......
馬的這會不會其實是Google自己的bug?
算了,管它是不是Google的bug
我決定把它當Google的bug來處理!
兇手就是你~~~!!!!
於是我打開GoogleMobileAds plugin裡
找到要秀出Interstitial廣告的地方
然後加了一行code:

然後就可以了。
然後就可以了。
然後就可以了。

馬的把我的青春還給偶~~~!!!!!!
以上。
這個問題目前是發生在
GoogleMobileAds for Unity v3.13.1的版本
而且只有iOS會有這個問題
也不知道是不是到時候
隨著新版本的更新
這個問題自然就會不見
一般來說都是不建議去改Plugin或是SDK的code
(因為那畢竟是人家的code
要修正要改也都應該是人家去處理)
不過如果你也碰到這個問題
像我一樣走頭無路了
你也可以先這樣來做修正
不要像我一樣浪費了一天半的青春.......

完整修改方法如下:
在Unity專案底下找到GADUInterstitial.m檔
(記得是改Unity裡面那份
不要改到Xcode裡的那份)
然後找到show的method
就在我窮途末路之際
我突然覺得......
馬的這會不會其實是Google自己的bug?
算了,管它是不是Google的bug
我決定把它當Google的bug來處理!

於是我打開GoogleMobileAds plugin裡
找到要秀出Interstitial廣告的地方
然後加了一行code:
[[GADMobileAds sharedInstance]audioVideoManager].audioSessionIsApplicationManaged = true;

然後就可以了。
然後就可以了。
然後就可以了。

馬的把我的青春還給偶~~~!!!!!!
以上。
這個問題目前是發生在
GoogleMobileAds for Unity v3.13.1的版本
而且只有iOS會有這個問題
也不知道是不是到時候
隨著新版本的更新
這個問題自然就會不見
一般來說都是不建議去改Plugin或是SDK的code
(因為那畢竟是人家的code
要修正要改也都應該是人家去處理)
不過如果你也碰到這個問題
像我一樣走頭無路了
你也可以先這樣來做修正
不要像我一樣浪費了一天半的青春.......

完整修改方法如下:
在Unity專案底下找到GADUInterstitial.m檔
(記得是改Unity裡面那份
不要改到Xcode裡的那份)
然後找到show的method
在function第一行加上上面那行code:
就這樣。
社長說

是喔,妳解決了喔?
妳應該要po出來造福一下大家
不要都默默的把bug解掉啊
不知怎麼地聽了有點火大
不過似乎有番道理
以後就都記錄下來吧
希望這個問題不要再困擾到更多人了
- (void)show {
if (self.interstitial.isReady) {
[[GADMobileAds sharedInstance]audioVideoManager].audioSessionIsApplicationManaged = true;
UIViewController *unityController = [GADUPluginUtil unityGLViewController];
[self.interstitial presentFromRootViewController:unityController];
} else {
NSLog(@"GoogleMobileAdsPlugin: Interstitial is not ready to be shown.");
}
}
就這樣。
社長說

是喔,妳解決了喔?
妳應該要po出來造福一下大家
不要都默默的把bug解掉啊
不知怎麼地聽了有點火大

不過似乎有番道理
以後就都記錄下來吧
希望這個問題不要再困擾到更多人了
0 意見:
張貼留言