AnalyticsAPITests.swift 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. //
  2. // Copyright 2022 Google LLC
  3. //
  4. // Licensed under the Apache License, Version 2.0 (the "License");
  5. // you may not use this file except in compliance with the License.
  6. // You may obtain a copy of the License at
  7. //
  8. // http://www.apache.org/licenses/LICENSE-2.0
  9. //
  10. // Unless required by applicable law or agreed to in writing, software
  11. // distributed under the License is distributed on an "AS IS" BASIS,
  12. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. // See the License for the specific language governing permissions and
  14. // limitations under the License.
  15. //
  16. // MARK: This file is used to evaluate the experience of using Analytics APIs in Swift.
  17. import Foundation
  18. import SwiftUI
  19. @testable import FirebaseAnalyticsSwift
  20. import FirebaseAnalytics
  21. final class AnalyticsAPITests {
  22. @available(iOS 13.0, *)
  23. func loggedAnalyticsModifierUsage(viewModifier: LoggedAnalyticsModifier,
  24. content: LoggedAnalyticsModifier.Content) {
  25. let _: String = viewModifier.screenName
  26. let _: String = viewModifier.screenClass
  27. let _: [String: Any] = viewModifier.extraParameters
  28. let _: any View = viewModifier.body(content: content)
  29. }
  30. @available(iOS 13.0, *)
  31. func viewExtensionUsage(viewModifier: LoggedAnalyticsModifier, view: any View) {
  32. let _: any View = view.analyticsScreen(
  33. name: "name",
  34. class: "class",
  35. extraParameters: ["param": 1]
  36. )
  37. }
  38. func usage() {
  39. // MARK: - Analytics
  40. Analytics.logEvent("event_name", parameters: ["param": 1])
  41. Analytics.setUserProperty("value", forName: "name")
  42. Analytics.setUserID("user_id")
  43. Analytics.setAnalyticsCollectionEnabled(true)
  44. Analytics.setSessionTimeoutInterval(3600.0)
  45. let _: String? = Analytics.appInstanceID()
  46. Analytics.resetAnalyticsData()
  47. Analytics.setDefaultEventParameters(["default": 100])
  48. Analytics.sessionID { sessionID, error in }
  49. #if compiler(>=5.5.2) && canImport(_Concurrency)
  50. if #available(iOS 13.0, macOS 10.15, macCatalyst 13.0, tvOS 13.0, watchOS 7.0, *) {
  51. Task {
  52. let _: Int64? = try? await Analytics.sessionID()
  53. }
  54. }
  55. #endif // compiler(>=5.5.2) && canImport(_Concurrency)
  56. // MARK: - AppDelegate
  57. Analytics.handleEvents(forBackgroundURLSession: "session_id", completionHandler: {})
  58. #if compiler(>=5.5.2) && canImport(_Concurrency)
  59. if #available(iOS 13.0, macOS 10.15, macCatalyst 13.0, tvOS 13.0, watchOS 7.0, *) {
  60. Task {
  61. await Analytics.handleEvents(forBackgroundURLSession: "session_id")
  62. }
  63. }
  64. #endif // compiler(>=5.5.2) && canImport(_Concurrency)
  65. Analytics.handleOpen(URL(string: "https://google.com")!)
  66. Analytics.handleUserActivity(NSUserActivity(activityType: "editing"))
  67. // MARK: - Consent
  68. Analytics.setConsent([.analyticsStorage: .granted, .adStorage: .denied])
  69. // MARK: - OnDeviceConversion
  70. Analytics.initiateOnDeviceConversionMeasurement(emailAddress: "test@gmail.com")
  71. // MARK: - EventNames
  72. let _: [String] = [
  73. AnalyticsEventAdImpression,
  74. AnalyticsEventAddPaymentInfo,
  75. AnalyticsEventAddShippingInfo,
  76. AnalyticsEventAddToCart,
  77. AnalyticsEventAddToWishlist,
  78. AnalyticsEventAppOpen,
  79. AnalyticsEventBeginCheckout,
  80. AnalyticsEventCampaignDetails,
  81. AnalyticsEventEarnVirtualCurrency,
  82. AnalyticsEventGenerateLead,
  83. AnalyticsEventJoinGroup,
  84. AnalyticsEventLevelEnd,
  85. AnalyticsEventLevelStart,
  86. AnalyticsEventLevelUp,
  87. AnalyticsEventLogin,
  88. AnalyticsEventPostScore,
  89. AnalyticsEventPurchase,
  90. AnalyticsEventRefund,
  91. AnalyticsEventRemoveFromCart,
  92. AnalyticsEventScreenView,
  93. AnalyticsEventSearch,
  94. AnalyticsEventSelectContent,
  95. AnalyticsEventSelectItem,
  96. AnalyticsEventSelectPromotion,
  97. AnalyticsEventShare,
  98. AnalyticsEventSignUp,
  99. AnalyticsEventSpendVirtualCurrency,
  100. AnalyticsEventTutorialBegin,
  101. AnalyticsEventTutorialComplete,
  102. AnalyticsEventUnlockAchievement,
  103. AnalyticsEventViewCart,
  104. AnalyticsEventViewItem,
  105. AnalyticsEventViewItemList,
  106. AnalyticsEventViewPromotion,
  107. AnalyticsEventViewSearchResults,
  108. ]
  109. // MARK: - ParameterNames
  110. let _: [String] = [
  111. AnalyticsParameterAchievementID,
  112. AnalyticsParameterAdFormat,
  113. AnalyticsParameterAdNetworkClickID,
  114. AnalyticsParameterAdPlatform,
  115. AnalyticsParameterAdSource,
  116. AnalyticsParameterAdUnitName,
  117. AnalyticsParameterAffiliation,
  118. AnalyticsParameterCP1,
  119. AnalyticsParameterCampaign,
  120. AnalyticsParameterCampaignID,
  121. AnalyticsParameterCharacter,
  122. AnalyticsParameterContent,
  123. AnalyticsParameterContentType,
  124. AnalyticsParameterCoupon,
  125. AnalyticsParameterCreativeFormat,
  126. AnalyticsParameterCreativeName,
  127. AnalyticsParameterCreativeSlot,
  128. AnalyticsParameterCurrency,
  129. AnalyticsParameterDestination,
  130. AnalyticsParameterDiscount,
  131. AnalyticsParameterEndDate,
  132. AnalyticsParameterExtendSession,
  133. AnalyticsParameterFlightNumber,
  134. AnalyticsParameterGroupID,
  135. AnalyticsParameterIndex,
  136. AnalyticsParameterItemBrand,
  137. AnalyticsParameterItemCategory,
  138. AnalyticsParameterItemCategory2,
  139. AnalyticsParameterItemCategory3,
  140. AnalyticsParameterItemCategory4,
  141. AnalyticsParameterItemCategory5,
  142. AnalyticsParameterItemID,
  143. AnalyticsParameterItemListID,
  144. AnalyticsParameterItemListName,
  145. AnalyticsParameterItemName,
  146. AnalyticsParameterItemVariant,
  147. AnalyticsParameterItems,
  148. AnalyticsParameterLevel,
  149. AnalyticsParameterLevelName,
  150. AnalyticsParameterLocation,
  151. AnalyticsParameterLocationID,
  152. AnalyticsParameterMarketingTactic,
  153. AnalyticsParameterMedium,
  154. AnalyticsParameterMethod,
  155. AnalyticsParameterNumberOfNights,
  156. AnalyticsParameterNumberOfPassengers,
  157. AnalyticsParameterNumberOfRooms,
  158. AnalyticsParameterOrigin,
  159. AnalyticsParameterPaymentType,
  160. AnalyticsParameterPrice,
  161. AnalyticsParameterPromotionID,
  162. AnalyticsParameterPromotionName,
  163. AnalyticsParameterQuantity,
  164. AnalyticsParameterScore,
  165. AnalyticsParameterScreenClass,
  166. AnalyticsParameterScreenName,
  167. AnalyticsParameterSearchTerm,
  168. AnalyticsParameterShipping,
  169. AnalyticsParameterShippingTier,
  170. AnalyticsParameterSource,
  171. AnalyticsParameterSourcePlatform,
  172. AnalyticsParameterStartDate,
  173. AnalyticsParameterSuccess,
  174. AnalyticsParameterTax,
  175. AnalyticsParameterTerm,
  176. AnalyticsParameterTransactionID,
  177. AnalyticsParameterTravelClass,
  178. AnalyticsParameterValue,
  179. AnalyticsParameterVirtualCurrencyName,
  180. ]
  181. // MARK: - UserPropertyNames
  182. let _: [String] = [
  183. AnalyticsUserPropertyAllowAdPersonalizationSignals,
  184. AnalyticsUserPropertySignUpMethod,
  185. ]
  186. }
  187. }