Как я могу создать ярлык на рабочем столе в iOS через приложение - PullRequest
5 голосов
/ 28 сентября 2011

Я имею в виду, что я хочу использовать приложение для создания ярлыка со значком на рабочем столе, который позволит пользователю ускорить доступ к некоторым функциям этого приложения.

Как я мог это сделать, какие-либо предложения? Или кто-нибудь имеет опыт работы с этим.

Пример: FaceDial

Ответы [ 4 ]

7 голосов
/ 21 июня 2017

Я потратил много времени, пытаясь внедрить эту функциональность в приложение недавно, и хотел выложить некоторые ресурсы, которые я нашел по этому вопросу, чтобы спасти кого-то еще от головной боли.Это становится все более популярной функцией и используется в основных приложениях, таких как Workflow и приложение групп Facebook.Учитывая, что Workflow теперь является приложением Apple, похоже, что у Apple тоже нет проблем с использованием этой техники.Ответ, предоставленный @jin, по сути правильный.Процесс выглядит примерно так:

  1. Зарегистрируйте пользовательскую схему URL для вашего приложения.Создайте динамические URL-ссылки, которые, когда вы будете следовать, приведут к содержанию, к которому вы хотите добавить ярлык.В настоящее время единственный способ добавить ярлык на трамплин для iOS - использовать функцию Safari «добавить на домашний экран».Поэтому мы хотим использовать Safari для сохранения наших пользовательских URL-адресов, которые ведут к нашему приложению, на трамплин.Суть в том, что вы не можете просто отправить свой URL-адрес в Safari и сохранить его, потому что это приведет к тому, что Safari сразу перейдет по ссылке, и у пользователя никогда не будет возможности нажать «Добавить на домашний экран».Таким образом, чтобы обойти эту проблему, вам нужно разместить веб-сервис где-то, который берет ваш URL и возвращает URL base64, который ваш пользователь может сохранить на домашнем экране.
  2. Чтобы создать этот веб-сервис, вы можете разместить его удаленно., который потребует, чтобы ваш пользователь был в сети, чтобы использовать его или встроить в свое приложение, что и делает Workflow и группы Facebook.Для встроенных серверов есть несколько довольно простых в использовании опций.Если вы используете target-c theres CocoaHTTP и если вы используете Swift, я бы порекомендовал Swifter , что я и использовал.
  3. Вашему веб-серверу необходимо отобразить страницу, которая возвращает другую страницу в формате, закодированном в base64, чтобы пользователь мог использовать ярлык после того, как веб-сервер перестает работать (очевидно, вы не можете оставить встроенный сервер работающим 24/7).Страница кодирования должна определить, была ли страница запущена в автономном режиме.Если это так, то это должно привести вас к вашему приложению, в противном случае он должен предоставить вам страницу, где пользователь может сохранить страницу на домашнем экране.Вот пример того, как мой html выглядел для службы:

    <!DOCTYPE html>
    <html>
    <div id="html">
        <!DOCTYPE html>
            <html>
                <head>
                    <title>Add to Homescreen</title>
                    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type"/>
                    <meta content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=no;" name="viewport"/>
                    <meta name="apple-mobile-web-app-capable" content="yes" />
                    <meta name="apple-mobile-web-app-status-bar-style" content="black" />
                    <meta content="SHORTCUT NAME HERE" name="apple-mobile-web-app-title"/>
                    <link rel="icon" type="image/png" href="data:image/png;base64, ICON IMAGE DATA"/>
                    <link rel="apple-touch-icon" href="data:image/png;base64, ICON IMAGE DATA"/>
                    <link rel="apple-touch-startup-image" href="data:image/png;base64, ICON IMAGE DATA"/>
                </head>
                <body>
                    <a id="redirectURL" href="YOUR CUSTOM URL" name = "redirectURL"></a>
                    <script>
                        if (window.navigator.standalone) {
                            var e = document.getElementById('redirectURL');
                            var ev = document.createEvent('MouseEvents');
                            ev.initEvent('click', true, true);
                            e.dispatchEvent(ev);
                            window.close();
                        } else {
                            document.write("<center><h1>Valet</h1><img id=\"imageIcon\" src=\"data:image/png;base64, IMAGE ICON DATA\"></img><h2> Add this page to your homescreen </h2></center>")
                        }
                    </script>
                </body>
            </html>
        </div>
        <script type="text/javascript">
            var html = document.getElementById("html").innerHTML;
            html = html.replace(/\s{2,}/g, '')
               .replace(/%/g, '%25')
               .replace(/&/g, '%26')
               .replace(/#/g, '%23')
               .replace(/"/g, '%22')
               .replace(/'/g, '%27');
            var dataURI = 'data:text/html;charset=UTF-8,' + html;
            window.location.href = dataURI
        </script>
    </html>
    

Вот список ресурсов по теме, которые мне помогли (Извините, у меня недостаточно репутации длявключите более 2 ссылок ... так что вам придется скопировать эти макароны):

  1. Отличный пример того, как веб-сервис работает с демонстрационной версией: https://gist.github.com/FokkeZB/5899387
  2. Еще один вопрос о переполнении стека, описывающий процесс: https://stackoverflow.com/questions/28042152/link-to-safari-add-to-home-screen-from-inside-app
  3. Отличный виджет JavaScript для подсказки пользователю нажать «Добавить на домашний экран» один раз в Safari: http://cubiq.org/add-to-home-screen
  4. Документация Apple по пользовательскому URLсхемы: https://developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Inter-AppCommunication/Inter-AppCommunication.html
  5. Документация Apple для встроенных схем, которая будет удобнее для ярлыка простой задачи, например отправки электронной почты: https://developer.apple.com/library/content/featuredarticles/iPhoneURLScheme_Reference/Introduction/Introduction.html
  6. Пример, показывающий, как base64 кодирует ваш HTML в Javascript: /5764472/preobrazovanie-html-v-dannye-tekstovaya-html-ssylka-s-ispolzovaniem-javascript

Дайте мне знать, если у кого-то есть вопросы!

4 голосов
/ 28 сентября 2011

Вы не можете добавлять значки на «рабочий стол» (Springboard), кроме вашего приложения.То, что делает это приложение, отображает точную копию «рабочего стола» iPhone в их приложении.

ОБНОВЛЕНИЕ: Ссылка теперь указывает на приложение, которое делает это, и кажется, что это возможнохотя скорее взломать на мой взгляд.

Вот как я считаю, что приложение работает (это похоже на ответ ниже, но более подробно).

  • Приложение создает изображение веб-клипа и отправляет его и номер телефона веб-службе.
  • Затем веб-служба создает страницу с прикрепленной информацией веб-клипа.Номер телефона / адрес электронной почты преобразуется в URL, который вызовет соответствующее приложение (Почта / Сообщения / Телефон). т.е. "+834 895 734" -> тел: 834895734 или смс: 834895734
  • Затем приложение открывает эту страницу в MobileSafari, и на этой странице
    предположительно есть инструкции о том, как "Добавить"на главный экран ".
  • Затем пользователю необходимо перейти к кнопке" Добавить на главный экран "и нажать на нее.Это добавит веб-клип в трамплин в виде значка.
  • При нажатии веб-клип активирует URL-адрес, и запускается Почта / Сообщения / Телефон с номером / электронной почтой

Вы можетереализовать что-то подобное (хотя я бы не предложил это).Вот следующие шаги:

  • Зарегистрируйте свою собственную схему URL
  • Где-нибудь разместите страницу, которая содержит веб-клип для каждой функции / URL, для которого вы хотите ярлыкза.Если URL-адреса не являются статичными или вам нужны динамические значки, вам понадобится веб-служба.
  • Обработайте URL-адрес в приложении с помощью этого метода AppDelegate

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url

Примечание: Если ваше приложение будет удалено, веб-клипы больше не будут работать и будут вводить пользователя в заблуждение.Apple также может отклонить ваше приложение.

2 голосов
/ 28 сентября 2011

Я думаю, что приложение работает следующим образом,

1) Оно просто создает HTML для каждого контакта

2) Оно использует функцию сафари "Добавить на домашний экран"

Найден отличный ответ для имитации функциональности сафари,

Я создал ссылку из Safari с помощью кнопки «Добавить на главный экран».Он создал каталог с именем 54C86B09482D4560BAB46091CC75825A.webclip внутри / private / var / mobile / Library / WebClips /.Этот каталог содержит два файла, icon.png и Info.plist.icon.png - это просто значок, который отображается при просмотре экрана приложений.Содержимое Info.plist содержит реальную информацию:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>ClassicMode</key>
        <false/>
        <key>FullScreen</key>
        <false/>
        <key>IconIsPrecomposed</key>
        <false/>
        <key>IconIsScreenShotBased</key>
        <true/>
        <key>Scale</key>
        <real>0.32653060555458069</real>
        <key>ScrollPoint</key>
        <dict>
                <key>x</key>
                <real>0.0</real>
                <key>y</key>
                <real>-183</real>
        </dict>
        <key>Title</key>
        <string>The Daily WTF</string>
        <key>UIStatusBarStyle</key>
        <string>UIStatusBarStyleGray</string>
        <key>URL</key>
        <string>http://thedailywtf.com/</string>
</dict>
</plist>

Итак, чтобы проверить это, я создал новую папку с именем C28C8FDC2F184AAD84F77B511442548F.webclip и скопировал файл Info.plistиз другого каталога изменил URL-адрес на http://google.com. Затем я снова включил телефон, и он обнаружился, как и любой другой веб-клип.Имя папки - это просто GUID в шестнадцатеричном формате, я использовал http://www.somacon.com/p113.php и просто выбрал то, что было после 0x для этого простого теста

0 голосов
/ 26 июля 2013

Вся информация, связанная с вашим вопросом, кажется здесь

Пожалуйста, обратитесь по этой ссылке для получения дополнительной информации

Я надеюсь, что это поможет вам ....

...