最近在開發ios遊戲的時候遇到一些周邊的問題,都不是什麼大問題(對高手來說都是小兒科),但都耽誤了一些開發時間。這裡記錄下來,做個總結,以後還會不斷地在後面更新。如能夠協助一些剛開始開發ios遊戲的朋友,也還不錯。
1 在給認證後的機器製作測試包的時候,scheme中的archive應該設定為debug。release的包無法在測試機器上安裝。
2 在建立test user以測試IAP的時候,應該用一個新的Apple ID,而不能是一個已經註冊過的Apple ID。另外,在裝置上進行IAP測試的時候,必須將settings中的store的使用者sign out,且一定不能把test user給sign in到裡面,這會導致sandbox user和實際的app store機制串連,從而將test user無效化。在IAP測試的時候,選擇use existing apple ID,然後輸入test user的資訊才ok。
3 IAP的兩種模式,後者會用custom server繞過client和Apple server直接進行一次驗證,以檢測client和Apple server確實互動過,而不是作弊工具假裝Apple server。
4 在遊戲過程中按home鍵,會首先讓遊戲resign active,然後enter background,在ios中操作回到遊戲後,遊戲首先會enter foreground, 最後become active,這會分別調用delegate的四個方法:
- (void)applicationWillResignActive:(UIApplication *)application
- (void)applicationDidEnterBackground:(UIApplication *)application
- (void)applicationWillEnterForeground:(UIApplication *)application
- (void)applicationDidBecomeActive:(UIApplication *)application
而有些事件,比如IAP或者來電,因為不牽扯後台掛起,則只會resign active和become active,並不會enter background和enter foreground。利用這一點可以做一些實際工作,比如防作弊的c/s時間同步等等。
5 在第一次部署ubuntu的mysql資料庫的時候,/etc/mysql/debian.cnf中的使用者名稱和密碼可以保證在其他使用者名稱密碼出問題時用於登陸mysql。另外,如果不能從遠端連線到伺服器的mysql,可能有兩個問題:
(1)/etc/mysql/my.cnf中的bind-address被賦予了127.0.0.1——不能遠端存取。改為0.0.0.0就可以允許任何IP進行訪問了。
(2)mysql中的mysql表的root使用者的host為localhost,要設定為%。並且給root使用者佈建許可權:
grant all privileges on *.* to 'root'@'%' identified by 'password' with grant option;
flush privileges;
6. 用ssh串連伺服器之後,如果長時間沒有操作,再次操作時可能會產生
Write failed: Broken pipe
的錯誤。可以通過
ssh -o ServerAliveInterval=新的伺服器活動間隔時間 username address
的方式解決問題。
7. 有的ubuntu系統中沒有安裝curl,導致在使用php的https時失敗。可以通過以下方式安裝:
apt-get install curl libcurl3 libcurl3-dev php5-curl
安裝後需要重新啟動apache:
/etc/init.d/apache2 restart
通過phpinfo()也可以檢查是否安裝成功。