我希望能够在scrollView中拥有社交图标,当单击它时,其功能与在呈现UIActivityViewController后单击它们时的功能相同。 我不想提供UIActivityViewController。
我知道这不应该是可能的,但是一个名为Yodel的应用程序就是这样做的(或类似的东西),我想做同样的事情。
单击Yodel中的图标与UIActivityViewController中的图标完全相同,所以它们似乎以某种方式将它放在容器视图中(?)
以Whatsapp为例,我尝试了以下内容:
使用带有URL方案的Whatsapp API https://www.whatsapp.com/faq/en/iphone/23559013
var whatsappURL = NSURL(string: "whatsapp://send?text=Hello%2C%20World!")!
if UIApplication.sharedApplication().canOpenURL(whatsappURL) {
UIApplication.sharedApplication().openURL(whatsappURL)
}
使用UIActivityViewController,但我希望它们都在scrollView中,如上图所示。
使用UIWebView打开URL Scheme,希望它能保留在UIWebView中。
var whatsappURL = NSURL(string: "whatsapp://send?text=Hello%2C%20World!")!
if UIApplication.sharedApplication().canOpenURL(whatsappURL) {
UIApplication.sharedApplication().openURL(whatsappURL)
}
self.view.addSubview(webview)
webview.loadRequest(NSURLRequest(URL: NSURL(string: "whatsapp://send?text=Hello%2C%20World!")!))
所有这些解决方案都打开了另一个应用程序 - 我想仍然留在我的应用程序中。
知道怎么做到这一点?非常感谢帮助:))
答案 0 :(得分:5)
实际上我做的完全一样,但是这个解决方案还需要您实现辅助服务器,以便继续支持AppStore上弹出的新应用程序(无需每次需要/想要添加/删除新应用程序时更新您的应用程序列表)
<强>第一强> 您需要决定在其他应用上分享什么
第二名:您需要找出应用所使用的网址,
instagram的示例 - &gt; &#34;的Instagram://用户的用户名= your_username&#34;
第三:现在是流程背后的逻辑
让我说我想展示facebook,twitter,slack和instagram,
让我们设置包含相关网址的字典:
["facebook":"facebook://blablabla", "twitter":"twitter://blabla", "slack":"slack://blabla", "instagram":"instagram://blabla"]
您还需要持有APP的图标(本地或服务器/ firebase /云) - 稍后会在您的滚动视图(水平收集视图或您决定使用的内容)上显示 < / p>
4rd:您需要检查设备上是否安装了该应用:
所以只需循环你的应用程序数组/字典(或者你决定保留你的信息并检查这样的可用性:
let instagramHooks = "instagram://user?username=your_username"
let instagramUrl = URL(string: instagramHooks)
if UIApplication.shared.canOpenURL(instagramUrl! as URL)
{
//The app are installed you can show her
} else {
//The app doesn't installed -> don't show it on the list
}
之后你只需要将他们的图标放到UICollectionView / UIScrollView上,当用户点击图标时你就可以打开那个方案:
UIApplication.shared.open(instagramUrl!)
关于目标应用程序将如何显示对话框(如UIActivityViewController操作或实际打开应用程序,我现在不用),但我相信你可以在这里找到帮助你的人强>
跳过你了解我的步骤,如果没有,你可以联系我以获得更多解释
答案 1 :(得分:0)
简短:那是不可能的。
每个应用程序都在自己的“游乐场”内运行,而应用程序则完全关注设备。
我假设用户重新创建了这些应用程序的界面,并从API中获取了信息。例如,我们从Whatsapp API获取内容并重新创建UI,使其感觉我们在Whatsapp中。但是你不应该这样做,因为你可能会与版权侵权发生冲突。
但一般情况下,互联网不了解彼此。
正如您所知,运行第三方应用程序的唯一可能性是URL方案。如果您想在应用程序中运行应用程序,就像在UIWebView
中一样,则需要模拟整个iOS。太不可能了。
但是,使用越狱的iPhone可以 ,但我不知道。
答案 2 :(得分:0)
Yodel:他们已经制作了自己的自定义视图,并且他们选择了一些常见的应用程序,例如whatsapp,snapchat,messenger等,这些应用程序通常使用“canOpenUrl”检查每个应用程序是否可用。用户的手机。如果可用,则显示其图标。当用户点击它时,它将使用“openUrl”打开给定的应用程序。
在这里,在yodel中你可以看到,它无法获取所有可用的共享应用程序,它只能预定义他们定义的修复应用程序。对于其他应用程序,他们在最后添加了“更多按钮”,单击此按钮将打开UIActivityViewController。