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

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

                      Самое читаемое