ios_device_info.dart 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import 'dart:io';
  2. import 'package:app_tracking_transparency/app_tracking_transparency.dart';
  3. import 'package:device_info_plus/device_info_plus.dart';
  4. import 'package:uuid/uuid.dart';
  5. class IosDeviceInfo {
  6. static String _idfa = "";
  7. static String _idfv = "";
  8. static Future<void> iosInit() async {
  9. final DeviceInfoPlugin deviceInfoPlugin = DeviceInfoPlugin();
  10. if (Platform.isIOS) {
  11. var iosInfo = await deviceInfoPlugin.iosInfo;
  12. // 获取idfv
  13. if (_idfv.isEmpty) {
  14. _idfv = iosInfo.identifierForVendor ?? const Uuid().v4();
  15. }
  16. // 获取idfa
  17. if (_idfa.isEmpty) {
  18. final TrackingStatus status =
  19. await AppTrackingTransparency.trackingAuthorizationStatus;
  20. if (status == TrackingStatus.notDetermined) {
  21. final TrackingStatus newStatus =
  22. await AppTrackingTransparency.requestTrackingAuthorization();
  23. if (newStatus == TrackingStatus.authorized) {
  24. _idfa = await AppTrackingTransparency.getAdvertisingIdentifier();
  25. }
  26. } else if (status == TrackingStatus.authorized) {
  27. _idfa = await AppTrackingTransparency.getAdvertisingIdentifier();
  28. }
  29. }
  30. }
  31. }
  32. /// 隐私追踪弹窗
  33. Future<void> _appTrackingTransparency() async {
  34. final TrackingStatus status =
  35. await AppTrackingTransparency.trackingAuthorizationStatus;
  36. if (status == TrackingStatus.notDetermined) {
  37. await AppTrackingTransparency.requestTrackingAuthorization();
  38. } else if (status == TrackingStatus.authorized) {
  39. print(await AppTrackingTransparency.getAdvertisingIdentifier());
  40. }
  41. }
  42. static String getIdfa() {
  43. return _idfa;
  44. }
  45. static String getIdfv() {
  46. return _idfv;
  47. }
  48. }