Запускаем Flash из Safari на iPhone/iPad

    Имеется страница, Flash контент на которой необходим, а с iPhone и iPad сплошное расстройство.
    Например Flash графики.
    Казалось бы, пути два:
    1. Заменять Flash html5
    2. Заменять Flash статической картинкой

    Но… но можно немного поизвращаться. Третий способ под катом.

    Этот способ, к сожалению, не универсален и не подходит для всех приложений, но если надо показать Flash графики или что-нибудь подобное в странице — подойдет на ура.

    Идея


    1. Делаем iPhone версию приложения
    2. Правим Info.plist в приложении и добавляем URL Scheme для приложения (например anychart://)
    3. Добавляем в страницу детект iphone/ipad и редиректим в iTunes или открываем приложение
    Вуаля. Пользователь может увидеть график.

    Реализация


    Делаем iPhone версию приложения

    Первый шаг я даже не буду описывать. Кому интересно — хабратопик: habrahabr.ru/blogs/Flash_Platform/104538

    Правим Info.plist в приложении и добавляем URL Scheme для приложения (например anychart://)

    Второй шаг немного интереснее. Нам надо открыть сбилженый Flash-ем IPA и поправить в нем файлик.
    Все достаточно просто:
    1. Переименовываем ipa в zip
    2. Разархивируем


    3. Идем в разархивированную папку Payload и видим там папку приложения. Идем в нее (на Mac через Show package contents)


    В этой папке лежит необходимый нам файл Info.plist
    В Mac он редактируется через Property List Editor, но можно править любым текстовым редактором.
    Нам надо добавить в корень URL types, в нем в Item 0 добавить URL Schemes, а в нем уже прописать URL схему для приложения. Например, чтобы приложение открывалось по ссылке вида myflashapp://param=123, нам надо прописать myflashapp.

    Скрин:


    Если Mac-а под рукой нет и правим в текстовом редакторе, то в корневую ноду <dict> надо добавить следующее:
    <key>CFBundleURLTypes</key>
    <array>
        <dict>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>myflashapp</string>
            </array>
            <key>CFBundleURLName</key>
            <string></string>
        </dict>
    </array>

    Скрин:


    Все. Дальше сохраняем файлик, пакуем Payload обратно в zip архив и переименовываем в ipa. И ставим на девайс.

    Теперь наше приложение будет открываться в Safari по ссылке.

    Например:
    <a href=«testflashapp://?test=123»>Open app</a>

    Добавляем умную ссылку

    Простой код, который или откроет приложение, или редиректнет в iTunes для установки приложения:

    setTimeout(function() {
        window.location = «itunes.com/apps/yourappname»;
    }, 25);

    // If «custom-uri://» is registered the app will launch immediately and your
    // timer won't fire. If it's not set, you'll get an ugly «Cannot Open Page»
    // dialogue prior to the App Store application launching
    window.location = «custom-uri://»;

    Бонус пак

    Параметры, переданные приложению, ловить в InvokeEvent.INVOKE
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама
    Комментарии 18
    • +6
      КОСТЫЛЬ
      • –1
        Но при этом дешевый
      • +2
        >Но… но можно немного поизвращаться.

        Ключевая фраза.
        • +1
          Извращение еще то;)
          • +1
            OMG, нет — уж лучше заменяйте на html5.
          • –1
            Если очень надо, то FusionCharts неплохо рисует графики в HTML5.
            • +1
              Ну не совсем они) Они просто перепродают html5 графики.
              • +1
                Они перепродают html5 рещение. Сами html5 графики не их.
                • +1
                  Сори первый раз коммент не опубликовался
              • –1
                А разве после изменения Info.plist не поломается цифровая подпись для сабмита в AppStore?
                • +1
                  Приложения подписываются непосредственно перед сабмитом. До этого момента можете менять контент IPA'шки как угодно.
                  • 0
                    Та ладно, Application Loader ничего не подписывает.
                  • 0
                    Можно пересобрать снова через Flash Packager
                  • 0
                    Жестокий костыль, но есть еще хуже… см. в Cydia.

                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.