diff --git a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/AnimatedCurrentLocationViewController.swift b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/AnimatedCurrentLocationViewController.swift index 9b1b7cec..a24448eb 100755 --- a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/AnimatedCurrentLocationViewController.swift +++ b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/AnimatedCurrentLocationViewController.swift @@ -41,6 +41,9 @@ final class AnimatedCurrentLocationViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() + // Register this sample with Google Maps for usage tracking + registerAttribution() + // Setup location services guard CLLocationManager.locationServicesEnabled() else { print("Please enable location services") @@ -58,6 +61,13 @@ final class AnimatedCurrentLocationViewController: UIViewController { locationManager.distanceFilter = 5.0 locationManager.startUpdatingLocation() } + + private func registerAttribution() { + // Use custom shorter ID due to long class name: AnimatedCurrentLocationViewController -> animatedlocation + let majorVersion = GMSServices.sdkVersion().components(separatedBy: ".").first ?? "10" + let attributionID = "gmp_git_iosmapssamples_v\(majorVersion)_animatedlocation" + GMSServices.addInternalUsageAttributionID(attributionID) + } } extension AnimatedCurrentLocationViewController: CLLocationManagerDelegate { diff --git a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/AnimatedUIViewMarkerViewController.swift b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/AnimatedUIViewMarkerViewController.swift index 4e208003..547b2288 100755 --- a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/AnimatedUIViewMarkerViewController.swift +++ b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/AnimatedUIViewMarkerViewController.swift @@ -16,6 +16,8 @@ import UIKit // Sample code for customizing the marker. class AnimatedUIViewMarkerViewController: UIViewController { + /// Manages Google Maps SDK usage attribution for this sample. + private let attributionManager: GoogleMapsAttributionManaging = GoogleMapsAttributionManager() private lazy var mapView: GMSMapView = { let camera = GMSCameraPosition(latitude: -33.8683, longitude: 151.2086, zoom: 5) @@ -44,6 +46,9 @@ class AnimatedUIViewMarkerViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() + // Register this sample with Google Maps for usage tracking + attributionManager.addAttribution(for: self) + NotificationCenter.default.addObserver( self, selector: #selector(applicationWillEnterForeground), name: UIApplication.willEnterForegroundNotification, object: nil) diff --git a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/CameraViewController.swift b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/CameraViewController.swift index e732f9fb..eb8db446 100755 --- a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/CameraViewController.swift +++ b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/CameraViewController.swift @@ -15,6 +15,8 @@ import GoogleMaps import UIKit class CameraViewController: UIViewController { + /// Manages Google Maps SDK usage attribution for this sample. + private let attributionManager: GoogleMapsAttributionManaging = GoogleMapsAttributionManager() private let interval: TimeInterval = 1 / 30 @@ -32,6 +34,12 @@ class CameraViewController: UIViewController { private var timer: Timer? + override func viewDidLoad() { + super.viewDidLoad() + // Register this sample with Google Maps for usage tracking + attributionManager.addAttribution(for: self) + } + override func loadView() { // Opt the MapView into automatic dark mode switching. mapView.overrideUserInterfaceStyle = .unspecified diff --git a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/CustomIndoorViewController.swift b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/CustomIndoorViewController.swift index 2ec6f571..08adf22c 100755 --- a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/CustomIndoorViewController.swift +++ b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/CustomIndoorViewController.swift @@ -15,6 +15,9 @@ import GoogleMaps import UIKit class CustomIndoorViewController: UIViewController { + /// Manages Google Maps SDK usage attribution for this sample. + private let attributionManager: GoogleMapsAttributionManaging = GoogleMapsAttributionManager() + private lazy var mapView: GMSMapView = { let camera = GMSCameraPosition(latitude: 37.78318, longitude: -122.403874, zoom: 18) let options = GMSMapViewOptions() @@ -29,6 +32,9 @@ class CustomIndoorViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() + // Register this sample with Google Maps for usage tracking + attributionManager.addAttribution(for: self) + view.backgroundColor = .gray mapView.settings.myLocationButton = false diff --git a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/CustomMarkersViewController.swift b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/CustomMarkersViewController.swift index 4464ef9c..c626672e 100755 --- a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/CustomMarkersViewController.swift +++ b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/CustomMarkersViewController.swift @@ -16,6 +16,9 @@ import UIKit // Sample code for customizing the marker. class CustomMarkersViewController: UIViewController { + /// Manages Google Maps SDK usage attribution for this sample. + private let attributionManager: GoogleMapsAttributionManaging = GoogleMapsAttributionManager() + private var markerCount = 0 private lazy var mapView: GMSMapView = { @@ -26,6 +29,12 @@ class CustomMarkersViewController: UIViewController { return GMSMapView(options: options) }() + override func viewDidLoad() { + super.viewDidLoad() + // Register this sample with Google Maps for usage tracking + attributionManager.addAttribution(for: self) + } + override func loadView() { // Opt the MapView into automatic dark mode switching. mapView.overrideUserInterfaceStyle = .unspecified diff --git a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/DataDrivenStylingBasicViewController.swift b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/DataDrivenStylingBasicViewController.swift index 0f6818a8..1416baf6 100755 --- a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/DataDrivenStylingBasicViewController.swift +++ b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/DataDrivenStylingBasicViewController.swift @@ -100,6 +100,8 @@ private class SliderControls { } class DataDrivenStylingBasicViewController: UIViewController { + /// Manages Google Maps SDK usage attribution for this sample. + private let attributionManager: GoogleMapsAttributionManaging = GoogleMapsAttributionManager() private lazy var config = [ FeatureLayerConfig( @@ -165,6 +167,9 @@ class DataDrivenStylingBasicViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() + // Register this sample with Google Maps for usage tracking + attributionManager.addAttribution(for: self) + mainView = featureTypeSelectionLabel segmentedControl.addTarget( diff --git a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/DataDrivenStylingEventsViewController.swift b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/DataDrivenStylingEventsViewController.swift index 4d628b46..1fc9dcbe 100755 --- a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/DataDrivenStylingEventsViewController.swift +++ b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/DataDrivenStylingEventsViewController.swift @@ -19,6 +19,8 @@ import UIKit private let mapIDWithMultipleLayers = "" class DataDrivenStylingEventsViewController: UIViewController { + /// Manages Google Maps SDK usage attribution for this sample. + private let attributionManager: GoogleMapsAttributionManaging = GoogleMapsAttributionManager() private let sectionIdentifierForLayerToggles = "sectionIdentifierForLayerToggles" private let cellIdentifier = "cellIdentifier" @@ -83,6 +85,9 @@ class DataDrivenStylingEventsViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() + // Register this sample with Google Maps for usage tracking + attributionManager.addAttribution(for: self) + if mapID.isEmpty { promptForMapID(description: "with all data-driven styling layers enabled") { self.mapID = $0 diff --git a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/DataDrivenStylingSearchViewController.swift b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/DataDrivenStylingSearchViewController.swift index e8cd7451..aca15fe1 100755 --- a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/DataDrivenStylingSearchViewController.swift +++ b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/DataDrivenStylingSearchViewController.swift @@ -198,6 +198,9 @@ class NotCapturingTouchesTableView: UITableView { } class DataDrivenStylingSearchViewController: UIViewController { + /// Manages Google Maps SDK usage attribution for this sample. + private let attributionManager: GoogleMapsAttributionManaging = GoogleMapsAttributionManager() + private let cellIdentifier = "cellIdentifier" fileprivate let urlSession = URLSession( @@ -251,6 +254,9 @@ class DataDrivenStylingSearchViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() + + // Register this sample with Google Maps for usage tracking + attributionManager.addAttribution(for: self) if mapID.isEmpty { promptForMapID(description: "with all data-driven styling layers enabled") { self.mapID = $0 diff --git a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/DoubleMapViewController.swift b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/DoubleMapViewController.swift index e5111443..bbc752bc 100755 --- a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/DoubleMapViewController.swift +++ b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/DoubleMapViewController.swift @@ -15,6 +15,8 @@ import GoogleMaps import UIKit class DoubleMapViewController: UIViewController { + /// Manages Google Maps SDK usage attribution for this sample. + private let attributionManager: GoogleMapsAttributionManaging = GoogleMapsAttributionManager() private lazy var sanFranciscoCamera = GMSCameraPosition( latitude: 37.7847, longitude: -122.41, zoom: 5) @@ -44,6 +46,9 @@ class DoubleMapViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() + // Register this sample with Google Maps for usage tracking + attributionManager.addAttribution(for: self) + mapView.delegate = self mapView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(mapView) diff --git a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/FitBoundsViewController.swift b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/FitBoundsViewController.swift index 0588968e..fc8e2f34 100755 --- a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/FitBoundsViewController.swift +++ b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/FitBoundsViewController.swift @@ -15,6 +15,8 @@ import GoogleMaps import UIKit class FitBoundsViewController: UIViewController { + /// Manages Google Maps SDK usage attribution for this sample. + private let attributionManager: GoogleMapsAttributionManaging = GoogleMapsAttributionManager() private let markerImageName = "glow-marker" @@ -58,6 +60,9 @@ class FitBoundsViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() + // Register this sample with Google Maps for usage tracking + attributionManager.addAttribution(for: self) + markers.forEach { marker in marker.map = mapView } diff --git a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/FixedPanoramaViewController.swift b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/FixedPanoramaViewController.swift index 2317dcef..91634cb4 100755 --- a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/FixedPanoramaViewController.swift +++ b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/FixedPanoramaViewController.swift @@ -15,6 +15,15 @@ import GoogleMaps import UIKit class FixedPanoramaViewController: UIViewController { + /// Manages Google Maps SDK usage attribution for this sample. + private let attributionManager: GoogleMapsAttributionManaging = GoogleMapsAttributionManager() + + override func viewDidLoad() { + super.viewDidLoad() + // Register this sample with Google Maps for usage tracking + attributionManager.addAttribution(for: self) + } + override func loadView() { let panoramaView = GMSPanoramaView(frame: .zero) panoramaView.moveNearCoordinate(.mountainSceneLocation) diff --git a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/FrameRateViewController.swift b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/FrameRateViewController.swift index 4845f422..a2698de4 100755 --- a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/FrameRateViewController.swift +++ b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/FrameRateViewController.swift @@ -15,6 +15,8 @@ import GoogleMaps import UIKit class FrameRateViewController: UIViewController { + /// Manages Google Maps SDK usage attribution for this sample. + private let attributionManager: GoogleMapsAttributionManaging = GoogleMapsAttributionManager() private lazy var mapView: GMSMapView = { let camera = GMSCameraPosition(latitude: -33.868, longitude: 151.2086, zoom: 6) @@ -55,6 +57,12 @@ class FrameRateViewController: UIViewController { ]) } + override func viewDidLoad() { + super.viewDidLoad() + // Register this sample with Google Maps for usage tracking + attributionManager.addAttribution(for: self) + } + @objc func changeFrameRate() { mapView.preferredFrameRate = nextFrameRate() updateStatus() diff --git a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/GeocoderViewController.swift b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/GeocoderViewController.swift index c4d342b0..f754db7b 100755 --- a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/GeocoderViewController.swift +++ b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/GeocoderViewController.swift @@ -16,6 +16,8 @@ import UIKit // Sample code for GeoCoder service. class GeocoderViewController: UIViewController { + /// Manages Google Maps SDK usage attribution for this sample. + private let attributionManager: GoogleMapsAttributionManaging = GoogleMapsAttributionManager() private lazy var mapView: GMSMapView = { let camera = GMSCameraPosition(latitude: -33.868, longitude: 151.2086, zoom: 12) @@ -34,6 +36,12 @@ class GeocoderViewController: UIViewController { // Opt the MapView into automatic dark mode switching. mapView.overrideUserInterfaceStyle = .unspecified } + + override func viewDidLoad() { + super.viewDidLoad() + // Register this sample with Google Maps for usage tracking + attributionManager.addAttribution(for: self) + } } extension GeocoderViewController: @MainActor GMSMapViewDelegate { diff --git a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/GestureControlViewController.swift b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/GestureControlViewController.swift index 10452da3..1991c7b6 100755 --- a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/GestureControlViewController.swift +++ b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/GestureControlViewController.swift @@ -15,6 +15,9 @@ import GoogleMaps import UIKit class GestureControlViewController: UIViewController { + /// Manages Google Maps SDK usage attribution for this sample. + private let attributionManager: GoogleMapsAttributionManaging = GoogleMapsAttributionManager() + private let holderHeight: CGFloat = 60 private let zoomLabelInset: CGFloat = 16 @@ -30,6 +33,9 @@ class GestureControlViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() + // Register this sample with Google Maps for usage tracking + attributionManager.addAttribution(for: self) + // Opt the MapView into automatic dark mode switching. mapView.overrideUserInterfaceStyle = .unspecified diff --git a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/GradientPolylinesViewController.swift b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/GradientPolylinesViewController.swift index 64618fb4..128f39ba 100755 --- a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/GradientPolylinesViewController.swift +++ b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/GradientPolylinesViewController.swift @@ -34,6 +34,8 @@ struct Coordinate: Decodable { } final class GradientPolylinesViewController: UIViewController { + /// Manages Google Maps SDK usage attribution for this sample. + private let attributionManager: GoogleMapsAttributionManaging = GoogleMapsAttributionManager() private lazy var mapView: GMSMapView = { let camera = GMSCameraPosition( @@ -53,6 +55,8 @@ final class GradientPolylinesViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() + // Register this sample with Google Maps for usage tracking + attributionManager.addAttribution(for: self) addTrackToMap() } diff --git a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/GroundOverlayViewController.swift b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/GroundOverlayViewController.swift index 68b34f86..a9e0e2e1 100755 --- a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/GroundOverlayViewController.swift +++ b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/GroundOverlayViewController.swift @@ -15,6 +15,9 @@ import GoogleMaps import UIKit final class GroundOverlayViewController: UIViewController { + /// Manages Google Maps SDK usage attribution for this sample. + private let attributionManager: GoogleMapsAttributionManaging = GoogleMapsAttributionManager() + override func loadView() { let southWest = CLLocationCoordinate2D(latitude: 40.712216, longitude: -74.22655) let northEast = CLLocationCoordinate2D(latitude: 40.773941, longitude: -74.12544) @@ -43,6 +46,12 @@ final class GroundOverlayViewController: UIViewController { groundOverlay.bounds = overlayBounds groundOverlay.map = mapView } + + override func viewDidLoad() { + super.viewDidLoad() + // Register this sample with Google Maps for usage tracking + attributionManager.addAttribution(for: self) + } } extension GroundOverlayViewController: @MainActor GMSMapViewDelegate { diff --git a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/IndoorMuseumNavigationViewController.swift b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/IndoorMuseumNavigationViewController.swift index 35d3d07f..c6988f40 100755 --- a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/IndoorMuseumNavigationViewController.swift +++ b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/IndoorMuseumNavigationViewController.swift @@ -34,6 +34,9 @@ struct Exhibit: Decodable { } class IndoorMuseumNavigationViewController: UIViewController { + /// Manages Google Maps SDK usage attribution for this sample. + private let attributionManager: GoogleMapsAttributionManaging = GoogleMapsAttributionManager() + private lazy var mapView: GMSMapView = { let camera = GMSCameraPosition(latitude: 38.8879, longitude: -77.0200, zoom: 17) let options = GMSMapViewOptions() @@ -60,6 +63,9 @@ class IndoorMuseumNavigationViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() + // Register this sample with Google Maps for usage tracking + attributionManager.addAttribution(for: self) + mapView.delegate = self mapView.indoorDisplay.delegate = self diff --git a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/IndoorViewController.swift b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/IndoorViewController.swift index cfcdbdd5..f5e86462 100755 --- a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/IndoorViewController.swift +++ b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/IndoorViewController.swift @@ -15,6 +15,8 @@ import GoogleMaps import UIKit class IndoorViewController: UIViewController { + /// Manages Google Maps SDK usage attribution for this sample. + private let attributionManager: GoogleMapsAttributionManaging = GoogleMapsAttributionManager() let mapStyleOptions: [SampleMapStyle] = [.retro, .grayscale, .night, .normal] private lazy var mapView: GMSMapView = { @@ -34,6 +36,12 @@ class IndoorViewController: UIViewController { view = mapView } + override func viewDidLoad() { + super.viewDidLoad() + // Register this sample with Google Maps for usage tracking + attributionManager.addAttribution(for: self) + } + func alertAction(_ sampleMapStyle: SampleMapStyle) -> UIAlertAction { return UIAlertAction(title: sampleMapStyle.description, style: .default) { [weak self] _ in self?.mapView.mapStyle = sampleMapStyle.mapStyle diff --git a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/MapLayerViewController.swift b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/MapLayerViewController.swift index 085e6643..30d3a284 100755 --- a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/MapLayerViewController.swift +++ b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/MapLayerViewController.swift @@ -15,6 +15,9 @@ import GoogleMaps import UIKit class MapLayerViewController: UIViewController { + /// Manages Google Maps SDK usage attribution for this sample. + private let attributionManager: GoogleMapsAttributionManaging = GoogleMapsAttributionManager() + private let duration: TimeInterval = 2 private lazy var mapView: GMSMapView = { @@ -37,6 +40,12 @@ class MapLayerViewController: UIViewController { title: "Fly to My Location", style: .plain, target: self, action: #selector(tapMyLocation)) } + override func viewDidLoad() { + super.viewDidLoad() + // Register this sample with Google Maps for usage tracking + attributionManager.addAttribution(for: self) + } + @objc func tapMyLocation() { guard let location = mapView.myLocation, CLLocationCoordinate2DIsValid(location.coordinate) else { diff --git a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/MapTypesViewController.swift b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/MapTypesViewController.swift index 690a2be4..90aeb038 100755 --- a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/MapTypesViewController.swift +++ b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/MapTypesViewController.swift @@ -15,6 +15,8 @@ import GoogleMaps import UIKit class MapTypesViewController: UIViewController { + /// Manages Google Maps SDK usage attribution for this sample. + private let attributionManager: GoogleMapsAttributionManaging = GoogleMapsAttributionManager() private let types: [GMSMapViewType] = [.normal, .satellite, .hybrid, .terrain] private lazy var mapView: GMSMapView = { @@ -39,6 +41,9 @@ class MapTypesViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() + // Register this sample with Google Maps for usage tracking + attributionManager.addAttribution(for: self) + segmentedControl.selectedSegmentIndex = 0 segmentedControl.addTarget(self, action: #selector(changeMapType), for: .valueChanged) navigationItem.titleView = segmentedControl diff --git a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/MapZoomViewController.swift b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/MapZoomViewController.swift index b52a2dba..3e69f49c 100755 --- a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/MapZoomViewController.swift +++ b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/MapZoomViewController.swift @@ -55,6 +55,8 @@ enum ModeEnum: String { } class MapZoomViewController: UIViewController { + /// Manages Google Maps SDK usage attribution for this sample. + private let attributionManager: GoogleMapsAttributionManaging = GoogleMapsAttributionManager() private let backgroundColor = UIColor(white: 1, alpha: 0.8) @@ -103,6 +105,12 @@ class MapZoomViewController: UIViewController { barButtonSystemItem: .play, target: self, action: #selector(didTapNext)) } + override func viewDidLoad() { + super.viewDidLoad() + // Register this sample with Google Maps for usage tracking + attributionManager.addAttribution(for: self) + } + @objc func didTapNext() { let nextModeEnum = ModeEnum(index: nextMode) mapView.setMinZoom(nextModeEnum.minZoom, maxZoom: nextModeEnum.maxZoom) diff --git a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/MarkerEventsViewController.swift b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/MarkerEventsViewController.swift index 6aad35db..4b970764 100755 --- a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/MarkerEventsViewController.swift +++ b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/MarkerEventsViewController.swift @@ -15,6 +15,8 @@ import GoogleMaps import UIKit final class MarkerEventsViewController: UIViewController { + /// Manages Google Maps SDK usage attribution for this sample. + private let attributionManager: GoogleMapsAttributionManaging = GoogleMapsAttributionManager() private lazy var mapView: GMSMapView = { let camera = GMSCameraPosition(latitude: -37.81969, longitude: 144.966085, zoom: 4) @@ -39,6 +41,12 @@ final class MarkerEventsViewController: UIViewController { view = mapView } + + override func viewDidLoad() { + super.viewDidLoad() + // Register this sample with Google Maps for usage tracking + attributionManager.addAttribution(for: self) + } } extension MarkerEventsViewController: @MainActor GMSMapViewDelegate { diff --git a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/MarkerInfoWindowViewController.swift b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/MarkerInfoWindowViewController.swift index 2a699ec9..09e2fa9c 100755 --- a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/MarkerInfoWindowViewController.swift +++ b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/MarkerInfoWindowViewController.swift @@ -15,6 +15,8 @@ import GoogleMaps import UIKit final class MarkerInfoWindowViewController: UIViewController { + /// Manages Google Maps SDK usage attribution for this sample. + private let attributionManager: GoogleMapsAttributionManaging = GoogleMapsAttributionManager() private let sydneyMarker = GMSMarker( position: CLLocationCoordinate2D(latitude: -33.8683, longitude: 151.2086)) @@ -54,6 +56,12 @@ final class MarkerInfoWindowViewController: UIViewController { brisbaneMarker.snippet = "Population: 2,189,878" brisbaneMarker.map = mapView } + + override func viewDidLoad() { + super.viewDidLoad() + // Register this sample with Google Maps for usage tracking + attributionManager.addAttribution(for: self) + } } extension MarkerInfoWindowViewController: @MainActor GMSMapViewDelegate { diff --git a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/MarkerLayerViewController.swift b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/MarkerLayerViewController.swift index 77077b77..16745d3a 100755 --- a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/MarkerLayerViewController.swift +++ b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/MarkerLayerViewController.swift @@ -30,6 +30,8 @@ class PathIterator: IteratorProtocol { } final class MarkerLayerViewController: UIViewController { + /// Manages Google Maps SDK usage attribution for this sample. + private let attributionManager: GoogleMapsAttributionManaging = GoogleMapsAttributionManager() private var fadedMarker: GMSMarker? { didSet { @@ -59,6 +61,9 @@ final class MarkerLayerViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() + // Register this sample with Google Maps for usage tracking + attributionManager.addAttribution(for: self) + // Creates a plane that flies to several airports around western Europe. var path = GMSMutablePath() path.addLatitude(52.310683, longitude: 4.765121) diff --git a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/MarkersViewController.swift b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/MarkersViewController.swift index b10c0709..4961370c 100755 --- a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/MarkersViewController.swift +++ b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/MarkersViewController.swift @@ -16,6 +16,9 @@ import UIKit // Sample code for adding a marker. class MarkersViewController: UIViewController { + /// Manages Google Maps SDK usage attribution for this sample. + private let attributionManager: GoogleMapsAttributionManaging = GoogleMapsAttributionManager() + private lazy var sydneyMarker = GMSMarker( position: CLLocationCoordinate2D(latitude: -33.8683, longitude: 151.2086)) @@ -67,4 +70,10 @@ class MarkersViewController: UIViewController { melbourneMarker.snippet = "Population: 4,169,103" melbourneMarker.map = mapView } + + override func viewDidLoad() { + super.viewDidLoad() + // Register this sample with Google Maps for usage tracking + attributionManager.addAttribution(for: self) + } } diff --git a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/MyLocationViewController.swift b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/MyLocationViewController.swift index 056a4857..aed1058b 100755 --- a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/MyLocationViewController.swift +++ b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/MyLocationViewController.swift @@ -15,6 +15,8 @@ import GoogleMaps import UIKit class MyLocationViewController: UIViewController { + /// Manages Google Maps SDK usage attribution for this sample. + private let attributionManager: GoogleMapsAttributionManaging = GoogleMapsAttributionManager() private let cameraLatitude: CLLocationDegrees = -33.868 @@ -42,6 +44,9 @@ class MyLocationViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() + // Register this sample with Google Maps for usage tracking + attributionManager.addAttribution(for: self) + // Opt the MapView into automatic dark mode switching. mapView.overrideUserInterfaceStyle = .unspecified diff --git a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/PaddingBehaviorViewController.swift b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/PaddingBehaviorViewController.swift index 665c72f9..3f3d548d 100755 --- a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/PaddingBehaviorViewController.swift +++ b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/PaddingBehaviorViewController.swift @@ -15,6 +15,8 @@ import GoogleMaps import UIKit class PaddingBehaviorViewController: UIViewController { + /// Manages Google Maps SDK usage attribution for this sample. + private let attributionManager: GoogleMapsAttributionManaging = GoogleMapsAttributionManager() private static let panoramaCoordinate: CLLocationCoordinate2D = CLLocationCoordinate2D( latitude: 40.761388, longitude: -73.978133) @@ -44,6 +46,9 @@ class PaddingBehaviorViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() + // Register this sample with Google Maps for usage tracking + attributionManager.addAttribution(for: self) + mapView.frame = view.bounds view.addSubview(mapView) diff --git a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/PanoramaViewController.swift b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/PanoramaViewController.swift index f0ac54a4..73f5b9cd 100755 --- a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/PanoramaViewController.swift +++ b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/PanoramaViewController.swift @@ -15,6 +15,8 @@ import GoogleMaps import UIKit class PanoramaViewController: UIViewController { + /// Manages Google Maps SDK usage attribution for this sample. + private let attributionManager: GoogleMapsAttributionManaging = GoogleMapsAttributionManager() private let markerLocation = CLLocationCoordinate2D(latitude: 40.761455, longitude: -73.977814) private var panoramaView = GMSPanoramaView(frame: .zero) @@ -41,6 +43,12 @@ class PanoramaViewController: UIViewController { statusLabel.trailingAnchor.constraint(equalTo: view.trailingAnchor), ]) } + + override func viewDidLoad() { + super.viewDidLoad() + // Register this sample with Google Maps for usage tracking + attributionManager.addAttribution(for: self) + } } extension PanoramaViewController: @MainActor GMSPanoramaViewDelegate { diff --git a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/PolygonsViewController.swift b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/PolygonsViewController.swift index 63609945..640b1a8d 100755 --- a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/PolygonsViewController.swift +++ b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/PolygonsViewController.swift @@ -15,6 +15,8 @@ import GoogleMaps import UIKit final class PolygonsViewController: UIViewController { + /// Manages Google Maps SDK usage attribution for this sample. + private let attributionManager: GoogleMapsAttributionManaging = GoogleMapsAttributionManager() private lazy var mapView: GMSMapView = { let cameraPosition = GMSCameraPosition(latitude: 39.13006, longitude: -77.508545, zoom: 4) @@ -33,6 +35,12 @@ final class PolygonsViewController: UIViewController { view = mapView } + override func viewDidLoad() { + super.viewDidLoad() + // Register this sample with Google Maps for usage tracking + attributionManager.addAttribution(for: self) + } + override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) // Create renderer related objects after view appears, so a renderer will be available; diff --git a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/PolylinesViewController.swift b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/PolylinesViewController.swift index b5cee3c7..84fa67c0 100755 --- a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/PolylinesViewController.swift +++ b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/PolylinesViewController.swift @@ -15,6 +15,9 @@ import GoogleMaps import UIKit final class PolylinesViewController: UIViewController { + /// Manages Google Maps SDK usage attribution for this sample. + private let attributionManager: GoogleMapsAttributionManaging = GoogleMapsAttributionManager() + private lazy var styles: [GMSStrokeStyle] = { let greenStyle = GMSStrokeStyle.gradient(from: .green, to: UIColor.green.withAlphaComponent(0)) let redStyle = GMSStrokeStyle.gradient(from: UIColor.red.withAlphaComponent(0), to: .red) @@ -44,6 +47,9 @@ final class PolylinesViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() + // Register this sample with Google Maps for usage tracking + attributionManager.addAttribution(for: self) + var path = GMSMutablePath() path.addLatitude(-33.866901, longitude: 151.195988) path.addLatitude(-18, longitude: 179) diff --git a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/SnapshotReadyViewController.swift b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/SnapshotReadyViewController.swift index eb7b93b7..48a672cf 100755 --- a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/SnapshotReadyViewController.swift +++ b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/SnapshotReadyViewController.swift @@ -15,6 +15,9 @@ import GoogleMaps import UIKit class SnapshotReadyViewController: UIViewController { + /// Manages Google Maps SDK usage attribution for this sample. + private let attributionManager: GoogleMapsAttributionManaging = GoogleMapsAttributionManager() + lazy var mapView: GMSMapView = { let camera = GMSCameraPosition(latitude: -33.868, longitude: 151.2086, zoom: 6) let options = GMSMapViewOptions() @@ -69,6 +72,12 @@ class SnapshotReadyViewController: UIViewController { } + override func viewDidLoad() { + super.viewDidLoad() + // Register this sample with Google Maps for usage tracking + attributionManager.addAttribution(for: self) + } + @objc func didTapWait() { isAwaitingSnapshot = true } diff --git a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/StructuredGeocoderViewController.swift b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/StructuredGeocoderViewController.swift index 4e426cbb..99572727 100755 --- a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/StructuredGeocoderViewController.swift +++ b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/StructuredGeocoderViewController.swift @@ -16,6 +16,8 @@ import UIKit // Sample code for GeoCoder service. class StructuredGeocoderViewController: UIViewController { + /// Manages Google Maps SDK usage attribution for this sample. + private let attributionManager: GoogleMapsAttributionManaging = GoogleMapsAttributionManager() private lazy var mapView: GMSMapView = { let camera = GMSCameraPosition(latitude: -33.868, longitude: 151.2086, zoom: 12) @@ -36,6 +38,12 @@ class StructuredGeocoderViewController: UIViewController { mapView.delegate = self } + override func viewDidLoad() { + super.viewDidLoad() + // Register this sample with Google Maps for usage tracking + attributionManager.addAttribution(for: self) + } + } extension StructuredGeocoderViewController: @MainActor GMSMapViewDelegate { diff --git a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/StyledMapViewController.swift b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/StyledMapViewController.swift index f7a8495e..4c630c42 100755 --- a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/StyledMapViewController.swift +++ b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/StyledMapViewController.swift @@ -15,6 +15,9 @@ import GoogleMaps import UIKit class StyledMapViewController: UIViewController { + /// Manages Google Maps SDK usage attribution for this sample. + private let attributionManager: GoogleMapsAttributionManaging = GoogleMapsAttributionManager() + lazy var mapView: GMSMapView = { let camera = GMSCameraPosition(latitude: -33.868, longitude: 151.2086, zoom: 12) let options = GMSMapViewOptions() @@ -32,6 +35,12 @@ class StyledMapViewController: UIViewController { updateUI(style: .retro) } + override func viewDidLoad() { + super.viewDidLoad() + // Register this sample with Google Maps for usage tracking + attributionManager.addAttribution(for: self) + } + func updateUI(style: SampleMapStyle) { navigationItem.title = "\(style)" mapView.mapStyle = style.mapStyle diff --git a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/TileLayerViewController.swift b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/TileLayerViewController.swift index 6963f29a..62a10d05 100755 --- a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/TileLayerViewController.swift +++ b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/TileLayerViewController.swift @@ -15,6 +15,9 @@ import GoogleMaps import UIKit final class TileLayerViewController: UIViewController { + /// Manages Google Maps SDK usage attribution for this sample. + private let attributionManager: GoogleMapsAttributionManaging = GoogleMapsAttributionManager() + private var selectedIndex = 0 { didSet { updateTileLayer() @@ -54,6 +57,12 @@ final class TileLayerViewController: UIViewController { changeFloor() } + override func viewDidLoad() { + super.viewDidLoad() + // Register this sample with Google Maps for usage tracking + attributionManager.addAttribution(for: self) + } + @objc func changeFloor() { guard segmentedControl.selectedSegmentIndex != selectedIndex else { return } selectedIndex = segmentedControl.selectedSegmentIndex diff --git a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/TrafficMapViewController.swift b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/TrafficMapViewController.swift index c34a5f4c..65e4a385 100755 --- a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/TrafficMapViewController.swift +++ b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/TrafficMapViewController.swift @@ -15,6 +15,8 @@ import GoogleMaps import UIKit class TrafficMapViewController: UIViewController { + /// Manages Google Maps SDK usage attribution for this sample. + private let attributionManager: GoogleMapsAttributionManaging = GoogleMapsAttributionManager() private var mapView: GMSMapView = { let camera = GMSCameraPosition(latitude: -33.868, longitude: 151.2086, zoom: 12) @@ -34,4 +36,10 @@ class TrafficMapViewController: UIViewController { view = mapView } + override func viewDidLoad() { + super.viewDidLoad() + // Register this sample with Google Maps for usage tracking + attributionManager.addAttribution(for: self) + } + } diff --git a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/VisibleRegionViewController.swift b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/VisibleRegionViewController.swift index 124c5270..3bc24096 100755 --- a/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/VisibleRegionViewController.swift +++ b/GoogleMaps-Swift/GoogleMapsSwiftXCFrameworkDemos/Swift/Samples/VisibleRegionViewController.swift @@ -15,6 +15,8 @@ import GoogleMaps import UIKit class VisibleRegionViewController: UIViewController { + /// Manages Google Maps SDK usage attribution for this sample. + private let attributionManager: GoogleMapsAttributionManaging = GoogleMapsAttributionManager() static let overlayHeight: CGFloat = 140 private lazy var mapView: GMSMapView = { @@ -55,6 +57,12 @@ class VisibleRegionViewController: UIViewController { view.addSubview(overlay) } + override func viewDidLoad() { + super.viewDidLoad() + // Register this sample with Google Maps for usage tracking + attributionManager.addAttribution(for: self) + } + @objc func didTapToggleOverlay() { let padding = mapView.padding UIView.animate(withDuration: 2) { [unowned self] in