2014年1月6日 星期一

貓也會的:如何用Unity iOS開啟另一個Unity程式

其實很簡單,是利用URL Scheme的方式。

先假設要被開啟的APP叫做BeenOpenAPP,然後要開啟別的程式的APP叫RootAPP。

第一件事當然是先建立BeenOpenAPP這個APP,但要注意的是不要直接在Unity中Build and Run,接下來必須要在XCode project中做一些手腳。
第二件事是在Unity所建立的BeenOpenAPP專案檔中的Info.plist中加上我們要作為識別用的URL Scheme:



在這個例子裡我就直接設定叫做BeenOpen。

然後,在RootAPP的Unity程式碼中找個你想要開啟BeenOpenAPP的地方,加上:
    Application.OpenURL("BeenOpen://test");
這樣會去開啟有BeenOpen這個URL Scheme的app(也就是我們的BeenOpenAPP)。

而後面所帶的"test"可以用另外的方式在native code中取出來,但會需要修改到BeenOpenAPP的XCode專案檔,再用UnitySendMessage()的方式由iOS的native code傳送這個訊息到Unity中。


我自己試驗的時候有意外碰到一個小問題,是Unity所建立出來的App都會是同一個,也就是說我建好的BeenOpenAPP會在Build出RootAPP時被蓋掉。

解決方法是在Xcode Build Setting中設好Product Name,因為從Unity直接Build出來的Xcode Project會預設Product Name就是"Product Name",所以才導致後build的App會蓋掉先前的。
Build Setting->Packaging->Product Name


參考資料:
http://fredandrandall.com/blog/2011/07/30/how-to-launch-your-macios-app-with-a-custom-url/