如何通过应用程序在iOS桌面上创建快捷方式

dav*_*vid 5 iphone ios iphone-4

我的意思是我想使用该应用程序在桌面上创建带图标的快捷方式,这将允许用户加速访问此应用程序的某些功能.

我怎么能这样做,有什么建议吗?或者任何人都有这方面的经验.

一个例子: FaceDial

Cal*_*den 8

我最近花了很多时间尝试将这个功能应用到一个应用程序中,并希望提供一些我在这个主题上找到的资源,以避免让别人头疼.这正在成为一种越来越受欢迎的功能,并在Workflow和Facebook的Groups应用程序等主要应用程序中使用.鉴于Workflow现在是Apple应用程序,Apple看起来并不像使用这种技术有任何问题.@jin提供的答案基本上是正确的.该过程看起来像这样:

  1. 为您的应用注册自定义网址方案.创建动态URL链接,如果遵循这些链接,则会指向您希望快捷方式的内容.目前向iOS跳板添加快捷方式的唯一方法是通过Safari的"添加到主屏幕"功能.所以我们想要做的是使用Safari来保存我们的应用程序到跳板的自定义URL.诀窍是,您不能只将您的URL发送到Safari并保存,因为这样做会导致Safari立即关注该链接,用户将永远无法点击"添加到主屏幕".因此,为了避免这个问题,您需要在某个地方托管一个Web服务,该服务会获取您的URL并返回一个base64 URL,您的用户可以将其保存到主屏幕.
  2. 要创建此Web服务,您可以远程托管它,这将要求您的用户在线使用,或者将其嵌入到您的应用程序中,这就是Workflow和Facebook Groups所做的事情.对于嵌入式服务器,有一些非常好用的选项.如果你正在使用Objective-c theres CocoaHTTP,如果你使用的是Swift,我会推荐使用Swifter,这就是我使用的.
  3. 您的Web服务器将需要显示一个页面,该页面以base64编码格式返回另一个页面,以便用户可以在Web服务器停止运行后使用该快捷方式(显然您不能让嵌入式服务器全天候运行).编码页面需要检测页面是否以独立模式启动.如果是,那么它应该带你到你的应用程序,否则它应该给你一个页面,用户可以将页面保存到主屏幕.这是我的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>
    
    Run Code Online (Sandbox Code Playgroud)

以下是帮助我的主题资源列表(抱歉,我没有足够的声誉来包含2个以上的链接......所以你必须复制这些面食):

  1. Web服务如何与现场演示配合使用的绝佳示例: https://gist.github.com/FokkeZB/5899387
  2. 另一个描述该过程的堆栈溢出问题: https://stackoverflow.com/questions/28042152/link-to-safari-add-to-home-screen-from-inside-app
  3. 用于提示用户在Safari中点击"添加到主屏幕"的优秀JavaScript小部件: 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. 示例如何在Javascript中对您的HTML进行base64编码: https://stackoverflow.com/questions/9238890/convert-html-to-datatext-html-link-using-javascript

如果有人有任何问题,请告诉我!


jin*_*jin 5

除了您的应用程序之外,您不能将图标添加到“桌面”(跳板)。这个应用程序正在做的是在他们的应用程序中显示 iPhone“桌面”的副本。

更新:该链接现在指向一个执行此操作的应用程序,尽管在我看来它是 hack,但似乎有些可能。

这就是我相信应用程序的工作方式(它类似于下面的答案,但更详细)。

  • 应用程序创建 webclip 图像并将它和电话号码发送到 web 服务。
  • 然后,Web 服务创建一个附有 Webclip 信息的页面。电话号码/电子邮件被转换为一个 url,它将触发相应的应用程序(邮件/消息/电话)。即“+834 895 734”-> 电话:834895734 或短信:834895734
  • 该应用程序然后在 MobileSafari 中打开该页面,该页面
    可能包含有关如何“添加到主屏幕”的说明。
  • 然后用户必须导航到并点击“添加到主屏幕”按钮。这会将 webclip 作为图标添加到 Springboard。
  • 当点击 webclip 激活 url 和邮件/消息/电话与号码/电子邮件启动

你可以实现类似的东西(虽然我不建议这样做)。这些是要遵循的步骤:

  • 注册你自己的 url scheme
  • 在某处托管一个页面,其中包含您想要快捷方式的每个功能/网址的网络剪辑。如果 url 不是静态的或者您想要动态图标,您将需要一个网络服务。
  • 在此 AppDelegate 方法中处理应用程序中的 url

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

注意:如果您的应用程序被删除,webclips 将不再起作用,并且会使用户感到困惑。Apple 也可能会拒绝您的应用。