// // Copyright 2022 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // // MARK: This file is used to evaluate the experience of using Analytics APIs in Swift. import Foundation import SwiftUI @testable import FirebaseAnalyticsSwift import FirebaseAnalytics final class AnalyticsAPITests { @available(iOS 13.0, *) func loggedAnalyticsModifierUsage(viewModifier: LoggedAnalyticsModifier, content: LoggedAnalyticsModifier.Content) { let _: String = viewModifier.screenName let _: String = viewModifier.screenClass let _: [String: Any] = viewModifier.extraParameters let _: any View = viewModifier.body(content: content) } @available(iOS 13.0, *) func viewExtensionUsage(viewModifier: LoggedAnalyticsModifier, view: any View) { let _: any View = view.analyticsScreen( name: "name", class: "class", extraParameters: ["param": 1] ) } func usage() { // MARK: - Analytics Analytics.logEvent("event_name", parameters: ["param": 1]) Analytics.setUserProperty("value", forName: "name") Analytics.setUserID("user_id") Analytics.setAnalyticsCollectionEnabled(true) Analytics.setSessionTimeoutInterval(3600.0) let _: String? = Analytics.appInstanceID() Analytics.resetAnalyticsData() Analytics.setDefaultEventParameters(["default": 100]) Analytics.sessionID { sessionID, error in } #if compiler(>=5.5.2) && canImport(_Concurrency) if #available(iOS 13.0, macOS 10.15, macCatalyst 13.0, tvOS 13.0, watchOS 7.0, *) { Task { let _: Int64? = try? await Analytics.sessionID() } } #endif // compiler(>=5.5.2) && canImport(_Concurrency) // MARK: - AppDelegate Analytics.handleEvents(forBackgroundURLSession: "session_id", completionHandler: {}) #if compiler(>=5.5.2) && canImport(_Concurrency) if #available(iOS 13.0, macOS 10.15, macCatalyst 13.0, tvOS 13.0, watchOS 7.0, *) { Task { await Analytics.handleEvents(forBackgroundURLSession: "session_id") } } #endif // compiler(>=5.5.2) && canImport(_Concurrency) Analytics.handleOpen(URL(string: "https://google.com")!) Analytics.handleUserActivity(NSUserActivity(activityType: "editing")) // MARK: - Consent Analytics.setConsent([.analyticsStorage: .granted, .adStorage: .denied]) // MARK: - OnDeviceConversion Analytics.initiateOnDeviceConversionMeasurement(emailAddress: "test@gmail.com") // MARK: - EventNames let _: [String] = [ AnalyticsEventAdImpression, AnalyticsEventAddPaymentInfo, AnalyticsEventAddShippingInfo, AnalyticsEventAddToCart, AnalyticsEventAddToWishlist, AnalyticsEventAppOpen, AnalyticsEventBeginCheckout, AnalyticsEventCampaignDetails, AnalyticsEventEarnVirtualCurrency, AnalyticsEventGenerateLead, AnalyticsEventJoinGroup, AnalyticsEventLevelEnd, AnalyticsEventLevelStart, AnalyticsEventLevelUp, AnalyticsEventLogin, AnalyticsEventPostScore, AnalyticsEventPurchase, AnalyticsEventRefund, AnalyticsEventRemoveFromCart, AnalyticsEventScreenView, AnalyticsEventSearch, AnalyticsEventSelectContent, AnalyticsEventSelectItem, AnalyticsEventSelectPromotion, AnalyticsEventShare, AnalyticsEventSignUp, AnalyticsEventSpendVirtualCurrency, AnalyticsEventTutorialBegin, AnalyticsEventTutorialComplete, AnalyticsEventUnlockAchievement, AnalyticsEventViewCart, AnalyticsEventViewItem, AnalyticsEventViewItemList, AnalyticsEventViewPromotion, AnalyticsEventViewSearchResults, ] // MARK: - ParameterNames let _: [String] = [ AnalyticsParameterAchievementID, AnalyticsParameterAdFormat, AnalyticsParameterAdNetworkClickID, AnalyticsParameterAdPlatform, AnalyticsParameterAdSource, AnalyticsParameterAdUnitName, AnalyticsParameterAffiliation, AnalyticsParameterCP1, AnalyticsParameterCampaign, AnalyticsParameterCampaignID, AnalyticsParameterCharacter, AnalyticsParameterContent, AnalyticsParameterContentType, AnalyticsParameterCoupon, AnalyticsParameterCreativeFormat, AnalyticsParameterCreativeName, AnalyticsParameterCreativeSlot, AnalyticsParameterCurrency, AnalyticsParameterDestination, AnalyticsParameterDiscount, AnalyticsParameterEndDate, AnalyticsParameterExtendSession, AnalyticsParameterFlightNumber, AnalyticsParameterGroupID, AnalyticsParameterIndex, AnalyticsParameterItemBrand, AnalyticsParameterItemCategory, AnalyticsParameterItemCategory2, AnalyticsParameterItemCategory3, AnalyticsParameterItemCategory4, AnalyticsParameterItemCategory5, AnalyticsParameterItemID, AnalyticsParameterItemListID, AnalyticsParameterItemListName, AnalyticsParameterItemName, AnalyticsParameterItemVariant, AnalyticsParameterItems, AnalyticsParameterLevel, AnalyticsParameterLevelName, AnalyticsParameterLocation, AnalyticsParameterLocationID, AnalyticsParameterMarketingTactic, AnalyticsParameterMedium, AnalyticsParameterMethod, AnalyticsParameterNumberOfNights, AnalyticsParameterNumberOfPassengers, AnalyticsParameterNumberOfRooms, AnalyticsParameterOrigin, AnalyticsParameterPaymentType, AnalyticsParameterPrice, AnalyticsParameterPromotionID, AnalyticsParameterPromotionName, AnalyticsParameterQuantity, AnalyticsParameterScore, AnalyticsParameterScreenClass, AnalyticsParameterScreenName, AnalyticsParameterSearchTerm, AnalyticsParameterShipping, AnalyticsParameterShippingTier, AnalyticsParameterSource, AnalyticsParameterSourcePlatform, AnalyticsParameterStartDate, AnalyticsParameterSuccess, AnalyticsParameterTax, AnalyticsParameterTerm, AnalyticsParameterTransactionID, AnalyticsParameterTravelClass, AnalyticsParameterValue, AnalyticsParameterVirtualCurrencyName, ] // MARK: - UserPropertyNames let _: [String] = [ AnalyticsUserPropertyAllowAdPersonalizationSignals, AnalyticsUserPropertySignUpMethod, ] } }