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

Iphone 如何通过应用程序在iOS桌面上创建快捷方式,iphone,ios,iphone-4,Iphone,Ios,Iphone 4,我的意思是,我想使用该应用程序在桌面上创建一个带有图标的快捷方式,允许用户快速访问该应用程序的某些功能 我该怎么做,有什么建议吗?或者任何有这方面经验的人 例如: 除了应用程序的图标外,您不能将图标添加到“桌面”(Springboard)。此应用程序正在其应用程序中显示iPhone“桌面”的副本 更新:该链接现在指向一个应用程序,该应用程序可以做到这一点,尽管在我看来有点像黑客 这就是我认为应用程序的工作原理(类似于答案) 下文将详细介绍) 应用程序创建webclip图像并将其和电话号码发送到

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

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

例如:

除了应用程序的图标外,您不能将图标添加到“桌面”(Springboard)。此应用程序正在其应用程序中显示iPhone“桌面”的副本

更新:该链接现在指向一个应用程序,该应用程序可以做到这一点,尽管在我看来有点像黑客

这就是我认为应用程序的工作原理(类似于答案) 下文将详细介绍)

  • 应用程序创建webclip图像并将其和电话号码发送到web服务
  • 然后,web服务创建一个附加了webclip信息的页面。电话号码/电子邮件被转换为url,该url将触发相应的应用程序(邮件/消息/电话)即“+834895734”->电话:834895734或短信:834895734
  • 然后,应用程序将在MobileSafari中打开该页面,并打开该页面
    大概有关于如何“添加到主屏幕”的说明
  • 然后,用户必须导航到并点击“添加到主屏幕”按钮。这将把webclip作为图标添加到跳板上
  • 点击webclip可激活url,邮件/消息/电话将与号码/电子邮件一起启动
您可以实现类似的功能(尽管我不建议)。以下是要遵循的步骤:

  • 在某个地方托管一个页面,其中包含您想要快捷方式的每个函数/url的webclip。如果URL不是静态的,或者您需要动态图标,那么您将需要一个web服务
  • 在此AppDelegate方法中处理应用程序中的url
-(BOOL)应用程序:(UIApplication*)应用程序handleOpenURL:(NSURL*)url


注意:如果您的应用程序被删除,webclips将不再工作,并会混淆用户。苹果也可能会拒绝你的应用程序。

我猜应用程序的工作原理如下:

1) 它只是为每个联系人创建一个html

2) 它使用safari功能“添加到主屏幕”

找到了模拟safari功能的绝佳答案

我使用“添加到主屏幕”按钮从Safari创建了一个链接。它在/private/var/mobile/Library/WebClips/的内部创建了一个名为54C86B09482D4560BAB46091CC75825A.webclip的目录。该目录包含两个文件,icon.png和Info.plist。icon.png只是在查看应用程序屏幕时显示的图标。 Info.plist的内容是真实信息的位置:


经典模式
全屏幕
象似合成
基于图标的屏幕快照
规模
0.32653060555458069
滚动点
x
0
Y
-183
标题
每日WTF
UIStatusBarStyle
乌斯塔斯巴斯格雷
统一资源定位地址
http://thedailywtf.com/

因此,为了验证这一点,我创建了一个名为c28c8fdc2f184aad84f77b5111442548f.webclip的新文件夹,并从另一个目录复制了Info.plist文件,将url编辑为。然后,我重新启动了手机,它就像其他任何网络唇膏一样出现了。文件夹名称只是一个十六进制编码的GUID,我在这个简单的测试中使用并选择了0x之后的内容

最近,我花了很长时间试图在一个应用程序中实现此功能,并想拿出我在该主题上找到的一些资源,以避免其他人感到头痛。这正成为一项越来越流行的功能,并在工作流和Facebook的群组应用程序等主要应用程序中使用。鉴于工作流现在是苹果的一个应用程序,苹果在使用这项技术方面似乎也没有任何问题。@jin提供的答案基本上是正确的。该过程如下所示:

  • 为您的应用注册自定义URL方案。创建动态URL链接,当遵循该链接时,将指向您希望快捷方式访问的内容。目前,向iOS跳板添加快捷方式的唯一方法是通过Safari的“添加到主屏幕”功能。因此,我们要做的是使用Safari保存我们的自定义URL,从而将我们的应用程序带到springboard。诀窍是,你不能只发送你的URL到Safari并保存它,因为这样做会导致Safari立即跟随链接,用户将永远不会有机会点击“添加到主屏幕”。因此,为了避免这个问题,您需要在某处托管一个web服务,该服务接收您的URL并返回一个base64 URL,您的用户可以将其保存到主屏幕上
  • 要创建此Web服务,您可以远程托管它,这将要求您的用户在线使用,或者将其嵌入到您的应用程序中,这就是工作流和Facebook群组所做的。对于嵌入式服务器,有一些非常容易使用的选项。如果您使用的是objective-c,那么我推荐您使用的是Swift
  • 您的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>
    
    
    添加到主屏幕
    如果
    
    <!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>