カテゴリー・パッケージ・リポジトリを検索

パッケージ詳細v1.7.0

ua_client_hints

FlutterにUser-Agentクライアントヒントを提供する。

AndroidiOSWebmacOS
30日間ダウンロード
19.2万
いいね数
52
Pub ポイント
130

パッケージをインストール

flutter pub add ua_client_hints

パッケージ概要

公開情報に基づく選定ガイドです。参考としてご利用ください。

ua_client_hints パッケージは、Flutter アプリケーションが User-Agent Client Hints にアクセスできるようにし、標準化された HTTP ヘッダーを通じて詳細なブラウザおよびデバイス情報を利用可能にします。Android、iOS、Web、macOS でのプラットフォーム、モデル、ブランドなどのクライアントメタデータを取得するプロセスを簡素化します。これにより、開発者は User-Agent 文字列の文字列解析に頼らず、ユーザーのデバイス特性に基づいてコンテンツ配信をカスタマイズできます。このパッケージは HTTP クライアントとシームレスに統合され、プライバシー保護を考慮した現代的なウェブ標準によるデバイス検出をサポートしています。

用途

  • デバイス固有のコンテンツレンダリング
  • ブラウザおよびオペレーティングシステムの検出
  • 最適化されたアセット配信
  • プライバシーに配慮した分析
  • クロスプラットフォーム互換性テスト

主な機能

  • Android、iOS、Web、macOS をサポートしています
  • HTTP ヘッダーを介して標準化されたクライアントヒントを提供
  • User-Agent文字列の解析に依存するのを減らす
  • 既存のHTTPクライアントと統合
  • デバイス検出のための現代的なWeb標準に準拠しています

適している対象

  • 正確なデバイス情報が必要な開発者
  • 適応型UI/UXを必要とするアプリ
  • プライバシーおよびコンプライアンスに焦点を当てたプロジェクト
  • Web およびモバイルハイブリッドアプリケーション
  • コンテンツ配信最適化

注意事項

  • 互換性のあるサーバーサイドのサポートが必要です
  • クライアントヒントを公開するデバイスに限定
  • すべてのブラウザがクライアントヒントを完全にサポートしているわけではありません
  • 追加のサーバー構成が必要になる場合があります
  • 下位プラットフォームの機能に依存します

元の README

関連するソースリポジトリの README 原文のスナップショットです。最新の内容はリポジトリをご覧ください。

User-Agent Client Hints for Flutter

What's User-Agent Client Hints?

User-Agent Client Hints
Improving user privacy and developer experience with User-Agent Client Hints
User-Agent Client Hints Demo on Browser

⬇️ Response Accept-CH ⬆️ Request header ⬆️ RequestExample value Description
UA Sec-CH-UA "Chromium";v="84",
"Google Chrome";v="84"
List of browser brands and their significant version.
UA-Mobile Sec-CH-UA-Mobile ?1 Boolean indicating if the browser is
on a mobile device (?1 for true) or not (?0 for false).
UA-Full-Version Sec-CH-UA-Full-Version "84.0.4143.2" The complete version for the browser.
UA-Platform Sec-CH-UA-Platform "Android" The platform for the device,
usually the operating system (OS).
UA-Platform-Version Sec-CH-UA-Platform-Version "10" The version for the platform or OS.
UA-Arch Sec-CH-UA-Arch "ARM64" The underlying architecture for the device.
While this may not be relevant to displaying the page,
the site may want to offer a download which defaults to the right format.
UA-Model Sec-CH-UA-Model "Pixel 3" The device model.

Installation

This plugin is set the Null Safety.

Add this to your package's pubspec.yaml file by running the following command

$ flutter pub add ua_client_hints

Usage

Supported platforms:

  • Android
  • iOS
  • macOS
  • Web

On Web, values depend on browser support for User-Agent Client Hints. Some fields such as architecture, model, or platformVersion can be empty on browsers that don't expose high-entropy hints.

With Dio

Add to the request header.

class AppDio with DioMixin implements Dio {
  AppDio._([BaseOptions options]) {
    options = BaseOptions(
      baseUrl: 'https://wasabeef.jp',
    );

    this.options = options;
    interceptors.add(InterceptorsWrapper(
      onRequest: (options) async {
        // Add User-Agent Client Hints
        options.headers.addAll(await userAgentClientHintsHeader());
        return options;
      },
    ));
  }

  static Dio getInstance() => AppDio._();
}
APIs
final String ua = await userAgent();

print('User-Agent: $ua');  // e.g.. 'SampleApp/1.0.0 (Android 11; Pixel 4 XL; coral; arm64-v8a)'
// macOS example:
// 'SampleApp/1.0.0 (macOS 15.5.0; Mac; Mac15,12; arm64)'
// Web fallback example:
// 'SampleApp/1.0.0 (macOS 15.5.0; Google Chrome; arm64)'
final UserAgentData uaData = await userAgentData();

print('platform:        ${uaData.platform}');              // e.g.. 'Android'
print('platformVersion: ${uaData.platformVersion}');       // e.g.. '10'
print('model:           ${uaData.model}');                 // e.g.. 'Pixel 4 XL'
print('architecture:    ${uaData.architecture}');          // e.g.. 'arm64-v8a'
print('brand:           ${uaData.brand}');                 // e.g.. 'Google'
print('mobile:          ${uaData.mobile}');                // e.g.. true
print('device:          ${uaData.device}');                // e.g.. 'coral'
print('appName:         ${uaData.package.appName}');       // e.g.. 'SampleApp'
print('appVersion:      ${uaData.package.appVersion}');    // e.g.. '1.0.0'
print('packageName:     ${uaData.package.packageName}');   // e.g.. 'jp.wasabeef.ua'
print('buildNumber:     ${uaData.package.buildNumber}');   // e.g.. '1'
final Map<String, dynamic> header = await userAgentClientHintsHeader();

print("Sec-CH-UA-Arch:             ${header['Sec-CH-UA-Arch']}");             // e.g.. 'arm64-v8a'
print("Sec-CH-UA-Model:            ${header['Sec-CH-UA-Model']}");            // e.g.. 'Pixel 4 XL'
print("Sec-CH-UA-Platform:         ${header['Sec-CH-UA-Platform']}");         // e.g.. 'Android'
print("Sec-CH-UA-Platform-Version: ${header['Sec-CH-UA-Platform-Version']}"); // e.g.. '10'
print("Sec-CH-UA:                  ${header['Sec-CH-UA']}");                  // e.g.. '"SampleApp"; v="1.0.0"'
print("Sec-CH-UA-Full-Version:     ${header['Sec-CH-UA-Full-Version']}");     // e.g.. '1.0.0'
print("Sec-CH-UA-Mobile:           ${header['Sec-CH-UA-Mobile']}");           // e.g.. '?1' (true) or '?0' (false)

カテゴリー

ソースリポジトリ

このパッケージを使用しているプロジェクト