AnalyticsAPITests.swift 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  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 StoreKit
  19. import SwiftUI
  20. import FirebaseAnalytics
  21. import SwiftUI
  22. final class AnalyticsAPITests {
  23. func usage() {
  24. // MARK: - Analytics
  25. Analytics.logEvent("event_name", parameters: ["param": 1])
  26. Analytics.setUserProperty("value", forName: "name")
  27. Analytics.setUserID("user_id")
  28. Analytics.setAnalyticsCollectionEnabled(true)
  29. Analytics.setSessionTimeoutInterval(3600.0)
  30. let _: String? = Analytics.appInstanceID()
  31. Analytics.resetAnalyticsData()
  32. Analytics.setDefaultEventParameters(["default": 100])
  33. Analytics.sessionID { sessionID, error in }
  34. if #available(iOS 13.0, macOS 10.15, macCatalyst 13.0, tvOS 13.0, watchOS 7.0, *) {
  35. Task {
  36. let _: Int64? = try? await Analytics.sessionID()
  37. }
  38. }
  39. @available(iOS 15.0, macOS 12.0, macCatalyst 15.0, tvOS 15.0, *)
  40. @available(watchOS, unavailable)
  41. func logTransactionUsage() {
  42. let transaction: StoreKit.Transaction! = nil
  43. Analytics.logTransaction(transaction!)
  44. }
  45. // MARK: - AppDelegate
  46. Analytics.handleEvents(forBackgroundURLSession: "session_id", completionHandler: {})
  47. if #available(iOS 13.0, macOS 10.15, macCatalyst 13.0, tvOS 13.0, watchOS 7.0, *) {
  48. Task {
  49. await Analytics.handleEvents(forBackgroundURLSession: "session_id")
  50. }
  51. }
  52. Analytics.handleOpen(URL(string: "https://google.com")!)
  53. Analytics.handleUserActivity(NSUserActivity(activityType: "editing"))
  54. // MARK: - Consent
  55. Analytics.setConsent([.adPersonalization: .granted,
  56. .adStorage: .denied,
  57. .adUserData: .granted,
  58. .analyticsStorage: .denied])
  59. // MARK: - OnDeviceConversion
  60. Analytics.initiateOnDeviceConversionMeasurement(emailAddress: "test@gmail.com")
  61. Analytics.initiateOnDeviceConversionMeasurement(phoneNumber: "+15555555555")
  62. Analytics.initiateOnDeviceConversionMeasurement(hashedEmailAddress: Data())
  63. Analytics.initiateOnDeviceConversionMeasurement(hashedPhoneNumber: Data())
  64. // MARK: - EventNames
  65. let _: [String] = [
  66. AnalyticsEventAdImpression,
  67. AnalyticsEventAddPaymentInfo,
  68. AnalyticsEventAddShippingInfo,
  69. AnalyticsEventAddToCart,
  70. AnalyticsEventAddToWishlist,
  71. AnalyticsEventAppOpen,
  72. AnalyticsEventBeginCheckout,
  73. AnalyticsEventCampaignDetails,
  74. AnalyticsEventEarnVirtualCurrency,
  75. AnalyticsEventGenerateLead,
  76. AnalyticsEventJoinGroup,
  77. AnalyticsEventLevelEnd,
  78. AnalyticsEventLevelStart,
  79. AnalyticsEventLevelUp,
  80. AnalyticsEventLogin,
  81. AnalyticsEventPostScore,
  82. AnalyticsEventPurchase,
  83. AnalyticsEventRefund,
  84. AnalyticsEventRemoveFromCart,
  85. AnalyticsEventScreenView,
  86. AnalyticsEventSearch,
  87. AnalyticsEventSelectContent,
  88. AnalyticsEventSelectItem,
  89. AnalyticsEventSelectPromotion,
  90. AnalyticsEventShare,
  91. AnalyticsEventSignUp,
  92. AnalyticsEventSpendVirtualCurrency,
  93. AnalyticsEventTutorialBegin,
  94. AnalyticsEventTutorialComplete,
  95. AnalyticsEventUnlockAchievement,
  96. AnalyticsEventViewCart,
  97. AnalyticsEventViewItem,
  98. AnalyticsEventViewItemList,
  99. AnalyticsEventViewPromotion,
  100. AnalyticsEventViewSearchResults,
  101. ]
  102. // MARK: - ParameterNames
  103. let _: [String] = [
  104. AnalyticsParameterAchievementID,
  105. AnalyticsParameterAdFormat,
  106. AnalyticsParameterAdNetworkClickID,
  107. AnalyticsParameterAdPlatform,
  108. AnalyticsParameterAdSource,
  109. AnalyticsParameterAdUnitName,
  110. AnalyticsParameterAffiliation,
  111. AnalyticsParameterCP1,
  112. AnalyticsParameterCampaign,
  113. AnalyticsParameterCampaignID,
  114. AnalyticsParameterCharacter,
  115. AnalyticsParameterContent,
  116. AnalyticsParameterContentType,
  117. AnalyticsParameterCoupon,
  118. AnalyticsParameterCreativeFormat,
  119. AnalyticsParameterCreativeName,
  120. AnalyticsParameterCreativeSlot,
  121. AnalyticsParameterCurrency,
  122. AnalyticsParameterDestination,
  123. AnalyticsParameterDiscount,
  124. AnalyticsParameterEndDate,
  125. AnalyticsParameterExtendSession,
  126. AnalyticsParameterFlightNumber,
  127. AnalyticsParameterGroupID,
  128. AnalyticsParameterIndex,
  129. AnalyticsParameterItemBrand,
  130. AnalyticsParameterItemCategory,
  131. AnalyticsParameterItemCategory2,
  132. AnalyticsParameterItemCategory3,
  133. AnalyticsParameterItemCategory4,
  134. AnalyticsParameterItemCategory5,
  135. AnalyticsParameterItemID,
  136. AnalyticsParameterItemListID,
  137. AnalyticsParameterItemListName,
  138. AnalyticsParameterItemName,
  139. AnalyticsParameterItemVariant,
  140. AnalyticsParameterItems,
  141. AnalyticsParameterLevel,
  142. AnalyticsParameterLevelName,
  143. AnalyticsParameterLocation,
  144. AnalyticsParameterLocationID,
  145. AnalyticsParameterMarketingTactic,
  146. AnalyticsParameterMedium,
  147. AnalyticsParameterMethod,
  148. AnalyticsParameterNumberOfNights,
  149. AnalyticsParameterNumberOfPassengers,
  150. AnalyticsParameterNumberOfRooms,
  151. AnalyticsParameterOrigin,
  152. AnalyticsParameterPaymentType,
  153. AnalyticsParameterPrice,
  154. AnalyticsParameterPromotionID,
  155. AnalyticsParameterPromotionName,
  156. AnalyticsParameterQuantity,
  157. AnalyticsParameterScore,
  158. AnalyticsParameterScreenClass,
  159. AnalyticsParameterScreenName,
  160. AnalyticsParameterSearchTerm,
  161. AnalyticsParameterShipping,
  162. AnalyticsParameterShippingTier,
  163. AnalyticsParameterSource,
  164. AnalyticsParameterSourcePlatform,
  165. AnalyticsParameterStartDate,
  166. AnalyticsParameterSuccess,
  167. AnalyticsParameterTax,
  168. AnalyticsParameterTerm,
  169. AnalyticsParameterTransactionID,
  170. AnalyticsParameterTravelClass,
  171. AnalyticsParameterValue,
  172. AnalyticsParameterVirtualCurrencyName,
  173. ]
  174. // MARK: - UserPropertyNames
  175. let _: [String] = [
  176. AnalyticsUserPropertyAllowAdPersonalizationSignals,
  177. AnalyticsUserPropertySignUpMethod,
  178. ]
  179. // MARK: - Analytics + SwiftUI
  180. @available(iOS 13.0, macOS 10.15, macCatalyst 13.0, tvOS 13.0, *)
  181. @available(watchOS, unavailable)
  182. struct MyView: View {
  183. let name: String
  184. let klass: String
  185. let extraParameters: [String: Any]
  186. var body: some View {
  187. Text("Hello, world!")
  188. .analyticsScreen(name: name,
  189. class: klass,
  190. extraParameters: extraParameters)
  191. Text("Hello, world!")
  192. .analyticsScreen(name: name,
  193. extraParameters: extraParameters)
  194. Text("Hello, world!")
  195. .analyticsScreen(name: name,
  196. class: klass)
  197. Text("Hello, world!")
  198. .analyticsScreen(name: name)
  199. }
  200. }
  201. }
  202. }