Я показываю в своем приложении канал Twitter, который загружается из API Twitter. Поскольку в твитах не отображается полный текст, существует URL-адрес короткого кода твиттера (t.co) для просмотра всего твита.
Проблема, с которой я сталкиваюсь, заключается в том, что когда я нажимаю URL-адрес с помощью openURL, он открывается в браузере, который перенаправляет в приложение Twitter и перенаправляет обратно в браузер для отображения твита.
Это работает, если у меня уже открыто приложение twitter - если оно не открывается, последнее перенаправление обратно в браузер не загружает страницу.
Все работает нормально, если приложение твиттера не установлено, оно просто загружается в браузере.
Есть ли способ избежать перенаправления и просто открыть URL-адреса t.co в приложении twitter, если оно установлено?





Итак, мне удалось решить эту проблему, сначала создав в PHP неукороченный URL:
<?php
$url = $_GET['url'];
$context = stream_context_create(
array(
'http' => array(
'follow_location' => false
)
)
);
$html = file_get_contents($url, false, $context);
$final = str_replace("location: ",'',$http_response_header[5]);
echo json_encode ($final,JSON_PRETTY_PRINT);
?>
Затем из response-native извлеките полный URL-адрес из неукороченного:
if (href.contains('https')) {
var short = {
getInfo() {
var myUrl = 'expander.php?url='+href
return fetch(myUrl).then((res) => res.json()).catch(function(error) {
Alert.alert(error+'');
});
}
}
short.getInfo().then((res) => {
var final = res.replace('i/web','web');
Linking.openURL(final);
})
} else {
Linking.openURL(href)
}
Было важно заменить «i / web» в строке URL на «web», чтобы приложение открывало ссылку изначально, а не открывало мобильную ссылку.