Поделиться ссылкой через схему URL (например, через Telegram)
Я хочу поделиться ссылкой через схему URL, скажем, для Telegram.
Я создал это:
tg: // msg? text = www.example.com?t=12
По ссылке открывается телеграмма, но больше ничего не происходит.
Я использовал тот же код для Viber, и он работает:
viber: // forward? text = www.example.com?t=12
и он открывает новое сообщение в viber с этим текстом:
www.example.com
Другими словами, это сокращает мой URL.
Любая идея?
14 ответов
Вы также можете использовать ссылку на telegram.me, которая ссылается на вебограмму, если на устройстве не установлено приложение telegram.
https://telegram.me/share/url?url=<URL>&text=<TEXT>
Здесь есть множество ответов, каждый из которых работает по-своему. IE, используя tg:
вместо http:
так как протокол короче, но это вызовет ошибку, если Telegramme.me не установлен, тогда как использование полного http:
URL будет перенаправлен на ссылку с инструкциями по установке для Telegramme.me.
Если вы хотите увидеть все варианты того, как это обрабатывается, посмотрите этот проект github в Social-Sharing:
Вы можете воспользоваться ссылкой telegram.me
который предоставит страницу предварительного просмотра с предупреждением, запрашивающим открытие ссылки в приложении.
https://telegram.me/share/url?url=<URL>&text=<TEXT>
Второй вариант - это прямой вызов ссылки приложения:
tg://msg_url?url=<url>&text=<encoded-text>
Я особенно предпочитаю второй вариант, который также работает в настольных приложениях.
Для Telegram поделиться:
Цель C:
if([UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"tg://msg?text=test"]){
[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tg://msg?text=test"]
}else{
//App not installed.
}
Swift 3.0:
let urlString = "tg://msg?text=test"
let tgUrl = URL.init(string:urlString.addingPercentEncoding(withAllowedCharacters: CharacterSet.urlQueryAllowed)!)
if UIApplication.shared.canOpenURL(tgUrl!)
{
UIApplication.shared.openURL(tgUrl!)
}else
{
//App not installed.
}
Если вы использовали canOpenURL, то нужно добавить в info.plist
<key>LSApplicationQueriesSchemes</key>
<array>
<string>tg</string>
</array>
<a href = "https://telegram.me/share/url?url=<URL>&text=<TEXT>">Telegram</a>
с этим мы можем открыть xdg телеграммы, и если мы выберем контакт, по умолчанию отправка текста появится в поле сообщения.
php:
<a href="tg://msg?text=<?php echo rawurlencode($gotoURL); ?>">Link</a>
JavaScript:
<script>TEXT="any text or url";</script>
<a onclick="window.location='tg://msg?text='+encodeURIComponent(TEXT);">Link</a>
или очень просто:
tg://msg?text=www.example.com%2F%3Fget%3Dvalue
tg://msg?text=www.example.com%2F%3Ft%3D12
Вам следует прекратить использовать протокол для настольных приложений, потому что он не работает в развивающейся сети: он не работает в веб-приложениях, ChromeOS или некоторых мобильных устройствах.
Всегда используйте НОВЫЙ способ: https://t.me , потому что он откроет приложение Telegram DESKTOP в Windows\Linux\Mac, ЕСЛИ ПОЛЬЗОВАТЕЛЬ ХОЧЕТ\ИМЕЕТ его, в противном случае он откроет веб-страницу\веб-приложение, что является СПОСОБОМ.
У Telegram есть ДВА веб-приложения, которые разрабатывались за последний год!
Оба великолепны, добавляют ТОННЫ паритета и имеют разные подходы.
Возможно, вы используете localhost, поэтому он не показывает общий ресурс. попробуйте это в живом хосте
Если вы хотите открыть чат с ботом или людьми, просто напишите этот простой код
<a href="https://t.me/targetedusername">
Попробуйте использовать tg: // share:
<a href="tg://share?url=www.example.com?t=12&text=Check out this url">Link</a>
Чтобы проверить, установлена ли Telegram, вы можете сделать следующее (позаимствовано из модуля Shares it для Whatsapp):
BOOL isTelegramInstalled = [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"tg://msg?text=test"]];
iOS проверяет, установлено ли какое-либо приложение, которое может обрабатывать схему tg://, то есть Telegram.
Только что протестировано, это работает как при открытии приложения Telegram, так и при открытии браузера, если он не установлен:
let webURL = NSURL(string: "https://t.me/<YOUR ID>")!
UIApplication.shared.open(webURL as URL)
У тебя две проблемы:
- С одной стороны, вы используете неправильную схему для обмена URL-адресами, правильная — msg_url;
- С другой стороны, вы пытаетесь поделиться URL-адресом с параметрами. Вам нужно закодировать ваш ? чтобы заставить его работать. Код процента: %3F
- Дополнительный совет: также, если вы хотите, чтобы это была ссылка после публикации, вы должны, конечно, включить кодировку HTTPS://.
Попробуйте это, и вы увидите, что это работает нормально: tg://msg_url?url=https%3A%2F%2Fwww.example.com%3Ft=12