AnalyticsAPITests.swift 7.3 KB

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