cocoapods-catalyst-validator 0.1.0.beta.1 → 0.1.0.beta.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (513) hide show
  1. checksums.yaml +4 -4
  2. data/lib/cocoapods-catalyst-validator/gem_version.rb +1 -1
  3. metadata +2 -514
  4. data/.gitignore +0 -3
  5. data/Gemfile +0 -5
  6. data/Gemfile.lock +0 -107
  7. data/LICENSE.txt +0 -22
  8. data/README.md +0 -18
  9. data/Rakefile +0 -13
  10. data/cocoapods-catalyst-validator.gemspec +0 -23
  11. data/examples/AExample/AExample/AExample.entitlements +0 -10
  12. data/examples/AExample/AExample/AppDelegate.h +0 -14
  13. data/examples/AExample/AExample/AppDelegate.m +0 -40
  14. data/examples/AExample/AExample/Assets.xcassets/AccentColor.colorset/Contents.json +0 -11
  15. data/examples/AExample/AExample/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -98
  16. data/examples/AExample/AExample/Assets.xcassets/Contents.json +0 -6
  17. data/examples/AExample/AExample/Base.lproj/LaunchScreen.storyboard +0 -25
  18. data/examples/AExample/AExample/Base.lproj/Main.storyboard +0 -24
  19. data/examples/AExample/AExample/Info.plist +0 -25
  20. data/examples/AExample/AExample/SceneDelegate.h +0 -15
  21. data/examples/AExample/AExample/SceneDelegate.m +0 -57
  22. data/examples/AExample/AExample/ViewController.h +0 -14
  23. data/examples/AExample/AExample/ViewController.m +0 -22
  24. data/examples/AExample/AExample/main.m +0 -18
  25. data/examples/AExample/AExample.xcodeproj/project.pbxproj +0 -664
  26. data/examples/AExample/AExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
  27. data/examples/AExample/AExample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  28. data/examples/AExample/AExample.xcodeproj/project.xcworkspace/xcuserdata/xuzhongping.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  29. data/examples/AExample/AExample.xcodeproj/xcuserdata/xuzhongping.xcuserdatad/xcschemes/xcschememanagement.plist +0 -19
  30. data/examples/AExample/AExample.xcworkspace/contents.xcworkspacedata +0 -10
  31. data/examples/AExample/AExample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  32. data/examples/AExample/AExample.xcworkspace/xcuserdata/xuzhongping.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  33. data/examples/AExample/AExampleCP/AppDelegate.h +0 -14
  34. data/examples/AExample/AExampleCP/AppDelegate.m +0 -40
  35. data/examples/AExample/AExampleCP/Assets.xcassets/AccentColor.colorset/Contents.json +0 -11
  36. data/examples/AExample/AExampleCP/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -98
  37. data/examples/AExample/AExampleCP/Assets.xcassets/Contents.json +0 -6
  38. data/examples/AExample/AExampleCP/Base.lproj/LaunchScreen.storyboard +0 -25
  39. data/examples/AExample/AExampleCP/Base.lproj/Main.storyboard +0 -24
  40. data/examples/AExample/AExampleCP/Info.plist +0 -25
  41. data/examples/AExample/AExampleCP/SceneDelegate.h +0 -15
  42. data/examples/AExample/AExampleCP/SceneDelegate.m +0 -57
  43. data/examples/AExample/AExampleCP/ViewController.h +0 -14
  44. data/examples/AExample/AExampleCP/ViewController.m +0 -22
  45. data/examples/AExample/AExampleCP/main.m +0 -18
  46. data/examples/AExample/Podfile +0 -24
  47. data/examples/AExample/Podfile.lock +0 -112
  48. data/examples/AExample/Pods/Bugly/Bugly.framework/Bugly +0 -0
  49. data/examples/AExample/Pods/Bugly/Bugly.framework/Headers/Bugly.h +0 -163
  50. data/examples/AExample/Pods/Bugly/Bugly.framework/Headers/BuglyConfig.h +0 -149
  51. data/examples/AExample/Pods/Bugly/Bugly.framework/Headers/BuglyLog.h +0 -78
  52. data/examples/AExample/Pods/Bugly/Bugly.framework/Modules/module.modulemap +0 -12
  53. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/Info.plist +0 -97
  54. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_armv7/FirebaseAnalytics.framework/FirebaseAnalytics +0 -0
  55. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_armv7/FirebaseAnalytics.framework/Headers/FIRAnalytics+AppDelegate.h +0 -62
  56. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_armv7/FirebaseAnalytics.framework/Headers/FIRAnalytics+Consent.h +0 -33
  57. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_armv7/FirebaseAnalytics.framework/Headers/FIRAnalytics.h +0 -142
  58. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_armv7/FirebaseAnalytics.framework/Headers/FIREventNames.h +0 -495
  59. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_armv7/FirebaseAnalytics.framework/Headers/FIRParameterNames.h +0 -731
  60. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_armv7/FirebaseAnalytics.framework/Headers/FIRUserPropertyNames.h +0 -29
  61. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_armv7/FirebaseAnalytics.framework/Headers/FirebaseAnalytics.h +0 -6
  62. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_armv7/FirebaseAnalytics.framework/Info.plist +0 -20
  63. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_armv7/FirebaseAnalytics.framework/Modules/module.modulemap +0 -13
  64. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/FirebaseAnalytics.framework/FirebaseAnalytics +0 -0
  65. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/FirebaseAnalytics.framework/Headers/FIRAnalytics+AppDelegate.h +0 -62
  66. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/FirebaseAnalytics.framework/Headers/FIRAnalytics+Consent.h +0 -33
  67. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/FirebaseAnalytics.framework/Headers/FIRAnalytics.h +0 -142
  68. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/FirebaseAnalytics.framework/Headers/FIREventNames.h +0 -495
  69. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/FirebaseAnalytics.framework/Headers/FIRParameterNames.h +0 -731
  70. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/FirebaseAnalytics.framework/Headers/FIRUserPropertyNames.h +0 -29
  71. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/FirebaseAnalytics.framework/Headers/FirebaseAnalytics.h +0 -6
  72. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/FirebaseAnalytics.framework/Info.plist +0 -20
  73. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/FirebaseAnalytics.framework/Modules/module.modulemap +0 -13
  74. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/FirebaseAnalytics.framework/FirebaseAnalytics +0 -0
  75. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/FirebaseAnalytics.framework/Headers/FIRAnalytics+AppDelegate.h +0 -62
  76. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/FirebaseAnalytics.framework/Headers/FIRAnalytics+Consent.h +0 -33
  77. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/FirebaseAnalytics.framework/Headers/FIRAnalytics.h +0 -142
  78. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/FirebaseAnalytics.framework/Headers/FIREventNames.h +0 -495
  79. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/FirebaseAnalytics.framework/Headers/FIRParameterNames.h +0 -731
  80. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/FirebaseAnalytics.framework/Headers/FIRUserPropertyNames.h +0 -29
  81. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/FirebaseAnalytics.framework/Headers/FirebaseAnalytics.h +0 -6
  82. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/FirebaseAnalytics.framework/Info.plist +0 -20
  83. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/FirebaseAnalytics.framework/Modules/module.modulemap +0 -13
  84. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/macos-arm64_x86_64/FirebaseAnalytics.framework/FirebaseAnalytics +0 -0
  85. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/macos-arm64_x86_64/FirebaseAnalytics.framework/Headers/FIRAnalytics+AppDelegate.h +0 -62
  86. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/macos-arm64_x86_64/FirebaseAnalytics.framework/Headers/FIRAnalytics+Consent.h +0 -33
  87. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/macos-arm64_x86_64/FirebaseAnalytics.framework/Headers/FIRAnalytics.h +0 -142
  88. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/macos-arm64_x86_64/FirebaseAnalytics.framework/Headers/FIREventNames.h +0 -495
  89. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/macos-arm64_x86_64/FirebaseAnalytics.framework/Headers/FIRParameterNames.h +0 -731
  90. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/macos-arm64_x86_64/FirebaseAnalytics.framework/Headers/FIRUserPropertyNames.h +0 -29
  91. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/macos-arm64_x86_64/FirebaseAnalytics.framework/Headers/FirebaseAnalytics.h +0 -6
  92. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/macos-arm64_x86_64/FirebaseAnalytics.framework/Info.plist +0 -20
  93. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/macos-arm64_x86_64/FirebaseAnalytics.framework/Modules/module.modulemap +0 -13
  94. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64/FirebaseAnalytics.framework/FirebaseAnalytics +0 -0
  95. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64/FirebaseAnalytics.framework/Headers/FIRAnalytics+AppDelegate.h +0 -62
  96. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64/FirebaseAnalytics.framework/Headers/FIRAnalytics+Consent.h +0 -33
  97. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64/FirebaseAnalytics.framework/Headers/FIRAnalytics.h +0 -142
  98. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64/FirebaseAnalytics.framework/Headers/FIREventNames.h +0 -495
  99. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64/FirebaseAnalytics.framework/Headers/FIRParameterNames.h +0 -731
  100. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64/FirebaseAnalytics.framework/Headers/FIRUserPropertyNames.h +0 -29
  101. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64/FirebaseAnalytics.framework/Headers/FirebaseAnalytics.h +0 -6
  102. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64/FirebaseAnalytics.framework/Info.plist +0 -20
  103. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64/FirebaseAnalytics.framework/Modules/module.modulemap +0 -12
  104. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64_x86_64-simulator/FirebaseAnalytics.framework/FirebaseAnalytics +0 -0
  105. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64_x86_64-simulator/FirebaseAnalytics.framework/Headers/FIRAnalytics+AppDelegate.h +0 -62
  106. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64_x86_64-simulator/FirebaseAnalytics.framework/Headers/FIRAnalytics+Consent.h +0 -33
  107. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64_x86_64-simulator/FirebaseAnalytics.framework/Headers/FIRAnalytics.h +0 -142
  108. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64_x86_64-simulator/FirebaseAnalytics.framework/Headers/FIREventNames.h +0 -495
  109. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64_x86_64-simulator/FirebaseAnalytics.framework/Headers/FIRParameterNames.h +0 -731
  110. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64_x86_64-simulator/FirebaseAnalytics.framework/Headers/FIRUserPropertyNames.h +0 -29
  111. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64_x86_64-simulator/FirebaseAnalytics.framework/Headers/FirebaseAnalytics.h +0 -6
  112. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64_x86_64-simulator/FirebaseAnalytics.framework/Info.plist +0 -20
  113. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64_x86_64-simulator/FirebaseAnalytics.framework/Modules/module.modulemap +0 -12
  114. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRAnalyticsConfiguration.h +0 -56
  115. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRAnalyticsConfiguration.m +0 -62
  116. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRApp.m +0 -856
  117. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRAppAssociationRegistration.h +0 -49
  118. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRAppAssociationRegistration.m +0 -47
  119. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRBundleUtil.h +0 -53
  120. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRBundleUtil.m +0 -79
  121. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRComponent.m +0 -65
  122. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRComponentContainer.m +0 -214
  123. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRComponentContainerInternal.h +0 -49
  124. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRComponentType.m +0 -28
  125. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRConfiguration.m +0 -46
  126. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRConfigurationInternal.h +0 -29
  127. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRCoreDiagnosticsConnector.m +0 -61
  128. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRDependency.m +0 -44
  129. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRDiagnosticsData.h +0 -35
  130. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRDiagnosticsData.m +0 -66
  131. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRFirebaseUserAgent.h +0 -36
  132. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRFirebaseUserAgent.m +0 -107
  133. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRHeartbeatInfo.m +0 -72
  134. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRLogger.m +0 -174
  135. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIROptions.m +0 -498
  136. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRVersion.m +0 -32
  137. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRAppInternal.h +0 -153
  138. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRComponent.h +0 -91
  139. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRComponentContainer.h +0 -41
  140. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRComponentType.h +0 -34
  141. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRCoreDiagnosticsConnector.h +0 -35
  142. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRDependency.h +0 -45
  143. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRHeartbeatInfo.h +0 -39
  144. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRLibrary.h +0 -44
  145. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRLogger.h +0 -146
  146. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIROptionsInternal.h +0 -115
  147. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/Private/FirebaseCoreInternal.h +0 -28
  148. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/Public/FirebaseCore/FIRApp.h +0 -127
  149. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/Public/FirebaseCore/FIRConfiguration.h +0 -45
  150. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/Public/FirebaseCore/FIRLoggerLevel.h +0 -38
  151. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/Public/FirebaseCore/FIROptions.h +0 -126
  152. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/Public/FirebaseCore/FIRVersion.h +0 -25
  153. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/Public/FirebaseCore/FirebaseCore.h +0 -21
  154. data/examples/AExample/Pods/FirebaseCore/Interop/CoreDiagnostics/Public/FIRCoreDiagnosticsData.h +0 -61
  155. data/examples/AExample/Pods/FirebaseCore/Interop/CoreDiagnostics/Public/FIRCoreDiagnosticsInterop.h +0 -34
  156. data/examples/AExample/Pods/FirebaseCore/LICENSE +0 -202
  157. data/examples/AExample/Pods/FirebaseCore/README.md +0 -319
  158. data/examples/AExample/Pods/FirebaseCoreDiagnostics/Firebase/CoreDiagnostics/FIRCDLibrary/FIRCoreDiagnostics.m +0 -551
  159. data/examples/AExample/Pods/FirebaseCoreDiagnostics/Firebase/CoreDiagnostics/FIRCDLibrary/Protogen/nanopb/firebasecore.nanopb.c +0 -60
  160. data/examples/AExample/Pods/FirebaseCoreDiagnostics/Firebase/CoreDiagnostics/FIRCDLibrary/Protogen/nanopb/firebasecore.nanopb.h +0 -193
  161. data/examples/AExample/Pods/FirebaseCoreDiagnostics/Firebase/CoreDiagnostics/FIRCDLibrary/Public/FIRCoreDiagnostics.h +0 -18
  162. data/examples/AExample/Pods/FirebaseCoreDiagnostics/Interop/CoreDiagnostics/Public/FIRCoreDiagnosticsData.h +0 -61
  163. data/examples/AExample/Pods/FirebaseCoreDiagnostics/Interop/CoreDiagnostics/Public/FIRCoreDiagnosticsInterop.h +0 -34
  164. data/examples/AExample/Pods/FirebaseCoreDiagnostics/LICENSE +0 -202
  165. data/examples/AExample/Pods/FirebaseCoreDiagnostics/README.md +0 -319
  166. data/examples/AExample/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRAppInternal.h +0 -153
  167. data/examples/AExample/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRComponent.h +0 -91
  168. data/examples/AExample/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRComponentContainer.h +0 -41
  169. data/examples/AExample/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRComponentType.h +0 -34
  170. data/examples/AExample/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRCoreDiagnosticsConnector.h +0 -35
  171. data/examples/AExample/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRDependency.h +0 -45
  172. data/examples/AExample/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRHeartbeatInfo.h +0 -39
  173. data/examples/AExample/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRLibrary.h +0 -44
  174. data/examples/AExample/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRLogger.h +0 -146
  175. data/examples/AExample/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIROptionsInternal.h +0 -115
  176. data/examples/AExample/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FirebaseCoreInternal.h +0 -28
  177. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Errors/FIRInstallationsErrorUtil.h +0 -65
  178. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Errors/FIRInstallationsErrorUtil.m +0 -145
  179. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Errors/FIRInstallationsHTTPError.h +0 -53
  180. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Errors/FIRInstallationsHTTPError.m +0 -79
  181. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallations.m +0 -282
  182. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallationsAuthTokenResult.m +0 -30
  183. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallationsAuthTokenResultInternal.h +0 -27
  184. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallationsItem.h +0 -93
  185. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallationsItem.m +0 -161
  186. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallationsLogger.h +0 -52
  187. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallationsLogger.m +0 -50
  188. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/IIDMigration/FIRInstallationsIIDStore.h +0 -48
  189. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/IIDMigration/FIRInstallationsIIDStore.m +0 -242
  190. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/IIDMigration/FIRInstallationsIIDTokenStore.h +0 -36
  191. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/IIDMigration/FIRInstallationsIIDTokenStore.m +0 -158
  192. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsAPI/FIRInstallationsAPIService.h +0 -62
  193. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsAPI/FIRInstallationsAPIService.m +0 -380
  194. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsAPI/FIRInstallationsItem+RegisterInstallationAPI.h +0 -53
  195. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsAPI/FIRInstallationsItem+RegisterInstallationAPI.m +0 -142
  196. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsIDController/FIRCurrentDateProvider.h +0 -27
  197. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsIDController/FIRCurrentDateProvider.m +0 -23
  198. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsBackoffController.h +0 -54
  199. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsBackoffController.m +0 -132
  200. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsIDController.h +0 -44
  201. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsIDController.m +0 -531
  202. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsSingleOperationPromiseCache.h +0 -58
  203. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsSingleOperationPromiseCache.m +0 -75
  204. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsStatus.h +0 -35
  205. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStore.h +0 -71
  206. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStore.m +0 -126
  207. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStoredAuthToken.h +0 -58
  208. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStoredAuthToken.m +0 -77
  209. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStoredItem.h +0 -51
  210. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStoredItem.m +0 -80
  211. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Private/FirebaseInstallationsInternal.h +0 -19
  212. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Public/FirebaseInstallations/FIRInstallations.h +0 -127
  213. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Public/FirebaseInstallations/FIRInstallationsAuthTokenResult.h +0 -33
  214. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Public/FirebaseInstallations/FIRInstallationsErrors.h +0 -34
  215. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Public/FirebaseInstallations/FirebaseInstallations.h +0 -19
  216. data/examples/AExample/Pods/FirebaseInstallations/LICENSE +0 -202
  217. data/examples/AExample/Pods/FirebaseInstallations/README.md +0 -319
  218. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/Info.plist +0 -97
  219. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/ios-arm64_armv7/GoogleAppMeasurement.framework/GoogleAppMeasurement +0 -0
  220. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/ios-arm64_armv7/GoogleAppMeasurement.framework/Info.plist +0 -20
  221. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/ios-arm64_armv7/GoogleAppMeasurement.framework/Modules/module.modulemap +0 -10
  222. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAppMeasurement.framework/GoogleAppMeasurement +0 -0
  223. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAppMeasurement.framework/Info.plist +0 -20
  224. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAppMeasurement.framework/Modules/module.modulemap +0 -10
  225. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAppMeasurement.framework/GoogleAppMeasurement +0 -0
  226. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAppMeasurement.framework/Info.plist +0 -20
  227. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAppMeasurement.framework/Modules/module.modulemap +0 -10
  228. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/macos-arm64_x86_64/GoogleAppMeasurement.framework/GoogleAppMeasurement +0 -0
  229. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/macos-arm64_x86_64/GoogleAppMeasurement.framework/Info.plist +0 -20
  230. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/macos-arm64_x86_64/GoogleAppMeasurement.framework/Modules/module.modulemap +0 -10
  231. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/tvos-arm64/GoogleAppMeasurement.framework/GoogleAppMeasurement +0 -0
  232. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/tvos-arm64/GoogleAppMeasurement.framework/Info.plist +0 -20
  233. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/tvos-arm64/GoogleAppMeasurement.framework/Modules/module.modulemap +0 -10
  234. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/tvos-arm64_x86_64-simulator/GoogleAppMeasurement.framework/GoogleAppMeasurement +0 -0
  235. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/tvos-arm64_x86_64-simulator/GoogleAppMeasurement.framework/Info.plist +0 -20
  236. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/tvos-arm64_x86_64-simulator/GoogleAppMeasurement.framework/Modules/module.modulemap +0 -10
  237. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/Info.plist +0 -97
  238. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/ios-arm64_armv7/GoogleAppMeasurementIdentitySupport.framework/GoogleAppMeasurementIdentitySupport +0 -0
  239. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/ios-arm64_armv7/GoogleAppMeasurementIdentitySupport.framework/Info.plist +0 -20
  240. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/ios-arm64_armv7/GoogleAppMeasurementIdentitySupport.framework/Modules/module.modulemap +0 -5
  241. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAppMeasurementIdentitySupport.framework/GoogleAppMeasurementIdentitySupport +0 -0
  242. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAppMeasurementIdentitySupport.framework/Info.plist +0 -20
  243. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAppMeasurementIdentitySupport.framework/Modules/module.modulemap +0 -5
  244. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAppMeasurementIdentitySupport.framework/GoogleAppMeasurementIdentitySupport +0 -0
  245. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAppMeasurementIdentitySupport.framework/Info.plist +0 -20
  246. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAppMeasurementIdentitySupport.framework/Modules/module.modulemap +0 -5
  247. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/macos-arm64_x86_64/GoogleAppMeasurementIdentitySupport.framework/GoogleAppMeasurementIdentitySupport +0 -0
  248. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/macos-arm64_x86_64/GoogleAppMeasurementIdentitySupport.framework/Info.plist +0 -20
  249. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/macos-arm64_x86_64/GoogleAppMeasurementIdentitySupport.framework/Modules/module.modulemap +0 -5
  250. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/tvos-arm64/GoogleAppMeasurementIdentitySupport.framework/GoogleAppMeasurementIdentitySupport +0 -0
  251. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/tvos-arm64/GoogleAppMeasurementIdentitySupport.framework/Info.plist +0 -20
  252. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/tvos-arm64/GoogleAppMeasurementIdentitySupport.framework/Modules/module.modulemap +0 -5
  253. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/tvos-arm64_x86_64-simulator/GoogleAppMeasurementIdentitySupport.framework/GoogleAppMeasurementIdentitySupport +0 -0
  254. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/tvos-arm64_x86_64-simulator/GoogleAppMeasurementIdentitySupport.framework/Info.plist +0 -20
  255. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/tvos-arm64_x86_64-simulator/GoogleAppMeasurementIdentitySupport.framework/Modules/module.modulemap +0 -5
  256. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCCTLibrary/GDTCCTCompressionHelper.m +0 -95
  257. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCCTLibrary/GDTCCTNanopbHelpers.m +0 -270
  258. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCCTLibrary/GDTCCTUploadOperation.m +0 -573
  259. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCCTLibrary/GDTCCTUploader.m +0 -210
  260. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCCTLibrary/GDTCOREvent+GDTCCTSupport.m +0 -240
  261. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCCTLibrary/Private/GDTCCTCompressionHelper.h +0 -40
  262. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCCTLibrary/Private/GDTCCTNanopbHelpers.h +0 -128
  263. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCCTLibrary/Private/GDTCCTUploadOperation.h +0 -76
  264. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCCTLibrary/Private/GDTCCTUploader.h +0 -45
  265. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCCTLibrary/Protogen/nanopb/cct.nanopb.c +0 -128
  266. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCCTLibrary/Protogen/nanopb/cct.nanopb.h +0 -281
  267. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCCTLibrary/Public/GDTCOREvent+GDTCCTSupport.h +0 -51
  268. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORAssert.m +0 -36
  269. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORClock.m +0 -178
  270. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORConsoleLogger.m +0 -55
  271. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORDirectorySizeTracker.m +0 -101
  272. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCOREndpoints.m +0 -92
  273. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCOREvent.m +0 -153
  274. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORFlatFileStorage+Promises.m +0 -104
  275. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORFlatFileStorage.m +0 -826
  276. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORLifecycle.m +0 -119
  277. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORPlatform.m +0 -604
  278. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORReachability.m +0 -125
  279. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORRegistrar.m +0 -157
  280. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORStorageEventSelector.m +0 -39
  281. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORTransformer.m +0 -111
  282. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORTransport.m +0 -92
  283. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORUploadBatch.m +0 -30
  284. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORUploadCoordinator.m +0 -176
  285. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Internal/GDTCORAssert.h +0 -95
  286. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Internal/GDTCORDirectorySizeTracker.h +0 -66
  287. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Internal/GDTCORLifecycle.h +0 -63
  288. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Internal/GDTCORPlatform.h +0 -225
  289. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Internal/GDTCORReachability.h +0 -31
  290. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Internal/GDTCORRegistrar.h +0 -50
  291. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Internal/GDTCORStorageEventSelector.h +0 -61
  292. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Internal/GDTCORStorageProtocol.h +0 -171
  293. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Internal/GDTCORUploader.h +0 -59
  294. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCOREndpoints_Private.h +0 -27
  295. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCOREvent_Private.h +0 -33
  296. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORFlatFileStorage+Promises.h +0 -28
  297. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORFlatFileStorage.h +0 -158
  298. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORReachability_Private.h +0 -30
  299. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORRegistrar_Private.h +0 -35
  300. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORTransformer.h +0 -57
  301. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORTransformer_Private.h +0 -37
  302. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORTransport_Private.h +0 -39
  303. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORUploadBatch.h +0 -37
  304. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORUploadCoordinator.h +0 -68
  305. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GoogleDataTransport/GDTCORClock.h +0 -66
  306. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GoogleDataTransport/GDTCORConsoleLogger.h +0 -144
  307. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GoogleDataTransport/GDTCOREndpoints.h +0 -36
  308. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GoogleDataTransport/GDTCOREvent.h +0 -87
  309. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GoogleDataTransport/GDTCOREventDataObject.h +0 -36
  310. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GoogleDataTransport/GDTCOREventTransformer.h +0 -38
  311. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GoogleDataTransport/GDTCORTargets.h +0 -40
  312. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GoogleDataTransport/GDTCORTransport.h +0 -92
  313. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GoogleDataTransport/GoogleDataTransport.h +0 -24
  314. data/examples/AExample/Pods/GoogleDataTransport/LICENSE +0 -202
  315. data/examples/AExample/Pods/GoogleDataTransport/README.md +0 -231
  316. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/AppDelegateSwizzler/GULAppDelegateSwizzler.m +0 -1070
  317. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/AppDelegateSwizzler/GULSceneDelegateSwizzler.m +0 -439
  318. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/AppDelegateSwizzler/Internal/GULAppDelegateSwizzler_Private.h +0 -55
  319. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/AppDelegateSwizzler/Internal/GULSceneDelegateSwizzler_Private.h +0 -48
  320. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/AppDelegateSwizzler/Public/GoogleUtilities/GULAppDelegateSwizzler.h +0 -107
  321. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/AppDelegateSwizzler/Public/GoogleUtilities/GULApplication.h +0 -50
  322. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/AppDelegateSwizzler/Public/GoogleUtilities/GULSceneDelegateSwizzler.h +0 -76
  323. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Common/GULLoggerCodes.h +0 -56
  324. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Environment/GULHeartbeatDateStorage.m +0 -153
  325. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Environment/GULHeartbeatDateStorageUserDefaults.m +0 -68
  326. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Environment/GULSecureCoding.m +0 -103
  327. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Environment/Public/GoogleUtilities/GULAppEnvironmentUtil.h +0 -60
  328. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Environment/Public/GoogleUtilities/GULHeartbeatDateStorable.h +0 -40
  329. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Environment/Public/GoogleUtilities/GULHeartbeatDateStorage.h +0 -54
  330. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Environment/Public/GoogleUtilities/GULHeartbeatDateStorageUserDefaults.h +0 -51
  331. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Environment/Public/GoogleUtilities/GULKeychainStorage.h +0 -79
  332. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Environment/Public/GoogleUtilities/GULKeychainUtils.h +0 -61
  333. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Environment/Public/GoogleUtilities/GULSecureCoding.h +0 -36
  334. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Environment/Public/GoogleUtilities/GULURLSessionDataResponse.h +0 -31
  335. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Environment/Public/GoogleUtilities/NSURLSession+GULPromises.h +0 -37
  336. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Environment/SecureStorage/GULKeychainStorage.m +0 -192
  337. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Environment/SecureStorage/GULKeychainUtils.m +0 -113
  338. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Environment/URLSessionPromiseWrapper/GULURLSessionDataResponse.m +0 -30
  339. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Environment/URLSessionPromiseWrapper/NSURLSession+GULPromises.m +0 -46
  340. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Environment/third_party/GULAppEnvironmentUtil.m +0 -333
  341. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Logger/GULLogger.m +0 -215
  342. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Logger/Public/GoogleUtilities/GULLogger.h +0 -159
  343. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Logger/Public/GoogleUtilities/GULLoggerLevel.h +0 -37
  344. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/MethodSwizzler/GULSwizzler.m +0 -153
  345. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/MethodSwizzler/Public/GoogleUtilities/GULOriginalIMPConvenienceMacros.h +0 -207
  346. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/MethodSwizzler/Public/GoogleUtilities/GULSwizzler.h +0 -71
  347. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/NSData+zlib/GULNSData+zlib.m +0 -207
  348. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/NSData+zlib/Public/GoogleUtilities/GULNSData+zlib.h +0 -49
  349. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Network/GULMutableDictionary.m +0 -101
  350. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Network/GULNetwork.m +0 -390
  351. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Network/GULNetworkConstants.m +0 -41
  352. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Network/GULNetworkInternal.h +0 -24
  353. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Network/GULNetworkURLSession.m +0 -766
  354. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Network/Public/GoogleUtilities/GULMutableDictionary.h +0 -46
  355. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Network/Public/GoogleUtilities/GULNetwork.h +0 -87
  356. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Network/Public/GoogleUtilities/GULNetworkConstants.h +0 -71
  357. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Network/Public/GoogleUtilities/GULNetworkLoggerProtocol.h +0 -49
  358. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Network/Public/GoogleUtilities/GULNetworkMessageCode.h +0 -47
  359. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Network/Public/GoogleUtilities/GULNetworkURLSession.h +0 -62
  360. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Reachability/GULReachabilityChecker+Internal.h +0 -48
  361. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Reachability/GULReachabilityChecker.m +0 -263
  362. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Reachability/GULReachabilityMessageCode.h +0 -29
  363. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Reachability/Public/GoogleUtilities/GULReachabilityChecker.h +0 -79
  364. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/UserDefaults/GULUserDefaults.m +0 -213
  365. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/UserDefaults/Public/GoogleUtilities/GULUserDefaults.h +0 -110
  366. data/examples/AExample/Pods/GoogleUtilities/LICENSE +0 -247
  367. data/examples/AExample/Pods/GoogleUtilities/README.md +0 -189
  368. data/examples/AExample/Pods/Manifest.lock +0 -112
  369. data/examples/AExample/Pods/Pods.xcodeproj/project.pbxproj +0 -3670
  370. data/examples/AExample/Pods/Pods.xcodeproj/xcuserdata/xuzhongping.xcuserdatad/xcschemes/FirebaseAnalytics.xcscheme +0 -58
  371. data/examples/AExample/Pods/Pods.xcodeproj/xcuserdata/xuzhongping.xcuserdatad/xcschemes/FirebaseCore.xcscheme +0 -58
  372. data/examples/AExample/Pods/Pods.xcodeproj/xcuserdata/xuzhongping.xcuserdatad/xcschemes/FirebaseCoreDiagnostics.xcscheme +0 -58
  373. data/examples/AExample/Pods/Pods.xcodeproj/xcuserdata/xuzhongping.xcuserdatad/xcschemes/FirebaseInstallations.xcscheme +0 -58
  374. data/examples/AExample/Pods/Pods.xcodeproj/xcuserdata/xuzhongping.xcuserdatad/xcschemes/GoogleAppMeasurement.xcscheme +0 -58
  375. data/examples/AExample/Pods/Pods.xcodeproj/xcuserdata/xuzhongping.xcuserdatad/xcschemes/GoogleDataTransport.xcscheme +0 -58
  376. data/examples/AExample/Pods/Pods.xcodeproj/xcuserdata/xuzhongping.xcuserdatad/xcschemes/GoogleUtilities.xcscheme +0 -58
  377. data/examples/AExample/Pods/Pods.xcodeproj/xcuserdata/xuzhongping.xcuserdatad/xcschemes/Pods-AExample-AExampleCP.xcscheme +0 -58
  378. data/examples/AExample/Pods/Pods.xcodeproj/xcuserdata/xuzhongping.xcuserdatad/xcschemes/Pods-AExample.xcscheme +0 -58
  379. data/examples/AExample/Pods/Pods.xcodeproj/xcuserdata/xuzhongping.xcuserdatad/xcschemes/PromisesObjC.xcscheme +0 -58
  380. data/examples/AExample/Pods/Pods.xcodeproj/xcuserdata/xuzhongping.xcuserdatad/xcschemes/nanopb.xcscheme +0 -58
  381. data/examples/AExample/Pods/Pods.xcodeproj/xcuserdata/xuzhongping.xcuserdatad/xcschemes/xcschememanagement.plist +0 -66
  382. data/examples/AExample/Pods/PromisesObjC/LICENSE +0 -202
  383. data/examples/AExample/Pods/PromisesObjC/README.md +0 -60
  384. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+All.m +0 -86
  385. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Always.m +0 -58
  386. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Any.m +0 -112
  387. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Async.m +0 -70
  388. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Await.m +0 -48
  389. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Catch.m +0 -55
  390. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Delay.m +0 -59
  391. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Do.m +0 -59
  392. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Race.m +0 -65
  393. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Recover.m +0 -54
  394. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Reduce.m +0 -61
  395. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Retry.m +0 -128
  396. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Testing.m +0 -55
  397. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Then.m +0 -50
  398. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Timeout.m +0 -64
  399. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Validate.m +0 -56
  400. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Wrap.m +0 -420
  401. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise.m +0 -299
  402. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/FBLPromiseError.m +0 -19
  403. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+All.h +0 -63
  404. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Always.h +0 -54
  405. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Any.h +0 -69
  406. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Async.h +0 -60
  407. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Await.h +0 -32
  408. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Catch.h +0 -59
  409. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Delay.h +0 -59
  410. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Do.h +0 -55
  411. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Race.h +0 -62
  412. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Recover.h +0 -60
  413. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Reduce.h +0 -71
  414. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Retry.h +0 -165
  415. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Testing.h +0 -57
  416. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Then.h +0 -63
  417. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Timeout.h +0 -57
  418. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Validate.h +0 -60
  419. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Wrap.h +0 -316
  420. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise.h +0 -93
  421. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromiseError.h +0 -43
  422. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromisePrivate.h +0 -66
  423. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromises.h +0 -32
  424. data/examples/AExample/Pods/Target Support Files/FirebaseAnalytics/FirebaseAnalytics-xcframeworks-input-files.xcfilelist +0 -2
  425. data/examples/AExample/Pods/Target Support Files/FirebaseAnalytics/FirebaseAnalytics-xcframeworks-output-files.xcfilelist +0 -1
  426. data/examples/AExample/Pods/Target Support Files/FirebaseAnalytics/FirebaseAnalytics-xcframeworks.sh +0 -109
  427. data/examples/AExample/Pods/Target Support Files/FirebaseAnalytics/FirebaseAnalytics.debug.xcconfig +0 -13
  428. data/examples/AExample/Pods/Target Support Files/FirebaseAnalytics/FirebaseAnalytics.release.xcconfig +0 -13
  429. data/examples/AExample/Pods/Target Support Files/FirebaseCore/FirebaseCore-Info.plist +0 -26
  430. data/examples/AExample/Pods/Target Support Files/FirebaseCore/FirebaseCore-dummy.m +0 -5
  431. data/examples/AExample/Pods/Target Support Files/FirebaseCore/FirebaseCore-umbrella.h +0 -22
  432. data/examples/AExample/Pods/Target Support Files/FirebaseCore/FirebaseCore.debug.xcconfig +0 -16
  433. data/examples/AExample/Pods/Target Support Files/FirebaseCore/FirebaseCore.modulemap +0 -6
  434. data/examples/AExample/Pods/Target Support Files/FirebaseCore/FirebaseCore.release.xcconfig +0 -16
  435. data/examples/AExample/Pods/Target Support Files/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics-Info.plist +0 -26
  436. data/examples/AExample/Pods/Target Support Files/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics-dummy.m +0 -5
  437. data/examples/AExample/Pods/Target Support Files/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics-umbrella.h +0 -17
  438. data/examples/AExample/Pods/Target Support Files/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics.debug.xcconfig +0 -17
  439. data/examples/AExample/Pods/Target Support Files/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics.modulemap +0 -6
  440. data/examples/AExample/Pods/Target Support Files/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics.release.xcconfig +0 -17
  441. data/examples/AExample/Pods/Target Support Files/FirebaseInstallations/FirebaseInstallations-Info.plist +0 -26
  442. data/examples/AExample/Pods/Target Support Files/FirebaseInstallations/FirebaseInstallations-dummy.m +0 -5
  443. data/examples/AExample/Pods/Target Support Files/FirebaseInstallations/FirebaseInstallations-umbrella.h +0 -20
  444. data/examples/AExample/Pods/Target Support Files/FirebaseInstallations/FirebaseInstallations.debug.xcconfig +0 -15
  445. data/examples/AExample/Pods/Target Support Files/FirebaseInstallations/FirebaseInstallations.modulemap +0 -6
  446. data/examples/AExample/Pods/Target Support Files/FirebaseInstallations/FirebaseInstallations.release.xcconfig +0 -15
  447. data/examples/AExample/Pods/Target Support Files/GoogleAppMeasurement/GoogleAppMeasurement-xcframeworks-input-files.xcfilelist +0 -3
  448. data/examples/AExample/Pods/Target Support Files/GoogleAppMeasurement/GoogleAppMeasurement-xcframeworks-output-files.xcfilelist +0 -2
  449. data/examples/AExample/Pods/Target Support Files/GoogleAppMeasurement/GoogleAppMeasurement-xcframeworks.sh +0 -110
  450. data/examples/AExample/Pods/Target Support Files/GoogleAppMeasurement/GoogleAppMeasurement.debug.xcconfig +0 -13
  451. data/examples/AExample/Pods/Target Support Files/GoogleAppMeasurement/GoogleAppMeasurement.release.xcconfig +0 -13
  452. data/examples/AExample/Pods/Target Support Files/GoogleDataTransport/GoogleDataTransport-Info.plist +0 -26
  453. data/examples/AExample/Pods/Target Support Files/GoogleDataTransport/GoogleDataTransport-dummy.m +0 -5
  454. data/examples/AExample/Pods/Target Support Files/GoogleDataTransport/GoogleDataTransport-umbrella.h +0 -25
  455. data/examples/AExample/Pods/Target Support Files/GoogleDataTransport/GoogleDataTransport.debug.xcconfig +0 -16
  456. data/examples/AExample/Pods/Target Support Files/GoogleDataTransport/GoogleDataTransport.modulemap +0 -6
  457. data/examples/AExample/Pods/Target Support Files/GoogleDataTransport/GoogleDataTransport.release.xcconfig +0 -16
  458. data/examples/AExample/Pods/Target Support Files/GoogleUtilities/GoogleUtilities-Info.plist +0 -26
  459. data/examples/AExample/Pods/Target Support Files/GoogleUtilities/GoogleUtilities-dummy.m +0 -5
  460. data/examples/AExample/Pods/Target Support Files/GoogleUtilities/GoogleUtilities-umbrella.h +0 -41
  461. data/examples/AExample/Pods/Target Support Files/GoogleUtilities/GoogleUtilities.debug.xcconfig +0 -15
  462. data/examples/AExample/Pods/Target Support Files/GoogleUtilities/GoogleUtilities.modulemap +0 -6
  463. data/examples/AExample/Pods/Target Support Files/GoogleUtilities/GoogleUtilities.release.xcconfig +0 -15
  464. data/examples/AExample/Pods/Target Support Files/Pods-AExample/Pods-AExample-Info.plist +0 -26
  465. data/examples/AExample/Pods/Target Support Files/Pods-AExample/Pods-AExample-acknowledgements.markdown +0 -1316
  466. data/examples/AExample/Pods/Target Support Files/Pods-AExample/Pods-AExample-acknowledgements.plist +0 -1396
  467. data/examples/AExample/Pods/Target Support Files/Pods-AExample/Pods-AExample-dummy.m +0 -5
  468. data/examples/AExample/Pods/Target Support Files/Pods-AExample/Pods-AExample-frameworks-Debug-input-files.xcfilelist +0 -8
  469. data/examples/AExample/Pods/Target Support Files/Pods-AExample/Pods-AExample-frameworks-Debug-output-files.xcfilelist +0 -7
  470. data/examples/AExample/Pods/Target Support Files/Pods-AExample/Pods-AExample-frameworks-Release-input-files.xcfilelist +0 -8
  471. data/examples/AExample/Pods/Target Support Files/Pods-AExample/Pods-AExample-frameworks-Release-output-files.xcfilelist +0 -7
  472. data/examples/AExample/Pods/Target Support Files/Pods-AExample/Pods-AExample-frameworks.sh +0 -198
  473. data/examples/AExample/Pods/Target Support Files/Pods-AExample/Pods-AExample-umbrella.h +0 -16
  474. data/examples/AExample/Pods/Target Support Files/Pods-AExample/Pods-AExample.debug.xcconfig +0 -12
  475. data/examples/AExample/Pods/Target Support Files/Pods-AExample/Pods-AExample.modulemap +0 -6
  476. data/examples/AExample/Pods/Target Support Files/Pods-AExample/Pods-AExample.release.xcconfig +0 -12
  477. data/examples/AExample/Pods/Target Support Files/Pods-AExample-AExampleCP/Pods-AExample-AExampleCP-Info.plist +0 -26
  478. data/examples/AExample/Pods/Target Support Files/Pods-AExample-AExampleCP/Pods-AExample-AExampleCP-acknowledgements.markdown +0 -1316
  479. data/examples/AExample/Pods/Target Support Files/Pods-AExample-AExampleCP/Pods-AExample-AExampleCP-acknowledgements.plist +0 -1396
  480. data/examples/AExample/Pods/Target Support Files/Pods-AExample-AExampleCP/Pods-AExample-AExampleCP-dummy.m +0 -5
  481. data/examples/AExample/Pods/Target Support Files/Pods-AExample-AExampleCP/Pods-AExample-AExampleCP-frameworks-Debug-input-files.xcfilelist +0 -8
  482. data/examples/AExample/Pods/Target Support Files/Pods-AExample-AExampleCP/Pods-AExample-AExampleCP-frameworks-Debug-output-files.xcfilelist +0 -7
  483. data/examples/AExample/Pods/Target Support Files/Pods-AExample-AExampleCP/Pods-AExample-AExampleCP-frameworks-Release-input-files.xcfilelist +0 -8
  484. data/examples/AExample/Pods/Target Support Files/Pods-AExample-AExampleCP/Pods-AExample-AExampleCP-frameworks-Release-output-files.xcfilelist +0 -7
  485. data/examples/AExample/Pods/Target Support Files/Pods-AExample-AExampleCP/Pods-AExample-AExampleCP-frameworks.sh +0 -198
  486. data/examples/AExample/Pods/Target Support Files/Pods-AExample-AExampleCP/Pods-AExample-AExampleCP-umbrella.h +0 -16
  487. data/examples/AExample/Pods/Target Support Files/Pods-AExample-AExampleCP/Pods-AExample-AExampleCP.debug.xcconfig +0 -12
  488. data/examples/AExample/Pods/Target Support Files/Pods-AExample-AExampleCP/Pods-AExample-AExampleCP.modulemap +0 -6
  489. data/examples/AExample/Pods/Target Support Files/Pods-AExample-AExampleCP/Pods-AExample-AExampleCP.release.xcconfig +0 -12
  490. data/examples/AExample/Pods/Target Support Files/PromisesObjC/PromisesObjC-Info.plist +0 -26
  491. data/examples/AExample/Pods/Target Support Files/PromisesObjC/PromisesObjC-dummy.m +0 -5
  492. data/examples/AExample/Pods/Target Support Files/PromisesObjC/PromisesObjC-umbrella.h +0 -36
  493. data/examples/AExample/Pods/Target Support Files/PromisesObjC/PromisesObjC.debug.xcconfig +0 -12
  494. data/examples/AExample/Pods/Target Support Files/PromisesObjC/PromisesObjC.modulemap +0 -6
  495. data/examples/AExample/Pods/Target Support Files/PromisesObjC/PromisesObjC.release.xcconfig +0 -12
  496. data/examples/AExample/Pods/Target Support Files/nanopb/nanopb-Info.plist +0 -26
  497. data/examples/AExample/Pods/Target Support Files/nanopb/nanopb-dummy.m +0 -5
  498. data/examples/AExample/Pods/Target Support Files/nanopb/nanopb-prefix.pch +0 -12
  499. data/examples/AExample/Pods/Target Support Files/nanopb/nanopb-umbrella.h +0 -26
  500. data/examples/AExample/Pods/Target Support Files/nanopb/nanopb.debug.xcconfig +0 -11
  501. data/examples/AExample/Pods/Target Support Files/nanopb/nanopb.modulemap +0 -6
  502. data/examples/AExample/Pods/Target Support Files/nanopb/nanopb.release.xcconfig +0 -11
  503. data/examples/AExample/Pods/nanopb/LICENSE.txt +0 -20
  504. data/examples/AExample/Pods/nanopb/README.md +0 -71
  505. data/examples/AExample/Pods/nanopb/pb.h +0 -599
  506. data/examples/AExample/Pods/nanopb/pb_common.c +0 -97
  507. data/examples/AExample/Pods/nanopb/pb_common.h +0 -42
  508. data/examples/AExample/Pods/nanopb/pb_decode.c +0 -1564
  509. data/examples/AExample/Pods/nanopb/pb_decode.h +0 -178
  510. data/examples/AExample/Pods/nanopb/pb_encode.c +0 -913
  511. data/examples/AExample/Pods/nanopb/pb_encode.h +0 -170
  512. data/spec/command/validator_spec.rb +0 -12
  513. data/spec/spec_helper.rb +0 -50
