按下按钮时打开 Facebook 应用程序页面。斯威夫特 5
Posted
技术标签:
【中文标题】按下按钮时打开 Facebook 应用程序页面。斯威夫特 5【英文标题】:Opening up facebook app page when button is pushed. Swift 5 【发布时间】:2019-06-08 17:07:45 【问题描述】:Facebook 应用程序无法打开,Safari 中的 facebook 反而打开。使用 xCode 10.2.1
运行 ios 12.2 的部署目标
编辑:此代码确实实现了 Instagram 的预期目标
Edit2:所以在@bbrodsky 的建议下,我将 URL 链接中的“facebook”更改为“fb”。现在的问题是它打开的是我的个人提要,而不是我希望它打开的业务页面。
Edit3:所以我让它工作了。打开 facebook 应用程序,然后转到所需的页面。必须将 appURL 更改为“fb://profile/NUMERICFBID”。我能够在此站点https://findmyfbid.com/ 上获得该页面的数字 facebook ID
从这篇文章和其他文章中尝试过的解决方案。似乎找不到这个问题的任何最新答案,因为一切似乎都来自早期版本的 iOS 和 swift/xCode。不确定事情是否发生了变化。已将推荐代码添加到 plist 源文件中,但没有结果。
How to open fb and instagram app by tapping on button in Swift
@IBAction func facebookButtonTapped(_ sender: UIButton)
let screenName = "MYSCREENNAME"
let appURL = NSURL(string: "facebook://user?screen_name=\
(screenName)")!
let webURL = NSURL(string: "https://facebook.com/\
(screenName)")!
if UIApplication.shared.canOpenURL(appURL as URL)
if #available(iOS 10.0, *)
UIApplication.shared.open(appURL as URL, options:
[:], completionHandler: nil)
else UIApplication.shared.openURL(appURL as URL)
else
//redirect to safari because the user doesn't have
Instagram
if #available(iOS 10.0, *)
UIApplication.shared.open(webURL as URL, options:
[:], completionHandler: nil)
else UIApplication.shared.openURL(webURL as URL)
预期结果是 facebook 应用程序打开到特定页面。不断收到此错误代码。
2019-06-08 11:28:39.561051-0500 SocialMediaLinkPractice[9888:2173963] -canOpenURL:URL 失败:“facebook://user?screen_name=MYSCREENNAME”-错误:“不允许查询此应用用于计划 facebook"
【问题讨论】:
为什么将 URL 创建为NSURL
,然后在使用它们的任何地方将它们转换为 URL
?为什么不首先将它们创建为URL
?
我只是一个初学者,正在做一个简单的项目,只是复制了代码。老实说,我什至不知道“NSURL”和“URL”之间的区别是什么。不过欣赏输入。会乱改。 @雾迈斯特
不用担心。只是好奇。在大多数情况下,当您看到带有 NS
前缀的东西时,它是来自 Objective-C 的遗留类型。他们中的许多人现在都有他们的 Swift 等价物,它们删除了 NS
。在您的情况下,只需删除 NS,然后您就可以删除“as URL”位。
啊,我明白了。是的,我以前查过 NS 前缀,但没有找到任何可以解释它的东西。谢谢(你的)信息。 @雾迈斯特
【参考方案1】:
在 Info.plist 中添加
首先,您必须修改Info.plist
以列出instagram
和facebook
和LSApplicationQueriesSchemes
。只需打开 Info.plist
作为源代码,然后粘贴:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>instagram</string>
<string>fb</string>
</array>
当您想要打开 Facebook 应用程序并定向到 Facebook 页面时,请使用页面 ID。这是一个链接,您可以在其中找到它们:https://www.facebook.com/help/1503421039731588
方案
fb://profile – 打开 Facebook 应用到用户的个人资料或页面
fb://friends – 打开 Facebook 应用到好友列表
fb://notifications – 打开 Facebook 应用程序到通知列表 (注意:此 URL 似乎存在错误。通知页面打开。但是,无法导航到 Facebook 中的其他任何地方应用程序)
fb://feed – 打开 Facebook 应用到新闻源
fb://events – 打开 Facebook 应用程序到活动页面
fb://requests – 打开 Facebook 应用到请求列表
fb://notes – 打开 Facebook 应用程序到 Notes 页面
fb://albums – 打开 Facebook 应用程序到相册列表 来源:https://***.com/a/10416399/8642838
SwiftUI-代码版
Button(action:
let url = URL(string: "fb://profile/<PAGE_ID>")!
let application = UIApplication.shared
// Check if the facebook App is installed
if application.canOpenURL(url)
application.open(url)
else
// If Facebook App is not installed, open Safari with Facebook Link
application.open(URL(string: "https://de-de.facebook.com/apple")!)
, label:
Text("Facebook")
)
【讨论】:
【参考方案2】:如果你想在 Facebook 应用上打开特定的个人资料,你必须使用
let username = "your Facebook name"
let appURL = URL(string: "fb://profile/\(username)/?id=\(username)")!
否则将无法正常工作。
【讨论】:
【参考方案3】:我相信您想使用“fb://”而不是“facebook://”
【讨论】:
太棒了。可以打开应用程序。但现在它只是打开我的提要,而不是我希望它打开的页面。 @bbrodsky 那行得通。必须找到我使用此站点所做的 facebook 页面数字 ID。 findmyfbid.com 非常感谢您的帮助。我现在唯一的小错误是,如果 facebook 应用程序已经在预期的页面上,单击我的应用程序中的链接只会将 facebook 应用程序打开到带有搜索栏的空白页面。真的不太关心它,但我想把它写在这里,以防有人提出一个简单的解决方案。 @futureappguru 很高兴我能帮上忙!以上是关于按下按钮时打开 Facebook 应用程序页面。斯威夫特 5的主要内容,如果未能解决你的问题,请参考以下文章
当在rails中按下浏览器的后退按钮时,在注销后进入登录页面
如何在按钮单击时将用户发送到 Facebook 页面(Facebook Messenger)