url_launcher

하요·2024년 7월 4일
0
post-thumbnail

Flutter에서 URL 열기: url_launcher 패키지

url_launcher 패키지는 Flutter 애플리케이션에서 브라우저를 열거나 이메일, 전화, 문자 메시지를 보내는 등의 기능을 제공합니다. 이 패키지를 사용하면 다양한 URL 스킴을 처리할 수 있습니다.

주요 특징

  1. 브라우저에서 URL 열기:
    • 주어진 URL을 기본 브라우저에서 엽니다. http, https와 같은 scheme을 처리할 수 있습니다.
  2. 전화 걸기:
    • 전화 번호로 전화를 겁니다. tel scheme을 사용합니다.
  3. 이메일 보내기:
    • 이메일 클라이언트를 열어 이메일을 보냅니다. mailto scheme을 사용합니다.
  4. 문자 메시지 보내기:
    • 문자 메시지 앱을 열어 메시지를 보냅니다. sms scheme을 사용합니다.

설치

pubspec.yaml 파일에 url_launcher를 종속성으로 추가합니다.

dependencies:
  flutter:
    sdk: flutter
  url_launcher: ^6.0.9

사용 방법

URL 열기

import 'package:flutter/material.dart';
import 'package:url_launcher/url_launcher.dart';

final Uri _url = Uri.parse('<https://flutter.dev>');

void main() => runApp(
      const MaterialApp(
        home: Material(
          child: Center(
            child: ElevatedButton(
              onPressed: _launchUrl,
              child: Text('Show Flutter homepage'),
            ),
          ),
        ),
      ),
    );

Future<void> _launchUrl() async {
  if (!await launchUrl(_url)) {
    throw Exception('Could not launch $_url');
  }
}

전화 걸기

void _makePhoneCall() async {
  const phoneNumber = 'tel:+123456789';
  if (await canLaunch(phoneNumber)) {
    await launch(phoneNumber);
  } else {
    throw 'Could not launch $phoneNumber';
  }
}

이메일 보내기

void _sendEmail() async {
  final Uri emailUri = Uri(
    scheme: 'mailto',
    path: 'example@example.com',
    queryParameters: {
      'subject': 'Example Subject & Symbols are allowed!',
      'body': 'This is an example email body'
    }
  );

  if (await canLaunch(emailUri.toString())) {
    await launch(emailUri.toString());
  } else {
    throw 'Could not launch $emailUri';
  }
}

문자 메시지 보내기

void _sendSMS() async {
  const smsUri = 'sms:+123456789';
  if (await canLaunch(smsUri)) {
    await launch(smsUri);
  } else {
    throw 'Could not launch $smsUri';
  }
}

주의사항 및 팁

  • URL 유효성 검사: launch 메소드를 호출하기 전에 항상 canLaunch를 사용하여 URL이 유효한지 확인합니다. 유효하지 않은 URL을 열려고 하면 예외가 발생합니다.
    if (await canLaunch(url)) {
      await launch(url);
    } else {
      // URL이 유효하지 않으면 예외 처리
    }
    
  • 플랫폼 차이: 각 플랫폼(Android, iOS)마다 지원하는 스킴이 다를 수 있습니다. 각 스킴이 해당 플랫폼에서 지원되는지 확인해야 합니다.
  • iOS 권한 설정: iOS에서는 전화 걸기, SMS 보내기 등의 기능을 사용하려면 Info.plist 파일에 권한 설정이 필요합니다.
    <key>NSAppTransportSecurity</key>
    <dict>
      <key>NSAllowsArbitraryLoads</key>
      <true/>
    </dict>
    
  • Android 권한 설정: Android에서는 전화 걸기 등의 기능을 사용하려면 AndroidManifest.xml 파일에 권한 설정이 필요합니다.
    <uses-permission android:name="android.permission.CALL_PHONE"/>
    
  • URL 인코딩: URL은 특히 공백이나 특수 문자가 포함될 때 올바르게 인코딩되어야 합니다. Uri 클래스를 사용하여 자동으로 처리할 수 있습니다.

주요 활용도

  • 웹 페이지 열기: 앱에서 특정 웹 페이지로 이동하는 링크를 제공할 때 사용합니다.
  • 전화 걸기: 앱 내에서 전화 걸기 기능을 제공할 때 사용합니다.
  • 이메일 보내기: 고객 지원이나 문의 메일을 보내는 기능을 제공할 때 사용합니다.
  • 문자 메시지 보내기: 문자 메시지를 통해 사용자와 소통할 때 사용합니다.

관련 자료

profile
flutter 개발자(진)

0개의 댓글