从iOS应用程序打开电报聊天(使用Bot)

Luc*_*ida 5 ios telegram telegram-bot swift3

我正试图从我的应用程序打开Telegram,以便用户与我制作的机器人交谈.到目前为止,它正在工作,但我发现打开机器人聊天的唯一方法是使用https://telegram.me/MyBot网址.但是这样,它打开Safari,然后询问用户是否要在Telegram应用程序上打开它.最初它要求一次,然后,在第一次之后,它只是通过safari并自动打开Telegram.但它已停止,现在,每次加载Safari时,有时甚至不显示弹出窗口询问用户是否可以打开Telegram应用程序.

有没有办法使用'tg://'url(应该直接打开Telegram应用程序)打开与bot的聊天?只看到电话号码的工作示例.以不同方式尝试但根本没有成功......

任何帮助都会很棒.

提前致谢!

mat*_*ema 13

Swift 3.0.1

这正是你要找的:

let botURL = URL.init(string: "tg://resolve?domain=MyBot")

if UIApplication.shared.canOpenURL(botURL!) {
    UIApplication.shared.openURL(botURL!)
} else {
  // Telegram is not installed.
}
Run Code Online (Sandbox Code Playgroud)

不要忘记将电报的URI模式添加到info.plist:

<key>LSApplicationQueriesSchemes</key>
<array>
   <string>tg</string>
</array>
Run Code Online (Sandbox Code Playgroud)


Meh*_*ico 6

适用于 Swift 4.2+ 和 iOS 9+

let screenName =  "und3rflow" // <<< ONLY CHANGE THIS ID
let appURL = NSURL(string: "tg://resolve?domain=\(screenName)")!
let webURL = NSURL(string: "https://t.me/\(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 user doesn't have Telegram
    if #available(iOS 10.0, *) {
        UIApplication.shared.open(webURL as URL, options: [:], completionHandler: nil)
    }
    else {
        UIApplication.shared.openURL(webURL as URL)
    }
}
Run Code Online (Sandbox Code Playgroud)