2.7.11

Запускаем flash приложение на iOS извне

Как известно, для запуска прилжения на iOS извне используются URL-схемы.
Самый известный пример - url типа tel://xxx, mailto://xxx, http://xxx
Достаточно выполнить переход по url такого вида и iOS переключится на приложение, где определена эта схема, а оно само обработает строку xxx.

Пользователям XCode хорошо известно как определить схему для своего приложения. Надо  всего лишь добавить пару ключей в Info.plist. Как же быть тем, кто разрабатывает мобильные приложения на Flash/Flex?



На хабре этот вопрос был освещен в статье "Запускаем Flash из Safari на iPhone/iPad". Там был описан путь с распаковкой полученного после упаковки ipa и изменением Info.plist.
На самом деле, не обязательно так себя утруждать.
Если вы используете Flash Builder, достаточно открыть app.xml, найти секцию <iPhone> и добавить определение схемы туда. Вот как это может выглядеть:

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<application xmlns="http://ns.adobe.com/air/application/2.6">
 
....
 
    <iPhone>
        <InfoAdditions><![CDATA[
   <key>UIDeviceFamily</key>
   <array>
    <string>1</string>
    <string>2</string>
   </array>
   <key>CFBundleURLTypes</key>
    <array>
        <dict>
            <key>CFBundleURLSchemes</key>
             <array>
                <string>flashapp</string>
             </array>
            <key>CFBundleURLName</key>
            <string></string>
         </dict>
    </array>
  ]]></InfoAdditions>
        <requestedDisplayResolution>high</requestedDisplayResolution>
    </iPhone>
 
\....
 
</application>
 

Тут определена URL-схема flashapp:// 
Для проверки устанавливаем приложение на девайс, запускаем Safari и пишем в адресной строке flashapp://bla-bla-bla. Вуаля! Приложение запустилось.

Запускать его теперь можно не только из Safari, но и из других приложений.
Вот как это будет выглядеть на Objective-C:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"flashapp://"]];


Но есть большое НО!
Из Flash приложение на iOS нельзя запустить свое приложение по URL-схеме.

flash.net.navigateToURL(new URLRequest("flashapp://"));
 
Запуск через navigateToURL() работает только для общеизвестных схем: tel://, mailto://, http:// и подобных.
Эта ситуация сильно огорчает.
Я пробовал разные способов это обойти - определение ссылки в webView, ссылки с таргетами _blank и т.п. результат один: ничего не происходит.
На форуме Adobe этот вопрос поднимался один раз, но так и остался без ответа.

Зарепортил баг (FP-7314), надеюсь это исправят.

1 комментарий:

  1. Макс здравствуйте.
    Подскажите пожалуйста возможно ли запустить "air app" по обычному 'uri' типа :
    http://maps.google.com/maps?q=London

    спасибо.

    ОтветитьУдалить