我怎么能通过一个应用程序在iOS上的桌面上创build一个快捷方式

我的意思是我想要使用应用程序来创build桌面上的图标快捷方式,这将允许用户加快访问这个应用程序的一些function。

我怎么能这样做,有什么build议? 或者任何人有这方面的经验。

例如: FaceDial

我花了一段时间试图最近实现这个function到一个应用程序,并希望拿出一些资源,我发现在这个问题上,以节省别人一个主要的头痛。 这正在成为一个越来越受欢迎的function,并用于主stream应用程序,如工作stream程和Facebook的群组应用程序。 鉴于工作stream程现在是一个苹果应用程序,它看起来不像苹果有任何使用这种技术的问题。 @jin提供的答案基本上是正确的。 这个过程看起来像这样:

  1. 为您的应用程序注册一个自定义URLscheme。 创builddynamicurl链接,当遵循时,导致您想要快捷方式的内容。 目前添加iOS跳板快捷方式的唯一方法是通过Safari的“添加到主屏幕”function。 所以我们想要做的就是使用Safari来保存导致我们的应用程序跳板的自定义url。 诀窍是,你不能只是发送你的url到Safari并保存,因为这样做会导致Safari立即跟随链接,用户将永远不会有机会点击“添加到主屏幕”。 所以为了避免这个问题,你需要在你需要的地方提供一个网页服务,然后返回一个你的用户可以保存到主屏幕的base64 URL。
  2. 要创build这个Web服务,您可以远程托pipe它,这将需要您的用户在线使用,或者将其embedded到您的应用程序中,这就是Workflow和Facebook组所做的工作。 对于embedded式服务器,一些非常容易使用的选项。 如果你使用Objective-C的CocoaHTTP,并且如果你使用Swift的话,我推荐Swifter ,这就是我用的。
  3. 您的networking服务器将需要显示一个页面,以base64编码格式返回另一个页面,以便用户可以在networking服务器停止运行后使用快捷方式(显然,您不能让embedded式服务器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. Web服务如何与现场演示结合使用的一个很好的例子: https://gist.github.com/FokkeZB/5899387https://gist.github.com/FokkeZB/5899387
  2. 另一个堆栈溢出问题描述过程: https://stackoverflow.com/questions/28042152/link-to-safari-add-to-home-screen-from-inside-app : 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 : http://cubiq.org/add-to-home-screen
  4. 苹果有关自定义URLscheme的文档: https://developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Inter-AppCommunication/Inter-AppCommunication.html : https://developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Inter-AppCommunication/Inter-AppCommunication.html
  5. 苹果的内置scheme的文件,这将更好地简化简单的任务,即发送电子邮件: https://developer.apple.com/library/content/featuredarticles/iPhoneURLScheme_Reference/Introduction/Introduction.html : https://developer.apple.com/library/content/featuredarticles/iPhoneURLScheme_Reference/Introduction/Introduction.html
  6. 示例显示如何base64编码您的HTML在JavaScript中: https://stackoverflow.com/questions/9238890/convert-html-to-datatext-html-link-using-javascript : https://stackoverflow.com/questions/9238890/convert-html-to-datatext-html-link-using-javascript

让我知道如果有人有任何问题!

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

更新:现在链接指向一个应用程序这样做,它似乎有点可能,虽然相当黑客在我看来。

这就是我相信应用程序的工作原理(类似于下面的回答,但更详细)。

  • 应用程序创buildwebclip图像并将其发送到Web服务。
  • Web服务然后创build一个附带webclip信息的页面。 电话号码/电子邮件被转换为一个URL,这将触发相应的应用程序(邮件/消息/电话)。 即“+834 895 734” – > tel:834895734或短信:834895734
  • 该应用程序然后在MobileSafari和该页面打开该页面
    大概有如何“添加到主屏幕”的说明。
  • 用户将不得不导航到并点击“添加到主屏幕”button。 这会将webclip添加到跳板中作为图标。
  • 当点击webclip激活url和邮件/消息/电话启动与数字/电子邮件

你可以实现类似的东西(虽然我不会build议)。 这些步骤如下:

  • 注册您自己的urlscheme
  • 托pipe一个网页的地方,其中包含每个function/ url你想要一个快捷方式的webclip。 如果url不是静态的,或者您想要dynamic图标,则需要使用networking服务。
  • 在AppDelegate方法中处理你的应用程序中的url

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

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

我猜应用程序的工作如下,

1)它只是为每个联系人创build一个HTML

2)它使用Safarifunction“添加到主屏幕”

find了模拟Safari浏览器function的优秀答案,

我使用“添加到主屏幕”button创build了从Safari的链接。 它在/ private / var / mobile / Library / WebClips /中创build了一个名为54C86B09482D4560BAB46091CC75825A.webclip的目录。 该目录包含两个文件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> 

因此,为了testing,我创build了一个名为C28C8FDC2F184AAD84F77B511442548F.webclip的新文件夹,并将Info.plist文件从其他目录复制过来,然后将其编辑到http://google.com 然后我重新popup电话,就像其他webclip一样。 该文件夹的名称是简单的一个hex编码的GUID,我用http://www.somacon.com/p113.php ,只是select了这个简单的testing后0x是什么

所有与你的问题有关的信息似乎在这里

请参阅此链接了解更多信息

我希望它会帮助你….