0 purchases
ua client hints
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
copied to clipboard
Usage #
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._();
}
copied to clipboard
APIs #
final String ua = await userAgent();
print('User-Agent: $ua'); // e.g.. 'SampleApp/1.0.0 (Android 11; Pixel 4 XL; coral; arm64-v8a)'
copied to clipboard
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'
copied to clipboard
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)
copied to clipboard
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.