{"id":15368041,"url":"https://github.com/anonrig/provider-manager","last_synced_at":"2026-04-13T07:04:09.514Z","repository":{"id":68448842,"uuid":"294037604","full_name":"anonrig/provider-manager","owner":"anonrig","description":"Analytics Provider Manager","archived":false,"fork":false,"pushed_at":"2020-11-09T11:57:41.000Z","size":33,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-26T17:12:21.321Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/anonrig.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-09-09T07:34:25.000Z","updated_at":"2024-08-13T18:56:48.000Z","dependencies_parsed_at":"2023-02-25T17:15:37.206Z","dependency_job_id":null,"html_url":"https://github.com/anonrig/provider-manager","commit_stats":{"total_commits":11,"total_committers":2,"mean_commits":5.5,"dds":0.09090909090909094,"last_synced_commit":"0a2ebc862f74923143f8ddb76bb204d150ce2e72"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anonrig%2Fprovider-manager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anonrig%2Fprovider-manager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anonrig%2Fprovider-manager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anonrig%2Fprovider-manager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/anonrig","download_url":"https://codeload.github.com/anonrig/provider-manager/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244879056,"owners_count":20525348,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-01T13:27:59.868Z","updated_at":"2026-04-13T07:04:04.484Z","avatar_url":"https://github.com/anonrig.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ProviderManager\n\nAnalytics provider manager for iOS. Supports Adjust, Mixpanel, Firebase, Sentry, UXCam.\n\n## Initialization\n\n```swift\nfinal class AnalyticsManager {\n  \n  static let shared = ProviderManager()\n  \n  private let providers: [AnalyticsProvider] = [\n    AdjustProvider(.init(token: \"TOKEN\",\n                         environment: .sandbox,\n                         appSecret: .init(secretId: 1,\n                                          info1: 2,\n                                          info2: 3,\n                                          info3: 4,\n                                          info4: 5))),\n    FirebaseProvider(),\n    MixpanelProvider(.init(token: \"MIXPANEL TOKEN\")),\n    SentryProvider(.init(dsn: \"DSN URL\"))\n  ]\n  \n  init() {\n    providers.forEach {\n      AnalyticsManager.shared.addProvider(provider: $0)\n    }\n  }\n}\n```\n\n## Initialize Events\n\n```swift\nextension AnalyticsManager {\n  \n  enum Event: String {\n    case pushToken\n    case purchase\n    \n    var identifier: String? {\n      switch self {\n      case .purchase:\n        return \"PURCHASE EVENT\"\n      default:\n        return nil\n      }\n    }\n  }\n  \n  enum Screen: String {\n    case today\n  }\n}\n```\n\n## Definitions\n\n```swift\nextension AnalyticsManager {\n  \n  static func track(event: Event, properties: Properties? = nil) {\n    AnalyticsManager.shared.event(name: event.rawValue, properties: properties)\n  }\n  \n  static func track(screen: Screen, properties: Properties? = nil) {\n    AnalyticsManager.shared.screen(name: screen.rawValue, properties: properties)\n  }\n  \n  static func time(event: Event, properties: Properties? = nil) {\n    AnalyticsManager.shared.time(name: event.rawValue, properties: properties)\n  }\n  \n  static func finish(event: Event, properties: Properties? = nil) {\n    AnalyticsManager.shared.finish(name: event.rawValue, properties: properties)\n  }\n}\n```\n\n## Tracking Example\n\n```swift\nvar properties = [\n  Property.Purchase.currency.rawValue: purchase.product.priceLocale.currencyCode ?? \"USD\",\n  Property.Purchase.price.rawValue: purchase.product.price,\n  Property.Purchase.sku.rawValue: purchase.product.productIdentifier,\n  Property.Purchase.transactionId.rawValue: purchase.originalTransaction?.transactionIdentifier\n]\n\nif let id = AnalyticsManager.Event.purchase.identifier {\n  // This is required for Adjust, since Adjust depends on event identifier.\n  properties[Property.identifier.rawValue] = id as Any\n}\n\nAnalyticsManager.track(event: .purchase, properties: properties)\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanonrig%2Fprovider-manager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fanonrig%2Fprovider-manager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanonrig%2Fprovider-manager/lists"}