Files
firebase-ios-sdk/FirebaseAnalytics/Tests/SwiftUnit/AnalyticsAPITests.swift
T

225 lines
7.3 KiB
Swift

//
// 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 StoreKit
import SwiftUI
import FirebaseAnalytics
import SwiftUI
final class AnalyticsAPITests {
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 #available(iOS 13.0, macOS 10.15, macCatalyst 13.0, tvOS 13.0, watchOS 7.0, *) {
Task {
let _: Int64? = try? await Analytics.sessionID()
}
}
@available(iOS 15.0, macOS 12.0, macCatalyst 15.0, tvOS 15.0, *)
@available(watchOS, unavailable)
func logTransactionUsage() {
let transaction: StoreKit.Transaction! = nil
Analytics.logTransaction(transaction!)
}
// MARK: - AppDelegate
Analytics.handleEvents(forBackgroundURLSession: "session_id", completionHandler: {})
if #available(iOS 13.0, macOS 10.15, macCatalyst 13.0, tvOS 13.0, watchOS 7.0, *) {
Task {
await Analytics.handleEvents(forBackgroundURLSession: "session_id")
}
}
Analytics.handleOpen(URL(string: "https://google.com")!)
Analytics.handleUserActivity(NSUserActivity(activityType: "editing"))
// MARK: - Consent
Analytics.setConsent([.adPersonalization: .granted,
.adStorage: .denied,
.adUserData: .granted,
.analyticsStorage: .denied])
// MARK: - OnDeviceConversion
Analytics.initiateOnDeviceConversionMeasurement(emailAddress: "test@gmail.com")
Analytics.initiateOnDeviceConversionMeasurement(phoneNumber: "+15555555555")
Analytics.initiateOnDeviceConversionMeasurement(hashedEmailAddress: Data())
Analytics.initiateOnDeviceConversionMeasurement(hashedPhoneNumber: Data())
// 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,
]
// MARK: - Analytics + SwiftUI
@available(iOS 13.0, macOS 10.15, macCatalyst 13.0, tvOS 13.0, *)
@available(watchOS, unavailable)
struct MyView: View {
let name: String
let klass: String
let extraParameters: [String: Any]
var body: some View {
Text("Hello, world!")
.analyticsScreen(name: name,
class: klass,
extraParameters: extraParameters)
Text("Hello, world!")
.analyticsScreen(name: name,
extraParameters: extraParameters)
Text("Hello, world!")
.analyticsScreen(name: name,
class: klass)
Text("Hello, world!")
.analyticsScreen(name: name)
}
}
}
}