Я занимаюсь разработкой приложения для Ionic 4 для web / android / ios, в котором я показываю на некоторых страницах динамический текст, в том числе и твиты.
Однако я столкнулся с проблемой в скомпилированномПриложение для iOS, где твиты не отображаются.
По сути, я загружаю скрипт twitter в app.component.ts в функции
async ngAfterViewInit() {
!function(d,s,id){
var js: any,
fjs=d.getElementsByTagName(s)[0],
p='https';
if(!d.getElementById(id)){
js=d.createElement(s);
js.id=id;
js.src=p+"://platform.twitter.com/widgets.js";
fjs.parentNode.insertBefore(js,fjs);
}
return true;
}
(document,"script","twitter-wjs");
}
Затем загружаю текст из бэкэнда и вставляюследующий код на странице:
<blockquote class="twitter-tweet">
<p lang="en" dir="ltr">[contents]</p>— Name (@[Handle])
<a href="https://twitter.com/[Handle]/status/1125039697040957441?ref_src=twsrc%5Etfw">May 5, 2019</a>
</blockquote>
И когда мне нужно отобразить все твиты, я вызываю twttr.widgets.load();
, который доступен и работает.Ранее он преобразовывал код в хорошо визуализированный встроенный виджет.
Результаты:
Веб-приложение: работает
Приложение Android: работает
Веб-приложение для мобильных устройств Safari: работает
Приложение для iOS: не работает
Пример рабочего результата(web / android):
Как видите, тег заполняется здесь.Хорошо отрисовывает.
С другой стороны, результат на iOS таков:
Обратите внимание, что тег blockquote не удаляется и тег <twitter-widget>
не заполняется.
Я протестировал удаленную отладку и обнаружил, что виджет выполняет все необходимые запросы к серверам Twitter, и я даже вижу на вкладке Сеть, что он возвращает правильный ответ.Однако тег <twitter-widget>
никогда не заполняется, и я не могу заставить его отображать какие-либо ошибки.
Это только для скомпилированного приложения iOS.
Что делать?twttr.widgets.createTweet()
также не работает с одинаковыми результатами.
Ожидаемый результат: встраивание Twitter должно загружаться везде.
Фактический результат: Twitter встраивает загрузку везде, кроме скомпилированного приложения iOS.