標籤:
為了支援arm64,之前已經折騰了很久,昨晚打包準備提交蘋果審核時,測試那邊的同事反饋說遊戲上傳自訂頭像功能不可用了。
遊戲上傳自訂功能的簡介:卡牌遊戲最初是《比武招親》中有一個充VIP之後就可使用了上傳自訂功能的特權,我們的遊戲就“複製”了該功能。
具體實現就是點擊遊戲內換自訂頭像的按鈕後,調用不同平台相應的方法,擷取使用者選擇的圖片資料,然後將圖片裁剪再傳給後台儲存至特定的目錄下。
測試裝置是ipad air2,系統版本IOS 8.0.1,點擊遊戲內的按鈕直接無響應了。
第一個問題:點擊後無響應
原因是 UIActionSheet 的showInView方法的參數上,之前設定的是self.view.window (NSInvalidArgumentException, reason:Sheet can not be presented because the view is not in a window)
第二個問題:點擊選擇相簿按鈕後無下文了
這裡也有二個問題,一是顯示的按鈕只有一個“選擇相簿”
原因是UIActionSheet在ios8中已經被棄用了(點擊查看詳情>>),使用UIAlertController進行替代,這裡有兩篇檔案介紹它:
UIAlertController in IOS8>>
UIAlertController>>
跟蹤代碼後,發現它在調用UIPopoverController的presentPopoverFromRect方法後,直接就調用了popoverControllerDidDismissPopover方法
通過搜尋“ios8 ipad UIPopoverController ”找到了這個連結(UIPopoverController not presenting in iPad iOS 8),一看到stackoverflow.com就感覺到有救了,今天不用再通宵了…
從元旦放假回來上班第一天開始,算今天已經連續加了7天班,遇到的幾個問題都特別陌生,無力感很重也很沮喪,沒什麼頭緒,感覺無從下手,曾經有個問題二三天的時間我看著那個崩潰卻找不到動手的地方。對那個領域或者那個東西太過陌生,而且google正好被牆掉了訪問起來斷斷續續的。現在問題被解決了,回想起來,運氣成分真的很大。因為很多問題我跟測試他們講,再讓我解那個bug,我不會想到那個地方上去。
最近一次更新功能之後,IOS裝置上的重啟按鈕,點擊後遊戲直接閃退了,機率比較高。斷點之後,望著螢幕上crash的地方百思不得其解,底層是cocos2d-x 2.x版本,上層是用C++包裹的一層,然後上面又是Lua包了一層,查堆棧也實在找不到哪個地方調用了特殊的什麼東西,重啟那塊邏輯代碼又沒動過,真是鬱悶。前一晚上搞到大半夜放棄了,回家睡覺都在做夢,第二早上都查了一上午,還是沒找到。中午吃過飯,再看那個crash的地方 cocos2d-x中的CCDictionary.cpp objectForKey方法的斷點掛掉了
斷言的這行代碼直接掛掉了,再往上一個調用,來源於CCINode.cpp,網上又搜尋了一下,我們使用的代碼是將網上的代碼修改了一下,也沒發現問題,貌似無解了。當我準備放棄的時候,突然卻想到新功能中主介面有一個功能上面有調用swf進行特效的顯示,然後我看了一下它被隱藏了。那我想既然隱藏了,那就不要讓它play嘛,結果試了一下,嗯,不崩潰了!好神奇,然後代碼又調回去,試了一上,好了!居然好了! 日誌顯示其實遊戲已經啟動了,都開始請求CDN上的資源了,只是介面還停留在重啟那個介面,但崩潰的點卻掛在了CCDictionary.cpp中。
換成IOS8.1的SDK後,上傳頭像功能不可用了,搜尋了好久發現都跟自己的問題對不上,當輸入特定的關鍵字時出來的第一條就是自己想要的,結果幾分鐘就把問題解決了,但找相應答案之前卻已經花了將近4個小時…
從JavaScript網頁開發,到ActionScript網頁遊戲開發,再到C++的手遊開發,一路走來,感覺真是摸著石頭在過河,移動平台的版本升級之快,讓我等開發人員有切膚之痛。我真希望,有一天我能主導基於HTML5的遊戲架構並應用於型項目中,我期望這一天,風水輪流轉嘛。端遊 –> 頁遊 –> 手遊,今日之手遊開發模式猶如昨日之端遊。
作為手遊開發人員,要學習和掌握的知識的比較廣:C++底子要用吧,Lua至少能用的很順手吧,Android要比較熟悉吧(不然怎麼接SDK,修一些bug呢),IOS也是一樣,不然就像我經常面臨的問題一樣,各平台上的鍵盤、上傳頭像等問題就像一座大山擋在了你的面前。沒有比較紮實的基本功,很難應付的了一個接一個的問題,這還不談遊戲具體某些功能實現上的問題。路漫漫其修遠兮,吾將上下而求索!
升級IOS8遊戲上傳自訂頭像功能失效的問題