
url_launcher는 Flutter 애플리케이션에서 다양한 유형의 URL을 쉽게 열 수 있도록 해주는 패키지이다. 이 패키지를 이용하면 웹 페이지, 전화 걸기, 이메일, SMS 등 여러 작업을 사용자의 기본 앱을 통해 실행할 수 있다. Android, iOS, 웹, Windows, macOS, 그리고 Linux와 같은 다양한 플랫폼을 지원한다.
url_launcher는 아래와 같은 URL 유형을 지원하여 각 URL에 맞는 기본 애플리케이션을 통해 작업을 수행할 수 있다.
http와 https URL을 기본 브라우저에서 열 수 있다. 이를 통해 앱에서 웹 페이지를 여는 작업을 손쉽게 구현할 수 있다.tel 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';
}
}
이 코드는 URL을 기본 브라우저에서 열거나, 열 수 없는 경우 오류 메시지를 발생시킨다.
url_launcher는 플랫폼에 따라 추가 설정이 필요할 수 있다.
Info.plist 파일에 URL을 사용할 권한을 명시해야 한다. 예를 들어, 웹 페이지를 열려면 NSAppTransportSecurity 키와 NSAllowsArbitraryLoads를 설정해야 한다.다음의 코드를 ios\Runner\Info.plist 파일에 추가하면 된다.
<key>LSApplicationQueriesSchemes</key>
<array>
<string>sms</string>
<string>tel</string>
</array>
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>
전화 걸기, 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 형식이 특정 플랫폼에서만 작동할 수 있다. 예를 들어, tel 및 sms와 같은 URL은 웹에서는 작동하지 않을 수 있다. 또한, 일부 플랫폼에서는 권한 설정이 추가적으로 필요하므로 이를 유의하여 설정하는 것이 좋다.
url_launcher는 Flutter 애플리케이션에서 URL 기반의 다양한 기능을 손쉽게 구현할 수 있도록 해주는 유용한 패키지로, 사용자의 기본 앱과 연동하여 다양한 작업을 수행할 수 있게 한다.