Pull to refresh

Делаем iphone приложение на Flash CS5

Reading time4 min
Views6.1K
Итак, в связи с тем, что Apple сняли волшебное ограничение и теперь на Adobe Flash CS5 можно официально делать iPhone/iPad приложения (детали: flash-ripper.com), вашим глазам представляется тутор — как сделать это своими руками.

Что сделаем:
Простенький p2p чат

Что потребуется:
1. Adobe Flash CS 5 (качать с adobe.com)
2. iPhone Certificate (не пугайтесь, расскажу где взять)
3. (по желанию) jailbroken iphone/ipad

Итак, поехали…

Создание iphone приложения


Открываем Adobe Flash CS 5 и в Create New выбираем iPhone OS:

Вуаля. Теперь можно творить.

(в принципе вы можете пропустить все до Deploy и сделать любое свое приложение, но дело ваше)
Поперетаскиваем на приложение компоненты:


Поясню что и зачем:
Your id — это id, который присваивает Adobe Stratus. По этому id можно будет установить p2p соединение с приложением и слать аудио/видео/команды напрямую.
Remote id — это id, с которым мы соединимся/соединились

Остальное должно быть понятно.

Прописываем id-шники.
TextInput возле Your Id обзовем localIdText и сделаем read-only
TextInput возле Remote Id обзовем remoteIdText
Большую и страшную TextArea обзовем chatLog
Кнопку Connect — btnConnect
Кнопку Send — btnSend

Теперь небольшой код для фрейма:
import flash.net.NetConnection;
import flash.events.MouseEvent;
 
const SERVER_ADDRESS:String = "rtmfp://stratus.adobe.com/";           
const DEVELOPER_KEY:String = "зарегестрируйтесь в adobe stratus и вам его дадут ;-)"
 
var connection:NetConnection;
var streamIn:NetStream;
var streamOut:NetStream;
 
var isInStreamInitialized:Boolean;
 
enabled = false;
 
connection = new NetConnection()
connection.addEventListener(NetStatusEvent.NET_STATUS,connStatus);               
connection.addEventListener(AsyncErrorEvent.ASYNC_ERROR,asyncErr);               
connection.connect(SERVER_ADDRESS+DEVELOPER_KEY);  
 
function connStatus(event:NetStatusEvent):void{
if (event.info.code == "NetConnection.Connect.Success"){
localIdText.text = connection.nearID
initOutStream();
}
}
 
function asyncErr(event:AsyncErrorEvent):void{
trace(event);
}
 
function initOutStream():void{
 
isInStreamInitialized = false;
 
enabled = true;
 
streamOut = new NetStream(connection,NetStream.DIRECT_CONNECTIONS);
streamOut.addEventListener(NetStatusEvent.NET_STATUS,streamStatus);
streamOut.publish("media");
 
var streamOutClient:Object = new Object()
streamOutClient.onPeerConnect = function(farStream:NetStream):Boolean{  
remoteIdText.text = farStream.farID;
initInStream(farStream.farID);
chatLog.text = "[Connected]\n"+chatLog.text;
return true;         
};
streamOut.client = streamOutClient;
}
 
function initInStream(farID:String):void{
if (isInStreamInitialized) return;
streamIn = new NetStream(connection,farID);
streamIn.addEventListener(NetStatusEvent.NET_STATUS,streamStatus);
streamIn.play("media");
streamIn.client = this;
isInStreamInitialized = true;
}
 
function streamStatus(event:NetStatusEvent):void{
trace("streamStatus: "+event.info.code);
}
 
function receiveMessage(msg:String):void{
trace("receiveMessage: "+msg)
chatLog.text = "<< "+msg+"\n"+chatLog.text;   
}
 
function sendMessage(msg:String):void{
streamOut.send("receiveMessage",msg);
chatLog.text = ">> "+msg+"\n"+chatLog.text;
}
 
btnSend.addEventListener(MouseEvent.CLICKfunction(e:MouseEvent):void {
sendMessage(messageText.text);
messageText.text = ""
 });
 
btnConnect.addEventListener(MouseEvent.CLICKfunction(e:MouseEvent):void {
initInStream(remoteIdText.text);
});


Пояснять его не буду. Кому интересно — Добро пожаловать в комментарии.
На тему самого кода и использования Flash-евых компонентов — да, криво, да, можно нормально — но это же просто эксперимент ;-)

Deploy


Итак, приложение сделали. Cmd+Enter (или Ctrl+Enter)… и мы видим standalone плеер.
Но это же скучно :-( Хочется увидеть приложение на девайсе. Пощупать его.
Приступим. Сначала надо собрать ipa.
Publish IPA

Для того, что бы сделать ipa, нам потребуется iPhone certificate.
Получить его можно двумя способами:
1. Вы зарегистрированный Apple Developer, заплатили 100$ и у вас уже есть волшебный файл
2. Вы просто хотите попробовать сделать iPhone приложение, или же сделать приложение для Cydia
В первом случае все и так есть :) Во втором идем и качаем p12 отсюда

Теперь настроим publishing. Открываем File -> Publish settings. Переходим на вкладку Flash.
Возле Player: iPhone OS давим кнопку Settings:

Во вкладке Deployment укажем путь к сертификату p12
Password: 1234
Так же укажем Provisioning profile. В результате получится примерно так:


Все. Теперь давим File -> Publish и грустно ждем…


В папке c fla у нас теперь лежит ipa. Уря! Осталось чуть-чуть

Запуск ipa на iPhone/iPad

Расскажу как это сделать в случае, когда используется серый ключик + jailbroken device.
А сделать это очень просто:
1. Двойной щелчок по ipa — откроется iTunes и в приложения добавится наш ipa
2. Синхронизация с девайсом — приложение на девайсе
Собственно все!

Чат в действии:
iPad:


Mac:

(id я набирал руками)

Архив с fla и ipa:
http://batsuev.com/habr/p2p-chat.zip
Tags:
Hubs:
+74
Comments60

Articles