"url_launcher"

Odyssey·2024년 11월 7일

flutter_study

목록 보기
8/9
post-thumbnail

url_launcher는 Flutter 애플리케이션에서 다양한 유형의 URL을 쉽게 열 수 있도록 해주는 패키지이다. 이 패키지를 이용하면 웹 페이지, 전화 걸기, 이메일, SMS 등 여러 작업을 사용자의 기본 앱을 통해 실행할 수 있다. Android, iOS, 웹, Windows, macOS, 그리고 Linux와 같은 다양한 플랫폼을 지원한다.

주요 기능

url_launcher는 아래와 같은 URL 유형을 지원하여 각 URL에 맞는 기본 애플리케이션을 통해 작업을 수행할 수 있다.

  • HTTP 및 HTTPS: httphttps URL을 기본 브라우저에서 열 수 있다. 이를 통해 앱에서 웹 페이지를 여는 작업을 손쉽게 구현할 수 있다.
  • MAILTO: 이메일 URL을 이용해 이메일 앱에서 새 이메일을 작성하도록 할 수 있다. 예를 들어, 사용자가 앱 내에서 문의 메일을 보내도록 할 때 유용하다.
  • TEL: 전화 번호를 포함하는 tel URL을 사용하면 전화 앱을 통해 해당 번호로 다이얼링을 할 수 있다.
  • SMS: 문자 메시지 앱을 열고, 특정 번호에 미리 작성된 메시지를 전송할 수 있도록 한다.
  • 파일 경로: 파일 경로 URL을 통해 파일에 접근하거나 파일을 열 수 있다. 이를 통해 로컬 파일 시스템에 저장된 파일을 열거나 미디어 파일을 재생하는 등의 작업이 가능하다.

기본 사용 예

url_launcher를 사용하려면 URL을 실행하기 전 해당 URL이 열릴 수 있는지를 확인하고 실행하는 것이 좋다. 다음은 간단한 웹 페이지 열기 예제이다.

import 'package:url_launcher/url_launcher.dart';

void launchURL() async {
  const url = 'https://flutter.dev';
  if (await canLaunch(url)) {
    await launch(url);
  } else {
    throw 'Could not launch $url';
  }
}
  • canLaunch: 주어진 URL이 실제로 열릴 수 있는지 확인하는 함수이다.
  • launch: URL을 실행하여 기본 앱에서 열게 한다.

이 코드는 URL을 기본 브라우저에서 열거나, 열 수 없는 경우 오류 메시지를 발생시킨다.

플랫폼별 설정

url_launcher는 플랫폼에 따라 추가 설정이 필요할 수 있다.

  • iOS 설정: iOS에서는 Info.plist 파일에 URL을 사용할 권한을 명시해야 한다. 예를 들어, 웹 페이지를 열려면 NSAppTransportSecurity 키와 NSAllowsArbitraryLoads를 설정해야 한다.

다음의 코드를 ios\Runner\Info.plist 파일에 추가하면 된다.

<key>LSApplicationQueriesSchemes</key>
<array>
  <string>sms</string>
  <string>tel</string>
</array>
  • Android 설정: Android에서는 AndroidManifest.xml 파일에 관련 권한이 이미 설정되어 있지만, 사용자가 전화 걸기나 SMS 전송과 같은 기능을 사용할 경우 추가 권한이 필요할 수 있다.

다만, 안드로이드에서는 http 스키마를 사용하는 URL을 열기 위해 AndroidManifest.xml에 별도의 intent 필드를 추가할 필요는 없다. 기본적으로 url_launcher 패키지는 http와 https 스키마를 지원하며, Android 시스템의 브라우저 또는 웹 앱이 이를 처리하도록 설계되어 있기 때문이다.

그러나 앱이 기본적으로 http 스키마를 지원하지 않는 다른 특정 작업이나 권한을 요구할 경우, 예를 들어 특정 앱 내에서만 URL을 열어야 하거나 앱에서 커스텀 웹 뷰를 사용해야 하는 경우라면 추가 설정이 필요할 수 있다.

다음의 코드를 android\app\src\main\AndroidManifest.xml 파일에 추가하면 된다. 단,<queries> element는 manifest의 자식요소로 추가 되어야 한다.

<!-- Provide required visibility configuration for API level 30 and above -->
<queries>
  <!-- If your app checks for SMS support -->
  <intent>
    <action android:name="android.intent.action.VIEW" />
    <data android:scheme="sms" />
  </intent>
  <!-- If your app checks for call support -->
  <intent>
    <action android:name="android.intent.action.VIEW" />
    <data android:scheme="tel" />
  </intent>
  <!-- If your application checks for inAppBrowserView launch mode support -->
  <intent>
    <action android:name="android.support.customtabs.action.CustomTabsService" />
  </intent>
</queries>

다양한 URL 형식 사용 예

전화 걸기, SMS 보내기, 이메일 작성 등 다양한 URL 형식을 사용해 원하는 작업을 수행할 수 있다.

  • 전화 걸기:

    final phoneUrl = 'tel:+1234567890';
    await launch(phoneUrl);
  • SMS 보내기:

    final smsUrl = 'sms:+1234567890';
    await launch(smsUrl);
  • 이메일 보내기:

    final emailUrl = 'mailto:example@example.com';
    await launch(emailUrl);

각 URL 형식에 맞춰 URL을 설정해주면 기본 앱이 해당 URL을 열게 된다.

주의사항

이 패키지는 다양한 플랫폼을 지원하나, 일부 URL 형식이 특정 플랫폼에서만 작동할 수 있다. 예를 들어, telsms와 같은 URL은 웹에서는 작동하지 않을 수 있다. 또한, 일부 플랫폼에서는 권한 설정이 추가적으로 필요하므로 이를 유의하여 설정하는 것이 좋다.

url_launcher는 Flutter 애플리케이션에서 URL 기반의 다양한 기능을 손쉽게 구현할 수 있도록 해주는 유용한 패키지로, 사용자의 기본 앱과 연동하여 다양한 작업을 수행할 수 있게 한다.

0개의 댓글