2014/08/12

(iOS) Youtube iframe 在 Apple TV 上的播放問題

問題:

有一個頁面使用WebView + Youtube iframe 播放 live channel,在手機上播放正常,但如果使用AirPlay功能cast到Apple TV的話則會出現“ an error occurred loading this content ”。
如果播放的是非live則可以正常運行。

處置:
  • 用電腦開啓Plex Home Theater作為測試裝置,可以播放live,故應該不是AirPlay本身不支援live。
  • 由於以相同的程式碼來作處理時,單則節目可以播放而live不行,故認為是Apple TV那邊無法處理。
  • Apple TV裡的Youtube app 完全搜尋不到Live的節目。
  • 一開始懷疑是訊號來源問題,比方是否為Apple TV無法處理Youtube廣告要求,但查明目前並沒有廣告。
  • 後來發現Youtube官方iOS app並不會有這樣的問題,懷疑如果我不透過iframe的方式也許可以處理。
  • 最後使用https://github.com/hellozimi/HCYoutubeParser來做處理,取得直接播放的URL,則可正常在Apple TV上播放。
  • 在使用HCYoutubeParser上需要小心,因為Youtube曾經改變過responceData,所以會有不能用的風險,這個要自行承擔。

2014/06/27

使用sublime為unity編輯器 in mac 之 CompleteSharp設定障礙排除

標題下得很長
基本上是記載依照http://wiki.unity3d.com/index.php/Using_Sublime_Text_as_a_script_editor的步驟進行時
CompleteSharp這個plugin在mac環境上遇到的一些問題

1. CompleteSharp的安裝
個人測試在windows可以用package control直接安裝成功
而在mac下會出現Unable to download CompleteSharp的錯誤
這時候只能手動安裝
有兩種選擇

a) clone  https://github.com/ewilde/CompleteSharp 到 Package資料夾
不需其他處理(建議)

b) 需事先安裝mono (下載http://www.go-mono.com/mono-downloads/download.html)
clone  https://github.com/quarnster/CompleteSharp 到 Package資料夾
再執行CompleteSharp/build.py

2. CompleteSharp project setting
在mac環境中會用到completesharp_mono_path這個參數
wiki中寫的completesharp_mono_path是3.x 版時的路徑
4.x版可改為如下

2014/06/06

Crashlytics 申請使用記錄

相較於Crittercism
Crashlytics專注於crash的記錄與統計
且目前為免費使用(2014/6/6)

要申請Crashlytics帳號必須先在http://try.crashlytics.com/留下你的資料
個人經驗是下午三點申請大概晚上9點就回覆你了
會收到兩封信
一封是Invitation
另一封是確認你有沒有收到Invitation的信件會要求你回覆(我有回覆,但感覺只是CRM的信件)

從Invitation裡的按鈕進入並依他的步驟一直往下走會進到下載plugin的頁面
個人覺得這是Crashlytics的特色
透過一套plugin讓使用者在設定過程中得到幫助與需要的說明
並在有crash時提供一個清單讓你觀看
這裡我試裝了XCODE與Eclipse兩個plugin
XCODE會出現在右上角系統bar中
而Eclipse會出現在Eclipse Toolbar當中

以XCODE版為例
一開始按下ICON後會出現以下畫面
基本上就是將我的XCODE專案都列出來方便我選擇要使用Crashlytics的專案
在這裡選擇專案以後會出現設定的說明如下
這裡說明了要你在target中加一個Run Script並將設定內容列出來
要注意的是這裡已經幫你在該專案中加了Crashlytics.framework
當你完成設定並build之後他就會進到接下來的步驟像是framework設置以及程式碼的增加
我覺得這個教學的步驟對新手而言可以保證他設定完成
但對有經驗的人可能有點多餘
另外提一下,Eclipse版在選完專案後甚至幫你把Androidmanifest.xml設定與程式碼加進去

設定完成後就可以開始故意讓程式crash來測試
此時crash就會出現在清單中了
根據個人測試,plugin上的crash清單反應似乎沒有web快,需要多等幾分鐘才會出現

點擊清單上的crash項目後會在瀏覽器上開啟該crash的詳細訊息
此時就可以依照錯誤訊息除錯囉

P.s. 尚未測試過,不確定NDK crash狀況是否可以正確呈現 
Evernote 幫您記住生活的點點滴滴,輕鬆保持條理。下載 Evernote

2014/05/19

自製2048 for Chromecast

近日在看Chromecast的相關文件,發現他可以自己做receiver app
receiver app是以HTML5來製作  但由於有一些效能限制 所以製作時需要注意
只要符合條件  基本上也是可以做遊戲的
剛好最近很紅的2048是開源的  所以就以它來當作例子
其實2048已經有人移植到chromecast上了
但反正是要做一個測驗所以無所謂

以下是實際成品的聯結

其實做起來並不難,主要分為兩個部分(receiver and sender),基本API的用法就不贅述,可以看

receiver
由於2048遊戲部分不太需要去寫邏輯部分,故主要只要處理訊息的接收與發出即可
初始化部分:
在 application.js 中 window.requestAnimationFrame中加入
這裡我有一個部分是用偷懶的做法
window.senderId=event.senderId; 這裡將senderId放在window底下以便之後要回傳訊息使用
但個人覺得不是好的做法 但這是測試用的程式就先略過

鍵盤事件接收部分  在 keyboard_input_manager.js 中的KeyboardInputManager.prototype.listen方法中加入
將sender傳送過來的訊息對應該做的行為

當玩家無法再移動或者是已達到2048的時候都會有訊息出現,在這種狀況下可以回傳訊息給sender出現相對應的操作界面,為此修改html_actuator.js如下

sender
這裡我做了兩個平台的sender程式,其實主要也是改google的範例程式
chrome版主要就是把keyboard event send給receiver
android也是差不多, 只是把swipe的方向改為對應的key code傳給receiver
另外接收遊戲結束的訊息跳出對應的AlertDialog

或許下次可以試試看現有 html5遊戲引擎在chromecast上的效能



以下為參考資料

模擬器
模擬器感覺在自定receiver app的部分支援並不完整  實機測還是比較好
以下是目前有看到的模擬器

CR Cast (chrome 擴展)
Leapcast (python, run on chrome)
android 模擬  cheapcast (跑不起來)
rPlay on iOS


Developer Console
由於要自行開發receiver app所以需要開通Developer Console   
需要五元美金  如果只是要cast媒體就不需要

如圖,可以設置APP 與 測試用裝置
如果Application不是Published的話則要有輸入的裝置才能使用

目前已有的遊戲應用
下面有兩個已在 Google Play上架的應用
GamingCast (for Chromecast)
2048 Chromecast

Evernote 幫您記住生活的點點滴滴,輕鬆保持條理。下載 Evernote