Using cordova-plugin-safariviewcontroller with Ionic Framework
I tried using cordova-plugin-safariviewcontroller with Ionic Framework, so I’ll introduce sample code.
 
Install both the cordova plugin and npm module.
ionic cordova plugin add cordova-plugin-safariviewcontroller
npm install --save @ionic-native/safari-view-controller
Sample code for opening URLs with SafariViewController looks like this:
// src/pages/home/home.ts
export class HomePage {
  constructor(public navCtrl: NavController, public platform: Platform,
    private iab: InAppBrowser, private safariViewController: SafariViewController) {
  }
  openUrl(url: string) {
    // SafariViewController is only supported on Android and iOS platforms
    if (this.platform.is('android') || this.platform.is('ios')) {
      this.safariViewController.isAvailable()
        .then((available: boolean) => {
          if (available) {
            this.safariViewController.show({
              url: url,
            })
              .subscribe((result: any) => {
                if (result.event === 'opened') console.log('Opened');
                else if (result.event === 'loaded') console.log('Loaded');
                else if (result.event === 'closed') console.log('Closed');
              },
              (error: any) => console.error(error)
              );
          } else {
            // Fallback when SafariViewController is not available
            this.openUrlWithFallbackBrowser(url);
          }
        }
      );
    } else {
      // Fallback when SafariViewController is not available
      this.openUrlWithFallbackBrowser(url);
    }
  }
  openUrlWithFallbackBrowser(url: string) {
    // use fallback InAppBrowser
    this.platform.ready().then(() => {
      const browser = this.iab.create(url, '_system');
      browser.show();
    });
  }
}
Two points to supplement about the above sample code:
First, since cordova-plugin-safariviewcontroller only supports Android and iOS platforms, I check if it’s available with if (this.platform.is(‘android’) || this.platform.is(‘ios’)).
Second, for environments where SafariViewController is not available, I use InAppBrowser as a fallback.
For detailed implementation, please refer to the following pull request:
Also, for InAppBrowser, please refer to [Ionic] InAppBrowser で URL をデフォルトブラウザで開く使い方 | CodeNote.
That’s all from the Gemba where I want to primarily use SafariViewController when opening external URLs with Ionic Framework.