@@ -1,1070 +0,0 @@
1
- // Copyright 2018 Google LLC
2
- //
3
- // Licensed under the Apache License, Version 2.0 (the "License");
4
- // you may not use this file except in compliance with the License.
5
- // You may obtain a copy of the License at
6
- //
7
- // http://www.apache.org/licenses/LICENSE-2.0
8
- //
9
- // Unless required by applicable law or agreed to in writing, software
10
- // distributed under the License is distributed on an "AS IS" BASIS,
11
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- // See the License for the specific language governing permissions and
13
- // limitations under the License.
14
-
15
- #import <TargetConditionals.h>
16
-
17
- #import "GoogleUtilities/AppDelegateSwizzler/Internal/GULAppDelegateSwizzler_Private.h"
18
- #import "GoogleUtilities/AppDelegateSwizzler/Public/GoogleUtilities/GULAppDelegateSwizzler.h"
19
- #import "GoogleUtilities/Common/GULLoggerCodes.h"
20
- #import "GoogleUtilities/Environment/Public/GoogleUtilities/GULAppEnvironmentUtil.h"
21
- #import "GoogleUtilities/Logger/Public/GoogleUtilities/GULLogger.h"
22
- #import "GoogleUtilities/Network/Public/GoogleUtilities/GULMutableDictionary.h"
23
-
24
- #import <dispatch/group.h>
25
- #import <objc/runtime.h>
26
-
27
- // Implementations need to be typed before calling the implementation directly to cast the
28
- // arguments and the return types correctly. Otherwise, it will crash the app.
29
- typedef BOOL (*GULRealOpenURLSourceApplicationAnnotationIMP)(
30
- id, SEL, GULApplication *, NSURL *, NSString *, id);
31
-
32
- typedef BOOL (*GULRealOpenURLOptionsIMP)(
33
- id, SEL, GULApplication *, NSURL *, NSDictionary<NSString *, id> *);
34
-
35
- #pragma clang diagnostic push
36
- #pragma clang diagnostic ignored "-Wstrict-prototypes"
37
- typedef void (*GULRealHandleEventsForBackgroundURLSessionIMP)(
38
- id, SEL, GULApplication *, NSString *, void (^)());
39
- #pragma clang diagnostic pop
40
-
41
- typedef BOOL (*GULRealContinueUserActivityIMP)(
42
- id, SEL, GULApplication *, NSUserActivity *, void (^)(NSArray *restorableObjects));
43
-
44
- typedef void (*GULRealDidRegisterForRemoteNotificationsIMP)(id, SEL, GULApplication *, NSData *);
45
-
46
- typedef void (*GULRealDidFailToRegisterForRemoteNotificationsIMP)(id,
47
- SEL,
48
- GULApplication *,
49
- NSError *);
50
-
51
- typedef void (*GULRealDidReceiveRemoteNotificationIMP)(id, SEL, GULApplication *, NSDictionary *);
52
-
53
- #if !TARGET_OS_WATCH && !TARGET_OS_OSX
54
- typedef void (*GULRealDidReceiveRemoteNotificationWithCompletionIMP)(
55
- id, SEL, GULApplication *, NSDictionary *, void (^)(UIBackgroundFetchResult));
56
- #endif // !TARGET_OS_WATCH && !TARGET_OS_OSX
57
-
58
- typedef void (^GULAppDelegateInterceptorCallback)(id<GULApplicationDelegate>);
59
-
60
- // The strings below are the keys for associated objects.
61
- static char const *const kGULRealIMPBySelectorKey = "GUL_realIMPBySelector";
62
- static char const *const kGULRealClassKey = "GUL_realClass";
63
-
64
- static NSString *const kGULAppDelegateKeyPath = @"delegate";
65
-
66
- static GULLoggerService kGULLoggerSwizzler = @"[GoogleUtilities/AppDelegateSwizzler]";
67
-
68
- // Since Firebase SDKs also use this for app delegate proxying, in order to not be a breaking change
69
- // we disable App Delegate proxying when either of these two flags are set to NO.
70
-
71
- /** Plist key that allows Firebase developers to disable App and Scene Delegate Proxying. */
72
- static NSString *const kGULFirebaseAppDelegateProxyEnabledPlistKey =
73
- @"FirebaseAppDelegateProxyEnabled";
74
-
75
- /** Plist key that allows developers not using Firebase to disable App and Scene Delegate Proxying.
76
- */
77
- static NSString *const kGULGoogleUtilitiesAppDelegateProxyEnabledPlistKey =
78
- @"GoogleUtilitiesAppDelegateProxyEnabled";
79
-
80
- /** The prefix of the App Delegate. */
81
- static NSString *const kGULAppDelegatePrefix = @"GUL_";
82
-
83
- /** The original instance of App Delegate. */
84
- static id<GULApplicationDelegate> gOriginalAppDelegate;
85
-
86
- /** The original App Delegate class */
87
- static Class gOriginalAppDelegateClass;
88
-
89
- /** The subclass of the original App Delegate. */
90
- static Class gAppDelegateSubclass;
91
-
92
- /** Remote notification methods selectors
93
- *
94
- * We have to opt out of referencing APNS related App Delegate methods directly to prevent
95
- * an Apple review warning email about missing Push Notification Entitlement
96
- * (like here: https://github.com/firebase/firebase-ios-sdk/issues/2807). From our experience, the
97
- * warning is triggered when any of the symbols is present in the application sent to review, even
98
- * if the code is never executed. Because GULAppDelegateSwizzler may be used by applications that
99
- * are not using APNS we have to refer to the methods indirectly using selector constructed from
100
- * string.
101
- *
102
- * NOTE: None of the methods is proxied unless it is explicitly requested by calling the method
103
- * +[GULAppDelegateSwizzler proxyOriginalDelegateIncludingAPNSMethods]
104
- */
105
- static NSString *const kGULDidRegisterForRemoteNotificationsSEL =
106
- @"application:didRegisterForRemoteNotificationsWithDeviceToken:";
107
- static NSString *const kGULDidFailToRegisterForRemoteNotificationsSEL =
108
- @"application:didFailToRegisterForRemoteNotificationsWithError:";
109
- static NSString *const kGULDidReceiveRemoteNotificationSEL =
110
- @"application:didReceiveRemoteNotification:";
111
- static NSString *const kGULDidReceiveRemoteNotificationWithCompletionSEL =
112
- @"application:didReceiveRemoteNotification:fetchCompletionHandler:";
113
-
114
- /**
115
- * This class is necessary to store the delegates in an NSArray without retaining them.
116
- * [NSValue valueWithNonRetainedObject] also provides this functionality, but does not provide a
117
- * zeroing pointer. This will cause EXC_BAD_ACCESS when trying to access the object after it is
118
- * dealloced. Instead, this container stores a weak, zeroing reference to the object, which
119
- * automatically is set to nil by the runtime when the object is dealloced.
120
- */
121
- @interface GULZeroingWeakContainer : NSObject
122
-
123
- /** Stores a weak object. */
124
- @property(nonatomic, weak) id object;
125
-
126
- @end
127
-
128
- @implementation GULZeroingWeakContainer
129
- @end
130
-
131
- @interface GULAppDelegateObserver : NSObject
132
- @end
133
-
134
- @implementation GULAppDelegateObserver {
135
- BOOL _isObserving;
136
- }
137
-
138
- + (GULAppDelegateObserver *)sharedInstance {
139
- static GULAppDelegateObserver *instance;
140
- static dispatch_once_t once;
141
- dispatch_once(&once, ^{
142
- instance = [[GULAppDelegateObserver alloc] init];
143
- });
144
- return instance;
145
- }
146
-
147
- - (void)observeUIApplication {
148
- if (_isObserving) {
149
- return;
150
- }
151
- [[GULAppDelegateSwizzler sharedApplication]
152
- addObserver:self
153
- forKeyPath:kGULAppDelegateKeyPath
154
- options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld
155
- context:nil];
156
- _isObserving = YES;
157
- }
158
-
159
- - (void)observeValueForKeyPath:(NSString *)keyPath
160
- ofObject:(id)object
161
- change:(NSDictionary *)change
162
- context:(void *)context {
163
- if ([keyPath isEqual:kGULAppDelegateKeyPath]) {
164
- id newValue = change[NSKeyValueChangeNewKey];
165
- id oldValue = change[NSKeyValueChangeOldKey];
166
- if ([newValue isEqual:oldValue]) {
167
- return;
168
- }
169
- // Free the stored app delegate instance because it has been changed to a different instance to
170
- // avoid keeping it alive forever.
171
- if ([oldValue isEqual:gOriginalAppDelegate]) {
172
- gOriginalAppDelegate = nil;
173
- // Remove the observer. Parse it to NSObject to avoid warning.
174
- [[GULAppDelegateSwizzler sharedApplication] removeObserver:self
175
- forKeyPath:kGULAppDelegateKeyPath];
176
- _isObserving = NO;
177
- }
178
- }
179
- }
180
-
181
- @end
182
-
183
- @implementation GULAppDelegateSwizzler
184
-
185
- static dispatch_once_t sProxyAppDelegateOnceToken;
186
- static dispatch_once_t sProxyAppDelegateRemoteNotificationOnceToken;
187
-
188
- #pragma mark - Public methods
189
-
190
- + (BOOL)isAppDelegateProxyEnabled {
191
- NSDictionary *infoDictionary = [NSBundle mainBundle].infoDictionary;
192
-
193
- id isFirebaseProxyEnabledPlistValue = infoDictionary[kGULFirebaseAppDelegateProxyEnabledPlistKey];
194
- id isGoogleProxyEnabledPlistValue =
195
- infoDictionary[kGULGoogleUtilitiesAppDelegateProxyEnabledPlistKey];
196
-
197
- // Enabled by default.
198
- BOOL isFirebaseAppDelegateProxyEnabled = YES;
199
- BOOL isGoogleUtilitiesAppDelegateProxyEnabled = YES;
200
-
201
- if ([isFirebaseProxyEnabledPlistValue isKindOfClass:[NSNumber class]]) {
202
- isFirebaseAppDelegateProxyEnabled = [isFirebaseProxyEnabledPlistValue boolValue];
203
- }
204
-
205
- if ([isGoogleProxyEnabledPlistValue isKindOfClass:[NSNumber class]]) {
206
- isGoogleUtilitiesAppDelegateProxyEnabled = [isGoogleProxyEnabledPlistValue boolValue];
207
- }
208
-
209
- // Only deactivate the proxy if it is explicitly disabled by app developers using either one of
210
- // the plist flags.
211
- return isFirebaseAppDelegateProxyEnabled && isGoogleUtilitiesAppDelegateProxyEnabled;
212
- }
213
-
214
- + (GULAppDelegateInterceptorID)registerAppDelegateInterceptor:
215
- (id<GULApplicationDelegate>)interceptor {
216
- NSAssert(interceptor, @"AppDelegateProxy cannot add nil interceptor");
217
- NSAssert([interceptor conformsToProtocol:@protocol(GULApplicationDelegate)],
218
- @"AppDelegateProxy interceptor does not conform to UIApplicationDelegate");
219
-
220
- if (!interceptor) {
221
- GULLogError(kGULLoggerSwizzler, NO,
222
- [NSString stringWithFormat:@"I-SWZ%06ld",
223
- (long)kGULSwizzlerMessageCodeAppDelegateSwizzling000],
224
- @"AppDelegateProxy cannot add nil interceptor.");
225
- return nil;
226
- }
227
- if (![interceptor conformsToProtocol:@protocol(GULApplicationDelegate)]) {
228
- GULLogError(kGULLoggerSwizzler, NO,
229
- [NSString stringWithFormat:@"I-SWZ%06ld",
230
- (long)kGULSwizzlerMessageCodeAppDelegateSwizzling001],
231
- @"AppDelegateProxy interceptor does not conform to UIApplicationDelegate");
232
- return nil;
233
- }
234
-
235
- // The ID should be the same given the same interceptor object.
236
- NSString *interceptorID = [NSString stringWithFormat:@"%@%p", kGULAppDelegatePrefix, interceptor];
237
- if (!interceptorID.length) {
238
- GULLogError(kGULLoggerSwizzler, NO,
239
- [NSString stringWithFormat:@"I-SWZ%06ld",
240
- (long)kGULSwizzlerMessageCodeAppDelegateSwizzling002],
241
- @"AppDelegateProxy cannot create Interceptor ID.");
242
- return nil;
243
- }
244
- GULZeroingWeakContainer *weakObject = [[GULZeroingWeakContainer alloc] init];
245
- weakObject.object = interceptor;
246
- [GULAppDelegateSwizzler interceptors][interceptorID] = weakObject;
247
- return interceptorID;
248
- }
249
-
250
- + (void)unregisterAppDelegateInterceptorWithID:(GULAppDelegateInterceptorID)interceptorID {
251
- NSAssert(interceptorID, @"AppDelegateProxy cannot unregister nil interceptor ID.");
252
- NSAssert(((NSString *)interceptorID).length != 0,
253
- @"AppDelegateProxy cannot unregister empty interceptor ID.");
254
-
255
- if (!interceptorID) {
256
- GULLogError(kGULLoggerSwizzler, NO,
257
- [NSString stringWithFormat:@"I-SWZ%06ld",
258
- (long)kGULSwizzlerMessageCodeAppDelegateSwizzling003],
259
- @"AppDelegateProxy cannot unregister empty interceptor ID.");
260
- return;
261
- }
262
-
263
- GULZeroingWeakContainer *weakContainer = [GULAppDelegateSwizzler interceptors][interceptorID];
264
- if (!weakContainer.object) {
265
- GULLogError(kGULLoggerSwizzler, NO,
266
- [NSString stringWithFormat:@"I-SWZ%06ld",
267
- (long)kGULSwizzlerMessageCodeAppDelegateSwizzling004],
268
- @"AppDelegateProxy cannot unregister interceptor that was not registered. "
269
- "Interceptor ID %@",
270
- interceptorID);
271
- return;
272
- }
273
-
274
- [[GULAppDelegateSwizzler interceptors] removeObjectForKey:interceptorID];
275
- }
276
-
277
- + (void)proxyOriginalDelegate {
278
- if ([GULAppEnvironmentUtil isAppExtension]) {
279
- return;
280
- }
281
-
282
- dispatch_once(&sProxyAppDelegateOnceToken, ^{
283
- id<GULApplicationDelegate> originalDelegate =
284
- [GULAppDelegateSwizzler sharedApplication].delegate;
285
- [GULAppDelegateSwizzler proxyAppDelegate:originalDelegate];
286
- });
287
- }
288
-
289
- + (void)proxyOriginalDelegateIncludingAPNSMethods {
290
- if ([GULAppEnvironmentUtil isAppExtension]) {
291
- return;
292
- }
293
-
294
- [self proxyOriginalDelegate];
295
-
296
- dispatch_once(&sProxyAppDelegateRemoteNotificationOnceToken, ^{
297
- id<GULApplicationDelegate> appDelegate = [GULAppDelegateSwizzler sharedApplication].delegate;
298
-
299
- NSMutableDictionary *realImplementationsBySelector =
300
- [objc_getAssociatedObject(appDelegate, &kGULRealIMPBySelectorKey) mutableCopy];
301
-
302
- [self proxyRemoteNotificationsMethodsWithAppDelegateSubClass:gAppDelegateSubclass
303
- realClass:gOriginalAppDelegateClass
304
- appDelegate:appDelegate
305
- realImplementationsBySelector:realImplementationsBySelector];
306
-
307
- objc_setAssociatedObject(appDelegate, &kGULRealIMPBySelectorKey,
308
- [realImplementationsBySelector copy], OBJC_ASSOCIATION_RETAIN);
309
- [self reassignAppDelegate];
310
- });
311
- }
312
-
313
- #pragma mark - Create proxy
314
-
315
- + (GULApplication *)sharedApplication {
316
- if ([GULAppEnvironmentUtil isAppExtension]) {
317
- return nil;
318
- }
319
- id sharedApplication = nil;
320
- Class uiApplicationClass = NSClassFromString(kGULApplicationClassName);
321
- if (uiApplicationClass &&
322
- [uiApplicationClass respondsToSelector:(NSSelectorFromString(@"sharedApplication"))]) {
323
- sharedApplication = [uiApplicationClass sharedApplication];
324
- }
325
- return sharedApplication;
326
- }
327
-
328
- #pragma mark - Override default methods
329
-
330
- /** Creates a new subclass of the class of the given object and sets the isa value of the given
331
- * object to the new subclass. Additionally this copies methods to that new subclass that allow us
332
- * to intercept UIApplicationDelegate methods. This is better known as isa swizzling.
333
- *
334
- * @param appDelegate The object to which you want to isa swizzle. This has to conform to the
335
- * UIApplicationDelegate subclass.
336
- * @return Returns the new subclass.
337
- */
338
- + (nullable Class)createSubclassWithObject:(id<GULApplicationDelegate>)appDelegate {
339
- Class realClass = [appDelegate class];
340
-
341
- // Create GUL_<RealAppDelegate>_<UUID>
342
- NSString *classNameWithPrefix =
343
- [kGULAppDelegatePrefix stringByAppendingString:NSStringFromClass(realClass)];
344
- NSString *newClassName =
345
- [NSString stringWithFormat:@"%@-%@", classNameWithPrefix, [NSUUID UUID].UUIDString];
346
-
347
- if (NSClassFromString(newClassName)) {
348
- GULLogError(kGULLoggerSwizzler, NO,
349
- [NSString stringWithFormat:@"I-SWZ%06ld",
350
- (long)kGULSwizzlerMessageCodeAppDelegateSwizzling005],
351
- @"Cannot create a proxy for App Delegate. Subclass already exists. Original Class: "
352
- @"%@, subclass: %@",
353
- NSStringFromClass(realClass), newClassName);
354
- return nil;
355
- }
356
-
357
- // Register the new class as subclass of the real one. Do not allocate more than the real class
358
- // size.
359
- Class appDelegateSubClass = objc_allocateClassPair(realClass, newClassName.UTF8String, 0);
360
- if (appDelegateSubClass == Nil) {
361
- GULLogError(kGULLoggerSwizzler, NO,
362
- [NSString stringWithFormat:@"I-SWZ%06ld",
363
- (long)kGULSwizzlerMessageCodeAppDelegateSwizzling006],
364
- @"Cannot create a proxy for App Delegate. Subclass already exists. Original Class: "
365
- @"%@, subclass: Nil",
366
- NSStringFromClass(realClass));
367
- return nil;
368
- }
369
-
370
- NSMutableDictionary<NSString *, NSValue *> *realImplementationsBySelector =
371
- [[NSMutableDictionary alloc] init];
372
-
373
- // For application:continueUserActivity:restorationHandler:
374
- SEL continueUserActivitySEL = @selector(application:continueUserActivity:restorationHandler:);
375
- [self proxyDestinationSelector:continueUserActivitySEL
376
- implementationsFromSourceSelector:continueUserActivitySEL
377
- fromClass:[GULAppDelegateSwizzler class]
378
- toClass:appDelegateSubClass
379
- realClass:realClass
380
- storeDestinationImplementationTo:realImplementationsBySelector];
381
-
382
- #if TARGET_OS_IOS || TARGET_OS_TV
383
- // Add the following methods from GULAppDelegate class, and store the real implementation so it
384
- // can forward to the real one.
385
- // For application:openURL:options:
386
- SEL applicationOpenURLOptionsSEL = @selector(application:openURL:options:);
387
- if ([appDelegate respondsToSelector:applicationOpenURLOptionsSEL]) {
388
- // Only add the application:openURL:options: method if the original AppDelegate implements it.
389
- // This fixes a bug if an app only implements application:openURL:sourceApplication:annotation:
390
- // (if we add the `options` method, iOS sees that one exists and does not call the
391
- // `sourceApplication` method, which in this case is the only one the app implements).
392
-
393
- [self proxyDestinationSelector:applicationOpenURLOptionsSEL
394
- implementationsFromSourceSelector:applicationOpenURLOptionsSEL
395
- fromClass:[GULAppDelegateSwizzler class]
396
- toClass:appDelegateSubClass
397
- realClass:realClass
398
- storeDestinationImplementationTo:realImplementationsBySelector];
399
- }
400
-
401
- // For application:handleEventsForBackgroundURLSession:completionHandler:
402
- SEL handleEventsForBackgroundURLSessionSEL = @selector(application:
403
- handleEventsForBackgroundURLSession:completionHandler:);
404
- [self proxyDestinationSelector:handleEventsForBackgroundURLSessionSEL
405
- implementationsFromSourceSelector:handleEventsForBackgroundURLSessionSEL
406
- fromClass:[GULAppDelegateSwizzler class]
407
- toClass:appDelegateSubClass
408
- realClass:realClass
409
- storeDestinationImplementationTo:realImplementationsBySelector];
410
- #endif // TARGET_OS_IOS || TARGET_OS_TV
411
-
412
- #if TARGET_OS_IOS
413
- // For application:openURL:sourceApplication:annotation:
414
- SEL openURLSourceApplicationAnnotationSEL = @selector(application:
415
- openURL:sourceApplication:annotation:);
416
-
417
- [self proxyDestinationSelector:openURLSourceApplicationAnnotationSEL
418
- implementationsFromSourceSelector:openURLSourceApplicationAnnotationSEL
419
- fromClass:[GULAppDelegateSwizzler class]
420
- toClass:appDelegateSubClass
421
- realClass:realClass
422
- storeDestinationImplementationTo:realImplementationsBySelector];
423
- #endif // TARGET_OS_IOS
424
-
425
- // Override the description too so the custom class name will not show up.
426
- [GULAppDelegateSwizzler addInstanceMethodWithDestinationSelector:@selector(description)
427
- withImplementationFromSourceSelector:@selector(fakeDescription)
428
- fromClass:[self class]
429
- toClass:appDelegateSubClass];
430
-
431
- // Store original implementations to a fake property of the original delegate.
432
- objc_setAssociatedObject(appDelegate, &kGULRealIMPBySelectorKey,
433
- [realImplementationsBySelector copy], OBJC_ASSOCIATION_RETAIN_NONATOMIC);
434
- objc_setAssociatedObject(appDelegate, &kGULRealClassKey, realClass,
435
- OBJC_ASSOCIATION_RETAIN_NONATOMIC);
436
-
437
- // The subclass size has to be exactly the same size with the original class size. The subclass
438
- // cannot have more ivars/properties than its superclass since it will cause an offset in memory
439
- // that can lead to overwriting the isa of an object in the next frame.
440
- if (class_getInstanceSize(realClass) != class_getInstanceSize(appDelegateSubClass)) {
441
- GULLogError(kGULLoggerSwizzler, NO,
442
- [NSString stringWithFormat:@"I-SWZ%06ld",
443
- (long)kGULSwizzlerMessageCodeAppDelegateSwizzling007],
444
- @"Cannot create subclass of App Delegate, because the created subclass is not the "
445
- @"same size. %@",
446
- NSStringFromClass(realClass));
447
- NSAssert(NO, @"Classes must be the same size to swizzle isa");
448
- return nil;
449
- }
450
-
451
- // Make the newly created class to be the subclass of the real App Delegate class.
452
- objc_registerClassPair(appDelegateSubClass);
453
- if (object_setClass(appDelegate, appDelegateSubClass)) {
454
- GULLogDebug(kGULLoggerSwizzler, NO,
455
- [NSString stringWithFormat:@"I-SWZ%06ld",
456
- (long)kGULSwizzlerMessageCodeAppDelegateSwizzling008],
457
- @"Successfully created App Delegate Proxy automatically. To disable the "
458
- @"proxy, set the flag %@ to NO (Boolean) in the Info.plist",
459
- [GULAppDelegateSwizzler correctAppDelegateProxyKey]);
460
- }
461
-
462
- return appDelegateSubClass;
463
- }
464
-
465
- + (void)proxyRemoteNotificationsMethodsWithAppDelegateSubClass:(Class)appDelegateSubClass
466
- realClass:(Class)realClass
467
- appDelegate:(id)appDelegate
468
- realImplementationsBySelector:
469
- (NSMutableDictionary *)realImplementationsBySelector {
470
- if (realClass == nil || appDelegateSubClass == nil || appDelegate == nil ||
471
- realImplementationsBySelector == nil) {
472
- // The App Delegate has not been swizzled.
473
- return;
474
- }
475
-
476
- // For application:didRegisterForRemoteNotificationsWithDeviceToken:
477
- SEL didRegisterForRemoteNotificationsSEL =
478
- NSSelectorFromString(kGULDidRegisterForRemoteNotificationsSEL);
479
- SEL didRegisterForRemoteNotificationsDonorSEL = @selector(application:
480
- donor_didRegisterForRemoteNotificationsWithDeviceToken:);
481
-
482
- [self proxyDestinationSelector:didRegisterForRemoteNotificationsSEL
483
- implementationsFromSourceSelector:didRegisterForRemoteNotificationsDonorSEL
484
- fromClass:[GULAppDelegateSwizzler class]
485
- toClass:appDelegateSubClass
486
- realClass:realClass
487
- storeDestinationImplementationTo:realImplementationsBySelector];
488
-
489
- // For application:didFailToRegisterForRemoteNotificationsWithError:
490
- SEL didFailToRegisterForRemoteNotificationsSEL =
491
- NSSelectorFromString(kGULDidFailToRegisterForRemoteNotificationsSEL);
492
- SEL didFailToRegisterForRemoteNotificationsDonorSEL = @selector(application:
493
- donor_didFailToRegisterForRemoteNotificationsWithError:);
494
-
495
- [self proxyDestinationSelector:didFailToRegisterForRemoteNotificationsSEL
496
- implementationsFromSourceSelector:didFailToRegisterForRemoteNotificationsDonorSEL
497
- fromClass:[GULAppDelegateSwizzler class]
498
- toClass:appDelegateSubClass
499
- realClass:realClass
500
- storeDestinationImplementationTo:realImplementationsBySelector];
501
-
502
- // For application:didReceiveRemoteNotification:
503
- SEL didReceiveRemoteNotificationSEL = NSSelectorFromString(kGULDidReceiveRemoteNotificationSEL);
504
- SEL didReceiveRemoteNotificationDonotSEL = @selector(application:
505
- donor_didReceiveRemoteNotification:);
506
-
507
- [self proxyDestinationSelector:didReceiveRemoteNotificationSEL
508
- implementationsFromSourceSelector:didReceiveRemoteNotificationDonotSEL
509
- fromClass:[GULAppDelegateSwizzler class]
510
- toClass:appDelegateSubClass
511
- realClass:realClass
512
- storeDestinationImplementationTo:realImplementationsBySelector];
513
-
514
- // For application:didReceiveRemoteNotification:fetchCompletionHandler:
515
- #if !TARGET_OS_WATCH && !TARGET_OS_OSX
516
- SEL didReceiveRemoteNotificationWithCompletionSEL =
517
- NSSelectorFromString(kGULDidReceiveRemoteNotificationWithCompletionSEL);
518
- SEL didReceiveRemoteNotificationWithCompletionDonorSEL =
519
- @selector(application:donor_didReceiveRemoteNotification:fetchCompletionHandler:);
520
- if ([appDelegate respondsToSelector:didReceiveRemoteNotificationWithCompletionSEL]) {
521
- // Only add the application:didReceiveRemoteNotification:fetchCompletionHandler: method if
522
- // the original AppDelegate implements it.
523
- // This fixes a bug if an app only implements application:didReceiveRemoteNotification:
524
- // (if we add the method with completion, iOS sees that one exists and does not call
525
- // the method without the completion, which in this case is the only one the app implements).
526
-
527
- [self proxyDestinationSelector:didReceiveRemoteNotificationWithCompletionSEL
528
- implementationsFromSourceSelector:didReceiveRemoteNotificationWithCompletionDonorSEL
529
- fromClass:[GULAppDelegateSwizzler class]
530
- toClass:appDelegateSubClass
531
- realClass:realClass
532
- storeDestinationImplementationTo:realImplementationsBySelector];
533
- }
534
- #endif // !TARGET_OS_WATCH && !TARGET_OS_OSX
535
- }
536
-
537
- /// We have to do this to invalidate the cache that caches the original respondsToSelector of
538
- /// openURL handlers. Without this, it won't call the default implementations because the system
539
- /// checks and caches them.
540
- /// Register KVO only once. Otherwise, the observing method will be called as many times as
541
- /// being registered.
542
- + (void)reassignAppDelegate {
543
- #if !TARGET_OS_WATCH
544
- id<GULApplicationDelegate> delegate = [self sharedApplication].delegate;
545
- [self sharedApplication].delegate = nil;
546
- [self sharedApplication].delegate = delegate;
547
- gOriginalAppDelegate = delegate;
548
- [[GULAppDelegateObserver sharedInstance] observeUIApplication];
549
- #endif
550
- }
551
-
552
- #pragma mark - Helper methods
553
-
554
- + (GULMutableDictionary *)interceptors {
555
- static dispatch_once_t onceToken;
556
- static GULMutableDictionary *sInterceptors;
557
- dispatch_once(&onceToken, ^{
558
- sInterceptors = [[GULMutableDictionary alloc] init];
559
- });
560
- return sInterceptors;
561
- }
562
-
563
- + (nullable NSValue *)originalImplementationForSelector:(SEL)selector object:(id)object {
564
- NSDictionary *realImplementationBySelector =
565
- objc_getAssociatedObject(object, &kGULRealIMPBySelectorKey);
566
- return realImplementationBySelector[NSStringFromSelector(selector)];
567
- }
568
-
569
- + (void)proxyDestinationSelector:(SEL)destinationSelector
570
- implementationsFromSourceSelector:(SEL)sourceSelector
571
- fromClass:(Class)sourceClass
572
- toClass:(Class)destinationClass
573
- realClass:(Class)realClass
574
- storeDestinationImplementationTo:
575
- (NSMutableDictionary<NSString *, NSValue *> *)destinationImplementationsBySelector {
576
- [self addInstanceMethodWithDestinationSelector:destinationSelector
577
- withImplementationFromSourceSelector:sourceSelector
578
- fromClass:sourceClass
579
- toClass:destinationClass];
580
- IMP sourceImplementation =
581
- [GULAppDelegateSwizzler implementationOfMethodSelector:destinationSelector
582
- fromClass:realClass];
583
- NSValue *sourceImplementationPointer = [NSValue valueWithPointer:sourceImplementation];
584
-
585
- NSString *destinationSelectorString = NSStringFromSelector(destinationSelector);
586
- destinationImplementationsBySelector[destinationSelectorString] = sourceImplementationPointer;
587
- }
588
-
589
- /** Copies a method identified by the methodSelector from one class to the other. After this method
590
- * is called, performing [toClassInstance methodSelector] will be similar to calling
591
- * [fromClassInstance methodSelector]. This method does nothing if toClass already has a method
592
- * identified by methodSelector.
593
- *
594
- * @param methodSelector The SEL that identifies both the method on the fromClass as well as the
595
- * one on the toClass.
596
- * @param fromClass The class from which a method is sourced.
597
- * @param toClass The class to which the method is added. If the class already has a method with
598
- * the same selector, this has no effect.
599
- */
600
- + (void)addInstanceMethodWithSelector:(SEL)methodSelector
601
- fromClass:(Class)fromClass
602
- toClass:(Class)toClass {
603
- [self addInstanceMethodWithDestinationSelector:methodSelector
604
- withImplementationFromSourceSelector:methodSelector
605
- fromClass:fromClass
606
- toClass:toClass];
607
- }
608
-
609
- /** Copies a method identified by the sourceSelector from the fromClass as a method for the
610
- * destinationSelector on the toClass. After this method is called, performing
611
- * [toClassInstance destinationSelector] will be similar to calling
612
- * [fromClassInstance sourceSelector]. This method does nothing if toClass already has a method
613
- * identified by destinationSelector.
614
- *
615
- * @param destinationSelector The SEL that identifies the method on the toClass.
616
- * @param sourceSelector The SEL that identifies the method on the fromClass.
617
- * @param fromClass The class from which a method is sourced.
618
- * @param toClass The class to which the method is added. If the class already has a method with
619
- * the same selector, this has no effect.
620
- */
621
- + (void)addInstanceMethodWithDestinationSelector:(SEL)destinationSelector
622
- withImplementationFromSourceSelector:(SEL)sourceSelector
623
- fromClass:(Class)fromClass
624
- toClass:(Class)toClass {
625
- Method method = class_getInstanceMethod(fromClass, sourceSelector);
626
- IMP methodIMP = method_getImplementation(method);
627
- const char *types = method_getTypeEncoding(method);
628
- if (!class_addMethod(toClass, destinationSelector, methodIMP, types)) {
629
- GULLogWarning(kGULLoggerSwizzler, NO,
630
- [NSString stringWithFormat:@"I-SWZ%06ld",
631
- (long)kGULSwizzlerMessageCodeAppDelegateSwizzling009],
632
- @"Cannot copy method to destination selector %@ as it already exists",
633
- NSStringFromSelector(destinationSelector));
634
- }
635
- }
636
-
637
- /** Gets the IMP of the instance method on the class identified by the selector.
638
- *
639
- * @param selector The selector of which the IMP is to be fetched.
640
- * @param aClass The class from which the IMP is to be fetched.
641
- * @return The IMP of the instance method identified by selector and aClass.
642
- */
643
- + (IMP)implementationOfMethodSelector:(SEL)selector fromClass:(Class)aClass {
644
- Method aMethod = class_getInstanceMethod(aClass, selector);
645
- return method_getImplementation(aMethod);
646
- }
647
-
648
- /** Enumerates through all the interceptors and if they respond to a given selector, executes a
649
- * GULAppDelegateInterceptorCallback with the interceptor.
650
- *
651
- * @param methodSelector The SEL to check if an interceptor responds to.
652
- * @param callback the GULAppDelegateInterceptorCallback.
653
- */
654
- + (void)notifyInterceptorsWithMethodSelector:(SEL)methodSelector
655
- callback:(GULAppDelegateInterceptorCallback)callback {
656
- if (!callback) {
657
- return;
658
- }
659
-
660
- NSDictionary *interceptors = [GULAppDelegateSwizzler interceptors].dictionary;
661
- [interceptors enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
662
- GULZeroingWeakContainer *interceptorContainer = obj;
663
- id interceptor = interceptorContainer.object;
664
- if (!interceptor) {
665
- GULLogWarning(
666
- kGULLoggerSwizzler, NO,
667
- [NSString
668
- stringWithFormat:@"I-SWZ%06ld", (long)kGULSwizzlerMessageCodeAppDelegateSwizzling010],
669
- @"AppDelegateProxy cannot find interceptor with ID %@. Removing the interceptor.", key);
670
- [[GULAppDelegateSwizzler interceptors] removeObjectForKey:key];
671
- return;
672
- }
673
- if ([interceptor respondsToSelector:methodSelector]) {
674
- callback(interceptor);
675
- }
676
- }];
677
- }
678
-
679
- // The methods below are donor methods which are added to the dynamic subclass of the App Delegate.
680
- // They are called within the scope of the real App Delegate so |self| does not refer to the
681
- // GULAppDelegateSwizzler instance but the real App Delegate instance.
682
-
683
- #pragma mark - [Donor Methods] Overridden instance description method
684
-
685
- - (NSString *)fakeDescription {
686
- Class realClass = objc_getAssociatedObject(self, &kGULRealClassKey);
687
- return [NSString stringWithFormat:@"<%@: %p>", realClass, self];
688
- }
689
-
690
- #pragma mark - [Donor Methods] URL overridden handler methods
691
- #if TARGET_OS_IOS || TARGET_OS_TV
692
-
693
- - (BOOL)application:(GULApplication *)application
694
- openURL:(NSURL *)url
695
- options:(NSDictionary<NSString *, id> *)options {
696
- SEL methodSelector = @selector(application:openURL:options:);
697
- // Call the real implementation if the real App Delegate has any.
698
- NSValue *openURLIMPPointer =
699
- [GULAppDelegateSwizzler originalImplementationForSelector:methodSelector object:self];
700
- GULRealOpenURLOptionsIMP openURLOptionsIMP = [openURLIMPPointer pointerValue];
701
-
702
- __block BOOL returnedValue = NO;
703
-
704
- // This is needed to for the library to be warning free on iOS versions < 9.
705
- #pragma clang diagnostic push
706
- #pragma clang diagnostic ignored "-Wunguarded-availability"
707
- [GULAppDelegateSwizzler
708
- notifyInterceptorsWithMethodSelector:methodSelector
709
- callback:^(id<GULApplicationDelegate> interceptor) {
710
- returnedValue |= [interceptor application:application
711
- openURL:url
712
- options:options];
713
- }];
714
- #pragma clang diagnostic pop
715
- if (openURLOptionsIMP) {
716
- returnedValue |= openURLOptionsIMP(self, methodSelector, application, url, options);
717
- }
718
- return returnedValue;
719
- }
720
-
721
- #endif // TARGET_OS_IOS || TARGET_OS_TV
722
-
723
- #if TARGET_OS_IOS
724
-
725
- - (BOOL)application:(GULApplication *)application
726
- openURL:(NSURL *)url
727
- sourceApplication:(NSString *)sourceApplication
728
- annotation:(id)annotation {
729
- SEL methodSelector = @selector(application:openURL:sourceApplication:annotation:);
730
-
731
- // Call the real implementation if the real App Delegate has any.
732
- NSValue *openURLSourceAppAnnotationIMPPointer =
733
- [GULAppDelegateSwizzler originalImplementationForSelector:methodSelector object:self];
734
- GULRealOpenURLSourceApplicationAnnotationIMP openURLSourceApplicationAnnotationIMP =
735
- [openURLSourceAppAnnotationIMPPointer pointerValue];
736
-
737
- __block BOOL returnedValue = NO;
738
- [GULAppDelegateSwizzler
739
- notifyInterceptorsWithMethodSelector:methodSelector
740
- callback:^(id<GULApplicationDelegate> interceptor) {
741
- #pragma clang diagnostic push
742
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
743
- returnedValue |= [interceptor application:application
744
- openURL:url
745
- sourceApplication:sourceApplication
746
- annotation:annotation];
747
- #pragma clang diagnostic pop
748
- }];
749
- if (openURLSourceApplicationAnnotationIMP) {
750
- returnedValue |= openURLSourceApplicationAnnotationIMP(self, methodSelector, application, url,
751
- sourceApplication, annotation);
752
- }
753
- return returnedValue;
754
- }
755
-
756
- #endif // TARGET_OS_IOS
757
-
758
- #pragma mark - [Donor Methods] Network overridden handler methods
759
-
760
- #if TARGET_OS_IOS || TARGET_OS_TV
761
-
762
- #pragma clang diagnostic push
763
- #pragma clang diagnostic ignored "-Wstrict-prototypes"
764
- - (void)application:(GULApplication *)application
765
- handleEventsForBackgroundURLSession:(NSString *)identifier
766
- completionHandler:(void (^)())completionHandler API_AVAILABLE(ios(7.0)) {
767
- #pragma clang diagnostic pop
768
- SEL methodSelector = @selector(application:
769
- handleEventsForBackgroundURLSession:completionHandler:);
770
- NSValue *handleBackgroundSessionPointer =
771
- [GULAppDelegateSwizzler originalImplementationForSelector:methodSelector object:self];
772
- GULRealHandleEventsForBackgroundURLSessionIMP handleBackgroundSessionIMP =
773
- [handleBackgroundSessionPointer pointerValue];
774
-
775
- // Notify interceptors.
776
- [GULAppDelegateSwizzler
777
- notifyInterceptorsWithMethodSelector:methodSelector
778
- callback:^(id<GULApplicationDelegate> interceptor) {
779
- [interceptor application:application
780
- handleEventsForBackgroundURLSession:identifier
781
- completionHandler:completionHandler];
782
- }];
783
- // Call the real implementation if the real App Delegate has any.
784
- if (handleBackgroundSessionIMP) {
785
- handleBackgroundSessionIMP(self, methodSelector, application, identifier, completionHandler);
786
- }
787
- }
788
-
789
- #endif // TARGET_OS_IOS || TARGET_OS_TV
790
-
791
- #pragma mark - [Donor Methods] User Activities overridden handler methods
792
-
793
- - (BOOL)application:(GULApplication *)application
794
- continueUserActivity:(NSUserActivity *)userActivity
795
- restorationHandler:(void (^)(NSArray *restorableObjects))restorationHandler {
796
- SEL methodSelector = @selector(application:continueUserActivity:restorationHandler:);
797
- NSValue *continueUserActivityIMPPointer =
798
- [GULAppDelegateSwizzler originalImplementationForSelector:methodSelector object:self];
799
- GULRealContinueUserActivityIMP continueUserActivityIMP =
800
- continueUserActivityIMPPointer.pointerValue;
801
-
802
- __block BOOL returnedValue = NO;
803
- #if !TARGET_OS_WATCH
804
- [GULAppDelegateSwizzler
805
- notifyInterceptorsWithMethodSelector:methodSelector
806
- callback:^(id<GULApplicationDelegate> interceptor) {
807
- returnedValue |= [interceptor application:application
808
- continueUserActivity:userActivity
809
- restorationHandler:restorationHandler];
810
- }];
811
- #endif
812
- // Call the real implementation if the real App Delegate has any.
813
- if (continueUserActivityIMP) {
814
- returnedValue |= continueUserActivityIMP(self, methodSelector, application, userActivity,
815
- restorationHandler);
816
- }
817
- return returnedValue;
818
- }
819
-
820
- #pragma mark - [Donor Methods] Remote Notifications
821
-
822
- - (void)application:(GULApplication *)application
823
- donor_didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
824
- SEL methodSelector = NSSelectorFromString(kGULDidRegisterForRemoteNotificationsSEL);
825
-
826
- NSValue *didRegisterForRemoteNotificationsIMPPointer =
827
- [GULAppDelegateSwizzler originalImplementationForSelector:methodSelector object:self];
828
- GULRealDidRegisterForRemoteNotificationsIMP didRegisterForRemoteNotificationsIMP =
829
- [didRegisterForRemoteNotificationsIMPPointer pointerValue];
830
-
831
- // Notify interceptors.
832
- [GULAppDelegateSwizzler
833
- notifyInterceptorsWithMethodSelector:methodSelector
834
- callback:^(id<GULApplicationDelegate> interceptor) {
835
- NSInvocation *invocation = [GULAppDelegateSwizzler
836
- appDelegateInvocationForSelector:methodSelector];
837
- [invocation setTarget:interceptor];
838
- [invocation setSelector:methodSelector];
839
- [invocation setArgument:(void *)(&application) atIndex:2];
840
- [invocation setArgument:(void *)(&deviceToken) atIndex:3];
841
- [invocation invoke];
842
- }];
843
- // Call the real implementation if the real App Delegate has any.
844
- if (didRegisterForRemoteNotificationsIMP) {
845
- didRegisterForRemoteNotificationsIMP(self, methodSelector, application, deviceToken);
846
- }
847
- }
848
-
849
- - (void)application:(GULApplication *)application
850
- donor_didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
851
- SEL methodSelector = NSSelectorFromString(kGULDidFailToRegisterForRemoteNotificationsSEL);
852
- NSValue *didFailToRegisterForRemoteNotificationsIMPPointer =
853
- [GULAppDelegateSwizzler originalImplementationForSelector:methodSelector object:self];
854
- GULRealDidFailToRegisterForRemoteNotificationsIMP didFailToRegisterForRemoteNotificationsIMP =
855
- [didFailToRegisterForRemoteNotificationsIMPPointer pointerValue];
856
-
857
- // Notify interceptors.
858
- [GULAppDelegateSwizzler
859
- notifyInterceptorsWithMethodSelector:methodSelector
860
- callback:^(id<GULApplicationDelegate> interceptor) {
861
- NSInvocation *invocation = [GULAppDelegateSwizzler
862
- appDelegateInvocationForSelector:methodSelector];
863
- [invocation setTarget:interceptor];
864
- [invocation setSelector:methodSelector];
865
- [invocation setArgument:(void *)(&application) atIndex:2];
866
- [invocation setArgument:(void *)(&error) atIndex:3];
867
- [invocation invoke];
868
- }];
869
- // Call the real implementation if the real App Delegate has any.
870
- if (didFailToRegisterForRemoteNotificationsIMP) {
871
- didFailToRegisterForRemoteNotificationsIMP(self, methodSelector, application, error);
872
- }
873
- }
874
-
875
- #if !TARGET_OS_WATCH && !TARGET_OS_OSX
876
- - (void)application:(GULApplication *)application
877
- donor_didReceiveRemoteNotification:(NSDictionary *)userInfo
878
- fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
879
- SEL methodSelector = NSSelectorFromString(kGULDidReceiveRemoteNotificationWithCompletionSEL);
880
- NSValue *didReceiveRemoteNotificationWithCompletionIMPPointer =
881
- [GULAppDelegateSwizzler originalImplementationForSelector:methodSelector object:self];
882
- GULRealDidReceiveRemoteNotificationWithCompletionIMP
883
- didReceiveRemoteNotificationWithCompletionIMP =
884
- [didReceiveRemoteNotificationWithCompletionIMPPointer pointerValue];
885
-
886
- dispatch_group_t __block callbackGroup = dispatch_group_create();
887
- NSMutableArray<NSNumber *> *__block fetchResults = [NSMutableArray array];
888
-
889
- void (^localCompletionHandler)(UIBackgroundFetchResult) =
890
- ^void(UIBackgroundFetchResult fetchResult) {
891
- [fetchResults addObject:[NSNumber numberWithInt:(int)fetchResult]];
892
- dispatch_group_leave(callbackGroup);
893
- };
894
-
895
- // Notify interceptors.
896
- [GULAppDelegateSwizzler
897
- notifyInterceptorsWithMethodSelector:methodSelector
898
- callback:^(id<GULApplicationDelegate> interceptor) {
899
- dispatch_group_enter(callbackGroup);
900
-
901
- NSInvocation *invocation = [GULAppDelegateSwizzler
902
- appDelegateInvocationForSelector:methodSelector];
903
- [invocation setTarget:interceptor];
904
- [invocation setSelector:methodSelector];
905
- [invocation setArgument:(void *)(&application) atIndex:2];
906
- [invocation setArgument:(void *)(&userInfo) atIndex:3];
907
- [invocation setArgument:(void *)(&localCompletionHandler)
908
- atIndex:4];
909
- [invocation invoke];
910
- }];
911
- // Call the real implementation if the real App Delegate has any.
912
- if (didReceiveRemoteNotificationWithCompletionIMP) {
913
- dispatch_group_enter(callbackGroup);
914
-
915
- didReceiveRemoteNotificationWithCompletionIMP(self, methodSelector, application, userInfo,
916
- localCompletionHandler);
917
- }
918
-
919
- dispatch_group_notify(callbackGroup, dispatch_get_main_queue(), ^() {
920
- BOOL allFetchesFailed = YES;
921
- BOOL anyFetchHasNewData = NO;
922
-
923
- for (NSNumber *oneResult in fetchResults) {
924
- UIBackgroundFetchResult result = oneResult.intValue;
925
-
926
- switch (result) {
927
- case UIBackgroundFetchResultNoData:
928
- allFetchesFailed = NO;
929
- break;
930
- case UIBackgroundFetchResultNewData:
931
- allFetchesFailed = NO;
932
- anyFetchHasNewData = YES;
933
- break;
934
- case UIBackgroundFetchResultFailed:
935
-
936
- break;
937
- }
938
- }
939
-
940
- UIBackgroundFetchResult finalFetchResult = UIBackgroundFetchResultNoData;
941
-
942
- if (allFetchesFailed) {
943
- finalFetchResult = UIBackgroundFetchResultFailed;
944
- } else if (anyFetchHasNewData) {
945
- finalFetchResult = UIBackgroundFetchResultNewData;
946
- } else {
947
- finalFetchResult = UIBackgroundFetchResultNoData;
948
- }
949
-
950
- completionHandler(finalFetchResult);
951
- });
952
- }
953
- #endif // !TARGET_OS_WATCH && !TARGET_OS_OSX
954
-
955
- - (void)application:(GULApplication *)application
956
- donor_didReceiveRemoteNotification:(NSDictionary *)userInfo {
957
- SEL methodSelector = NSSelectorFromString(kGULDidReceiveRemoteNotificationSEL);
958
- NSValue *didReceiveRemoteNotificationIMPPointer =
959
- [GULAppDelegateSwizzler originalImplementationForSelector:methodSelector object:self];
960
- GULRealDidReceiveRemoteNotificationIMP didReceiveRemoteNotificationIMP =
961
- [didReceiveRemoteNotificationIMPPointer pointerValue];
962
-
963
- // Notify interceptors.
964
- #pragma clang diagnostic push
965
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
966
- [GULAppDelegateSwizzler
967
- notifyInterceptorsWithMethodSelector:methodSelector
968
- callback:^(id<GULApplicationDelegate> interceptor) {
969
- NSInvocation *invocation = [GULAppDelegateSwizzler
970
- appDelegateInvocationForSelector:methodSelector];
971
- [invocation setTarget:interceptor];
972
- [invocation setSelector:methodSelector];
973
- [invocation setArgument:(void *)(&application) atIndex:2];
974
- [invocation setArgument:(void *)(&userInfo) atIndex:3];
975
- [invocation invoke];
976
- }];
977
- #pragma clang diagnostic pop
978
- // Call the real implementation if the real App Delegate has any.
979
- if (didReceiveRemoteNotificationIMP) {
980
- didReceiveRemoteNotificationIMP(self, methodSelector, application, userInfo);
981
- }
982
- }
983
-
984
- + (nullable NSInvocation *)appDelegateInvocationForSelector:(SEL)selector {
985
- struct objc_method_description methodDescription =
986
- protocol_getMethodDescription(@protocol(GULApplicationDelegate), selector, NO, YES);
987
- if (methodDescription.types == NULL) {
988
- return nil;
989
- }
990
-
991
- NSMethodSignature *signature = [NSMethodSignature signatureWithObjCTypes:methodDescription.types];
992
- return [NSInvocation invocationWithMethodSignature:signature];
993
- }
994
-
995
- + (void)proxyAppDelegate:(id<GULApplicationDelegate>)appDelegate {
996
- if (![appDelegate conformsToProtocol:@protocol(GULApplicationDelegate)]) {
997
- GULLogNotice(
998
- kGULLoggerSwizzler, NO,
999
- [NSString
1000
- stringWithFormat:@"I-SWZ%06ld",
1001
- (long)kGULSwizzlerMessageCodeAppDelegateSwizzlingInvalidAppDelegate],
1002
- @"App Delegate does not conform to UIApplicationDelegate protocol. %@",
1003
- [GULAppDelegateSwizzler correctAlternativeWhenAppDelegateProxyNotCreated]);
1004
- return;
1005
- }
1006
-
1007
- id<GULApplicationDelegate> originalDelegate = appDelegate;
1008
- // Do not create a subclass if it is not enabled.
1009
- if (![GULAppDelegateSwizzler isAppDelegateProxyEnabled]) {
1010
- GULLogNotice(kGULLoggerSwizzler, NO,
1011
- [NSString stringWithFormat:@"I-SWZ%06ld",
1012
- (long)kGULSwizzlerMessageCodeAppDelegateSwizzling011],
1013
- @"App Delegate Proxy is disabled. %@",
1014
- [GULAppDelegateSwizzler correctAlternativeWhenAppDelegateProxyNotCreated]);
1015
- return;
1016
- }
1017
- // Do not accept nil delegate.
1018
- if (!originalDelegate) {
1019
- GULLogError(kGULLoggerSwizzler, NO,
1020
- [NSString stringWithFormat:@"I-SWZ%06ld",
1021
- (long)kGULSwizzlerMessageCodeAppDelegateSwizzling012],
1022
- @"Cannot create App Delegate Proxy because App Delegate instance is nil. %@",
1023
- [GULAppDelegateSwizzler correctAlternativeWhenAppDelegateProxyNotCreated]);
1024
- return;
1025
- }
1026
-
1027
- @try {
1028
- gOriginalAppDelegateClass = [originalDelegate class];
1029
- gAppDelegateSubclass = [self createSubclassWithObject:originalDelegate];
1030
- [self reassignAppDelegate];
1031
- } @catch (NSException *exception) {
1032
- GULLogError(kGULLoggerSwizzler, NO,
1033
- [NSString stringWithFormat:@"I-SWZ%06ld",
1034
- (long)kGULSwizzlerMessageCodeAppDelegateSwizzling013],
1035
- @"Cannot create App Delegate Proxy. %@",
1036
- [GULAppDelegateSwizzler correctAlternativeWhenAppDelegateProxyNotCreated]);
1037
- return;
1038
- }
1039
- }
1040
-
1041
- #pragma mark - Methods to print correct debug logs
1042
-
1043
- + (NSString *)correctAppDelegateProxyKey {
1044
- return NSClassFromString(@"FIRCore") ? kGULFirebaseAppDelegateProxyEnabledPlistKey
1045
- : kGULGoogleUtilitiesAppDelegateProxyEnabledPlistKey;
1046
- }
1047
-
1048
- + (NSString *)correctAlternativeWhenAppDelegateProxyNotCreated {
1049
- return NSClassFromString(@"FIRCore")
1050
- ? @"To log deep link campaigns manually, call the methods in "
1051
- @"FIRAnalytics+AppDelegate.h."
1052
- : @"";
1053
- }
1054
-
1055
- #pragma mark - Private Methods for Testing
1056
-
1057
- + (void)clearInterceptors {
1058
- [[self interceptors] removeAllObjects];
1059
- }
1060
-
1061
- + (void)resetProxyOriginalDelegateOnceToken {
1062
- sProxyAppDelegateOnceToken = 0;
1063
- sProxyAppDelegateRemoteNotificationOnceToken = 0;
1064
- }
1065
-
1066
- + (id<GULApplicationDelegate>)originalDelegate {
1067
- return gOriginalAppDelegate;
1068
- }
1069
-
1070
- @end