반응형
질문
플러터에서 안드로이드와 IOS에서 실행되는 스마트폰에 따라 PlayStore/AppStore의 특정 URL을 어떻게 열 수 있을까요? 즉, 브라우저가 아닌 애플리케이션을 열고 싶습니다.
이 스레드에서 안드로이드에 대한 일부 네이티브 방법을 찾았는데, 플러터로 어떻게 할 수 있을까요?
final String appPackageName = getPackageName(); // getPackageName() from Context or Activity object
try {
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + appPackageName)));
} catch (android.content.ActivityNotFoundException anfe) {
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + appPackageName)));
}
현재 이를 수행할 수 있는 방법이 없다면, 플러그인 url_launcher에 구현할 좋은 기능이 될 것입니다.
답변
다음과 같이 플랫폼에 따라 URL을 열기 위해 url_luncher를 사용할 수 있습니다:
import 'package:url_launcher/url_launcher.dart';
if (Platform.isAndroid || Platform.isIOS) {
final appId = Platform.isAndroid ? 'YOUR_ANDROID_PACKAGE_ID' : 'YOUR_IOS_APP_ID';
final url = Uri.parse(
Platform.isAndroid
? "market://details?id=$appId"
: "https://apps.apple.com/app/id$appId",
);
launchUrl(
url,
mode: LaunchMode.externalApplication,
);
}
참고
- iOS 앱 ID를
http://itunes.apple.com/lookup?bundleId=YOUR_BUNDLE_ID
에서 가져올 수 있으며,trackId
를 찾으시면 됩니다. - iOS 시뮬레이터에서는 작동하지 않습니다. 앱 스토어가 없기 때문입니다.
mode
를LaunchMode.externalApplication
으로 설정하면 사파리가 일시적으로 나타나지 않습니다.
반응형
댓글