Ionic InAppBrowser Website - откройте ссылку Twitter в приложении, если оно установлено - PullRequest
0 голосов
/ 09 мая 2018

У меня развернуто приложение Ionic на телефоне Android, которое открывает веб-сайт с помощью InAppBrowser. На сайте есть кнопка ссылки на профиль Twitter.

В настоящее время кнопка Twitter открывается в браузере пользователя по умолчанию.

Как заставить кнопку открыть приложение Twitter, если оно установлено на телефон пользователя?

Заранее спасибо.

EDIT

export class HomePage {

  constructor(public navCtrl: NavController, private inAppBrowser: InAppBrowser, public platform: Platform, private appAvailability: AppAvailability) {
      const options: InAppBrowserOptions = {
          toolbar: 'no',
          location: 'no',
          zoom: 'no'
      }


     this.platform.ready().then( () => {

        const browser = this.inAppBrowser.create("https://awebsitewithfblink", '_blank', options);

        browser.addEventListener('loadstart', function(event) { alert(event.type + ' - ' + event.url); } );
     })


  }
}

Я получаю ошибку:

Error: Uncaught (in promise): TypeError: browser.addEventListener is not a function
TypeError: browser.addEventListener is not a function
    at http://localhost:8100/build/main.js:74:21
    at t.invoke (http://localhost:8100/build/polyfills.js:3:14976)
    at Object.onInvoke (http://localhost:8100/build/vendor.js:5134:33)
    at t.invoke (http://localhost:8100/build/polyfills.js:3:14916)
    at r.run (http://localhost:8100/build/polyfills.js:3:10143)
    at http://localhost:8100/build/polyfills.js:3:20242
    at t.invokeTask (http://localhost:8100/build/polyfills.js:3:15660)
    at Object.onInvokeTask (http://localhost:8100/build/vendor.js:5125:33)
    at t.invokeTask (http://localhost:8100/build/polyfills.js:3:15581)
    at r.runTask (http://localhost:8100/build/polyfills.js:3:10834)
    at c (http://localhost:8100/build/polyfills.js:3:19752)
    at http://localhost:8100/build/polyfills.js:3:20273
    at t.invokeTask (http://localhost:8100/build/polyfills.js:3:15660)
    at Object.onInvokeTask (http://localhost:8100/build/vendor.js:5125:33)
    at t.invokeTask (http://localhost:8100/build/polyfills.js:3:15581)
    at r.runTask (http://localhost:8100/build/polyfills.js:3:10834)
    at o (http://localhost:8100/build/polyfills.js:3:7894)
    at e.invokeTask [as invoke] (http://localhost:8100/build/polyfills.js:3:16823)
    at p (http://localhost:8100/build/polyfills.js:2:27648)
    at HTMLDocument.v (http://localhost:8100/build/polyfills.js:2:27893)

1 Ответ

0 голосов
/ 09 мая 2018

Я не знаю, какую версию Ionic вы используете, поэтому постараюсь предоставить вам лучшее решение:

In Ionic 1: Вы можете просто сделать: <a href="twitter://twitter.com/somePATH">

В Ionic 2/3: Я не знаю, работает ли первый метод, никогда не пробовал, но этот должен делать:

Первый: установить плагины

ionic plugin add cordova-plugin-inappbrowser        // For open the app
ionic plugin add cordova-plugin-appavailability     // For check if app is installed
ionic plugin add cordova-plugin-device              // For check which device the user use

Второй: импортировать их

import { InAppBrowser, AppAvailability, Device } from 'ionic-native';

В-третьих: полное решение с проверкой устройства / если приложение здесь:

launchExternalApp(iosSchemaName: string, androidPackageName: string, appUrl: string, httpUrl: string, username: string) {
let app: string;
if (Device.device.platform === 'iOS') {
    app = iosSchemaName;
} else if (Device.device.platform === 'Android') {
    app = androidPackageName;
} else {
    let browser = new InAppBrowser(httpUrl + username, '_system');
    return;
}

AppAvailability.check(app).then(
    () => { // success callback
        let browser = new InAppBrowser(appUrl + username, '_system');
    },
    () => { // error callback
        let browser = new InAppBrowser(httpUrl + username, '_system');
    }
);
}

openTwitter(username: string) {
    this.launchExternalApp('twitter://', 'com.twitter.android', 'twitter://user?screen_name=', 'https://twitter.com/', username);
}

Источник 1: https://forum.ionicframework.com/t/open-facebook-twitter-app-from-my-android-app/9757/3

Источник 2: https://forum.ionicframework.com/t/ionic-opening-external-app/77932/3

РЕДАКТИРОВАТЬ:

Поскольку вы хотите выполнить действие на веб-сайте InAppBrower, я нашел этот код, который может быть вам полезен:

var twitterWindow = window.open("https://twitter.com/", '_blank', 'location=no');
twitterWindow.addEventListener('loadstart',  function(event) {
                        alert("Current Event : "+ event.url);
                    });

Источник 3: Получение URL-адреса InAppBrowser

Вам просто нужно контролировать этот URL и проверить, является ли он URL-адресом Twitter. Если это так, вам нужно сделать что-то вроде моего предыдущего ответа.

...