|  | // Copyright 2017 The Chromium Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | #import "FirebaseAnalyticsPlugin.h" | 
|  |  | 
|  | #import "Firebase/Firebase.h" | 
|  |  | 
|  | @implementation FLTFirebaseAnalyticsPlugin { | 
|  | } | 
|  |  | 
|  | + (void)registerWithRegistrar:(NSObject<FlutterPluginRegistrar> *)registrar { | 
|  | FlutterMethodChannel *channel = | 
|  | [FlutterMethodChannel methodChannelWithName:@"plugins.flutter.io/firebase_analytics" | 
|  | binaryMessenger:[registrar messenger]]; | 
|  | FLTFirebaseAnalyticsPlugin *instance = [[FLTFirebaseAnalyticsPlugin alloc] init]; | 
|  | [registrar addMethodCallDelegate:instance channel:channel]; | 
|  | } | 
|  |  | 
|  | - (instancetype)init { | 
|  | self = [super init]; | 
|  | if (self) { | 
|  | if (![FIRApp appNamed:@"__FIRAPP_DEFAULT"]) { | 
|  | NSLog(@"Configuring the default Firebase app..."); | 
|  | [FIRApp configure]; | 
|  | NSLog(@"Configured the default Firebase app %@.", [FIRApp defaultApp].name); | 
|  | } | 
|  | } | 
|  | return self; | 
|  | } | 
|  |  | 
|  | - (void)handleMethodCall:(FlutterMethodCall *)call result:(FlutterResult)result { | 
|  | if ([@"logEvent" isEqualToString:call.method]) { | 
|  | NSString *eventName = call.arguments[@"name"]; | 
|  | id parameterMap = call.arguments[@"parameters"]; | 
|  |  | 
|  | if (parameterMap != [NSNull null]) { | 
|  | [FIRAnalytics logEventWithName:eventName parameters:parameterMap]; | 
|  | } else { | 
|  | [FIRAnalytics logEventWithName:eventName parameters:nil]; | 
|  | } | 
|  |  | 
|  | result(nil); | 
|  | } else if ([@"setUserId" isEqualToString:call.method]) { | 
|  | NSString *userId = call.arguments; | 
|  | [FIRAnalytics setUserID:userId]; | 
|  | result(nil); | 
|  | } else if ([@"setCurrentScreen" isEqualToString:call.method]) { | 
|  | NSString *screenName = call.arguments[@"screenName"]; | 
|  | NSString *screenClassOverride = call.arguments[@"screenClassOverride"]; | 
|  | [FIRAnalytics setScreenName:screenName screenClass:screenClassOverride]; | 
|  | result(nil); | 
|  | } else if ([@"setUserProperty" isEqualToString:call.method]) { | 
|  | NSString *name = call.arguments[@"name"]; | 
|  | NSString *value = call.arguments[@"value"]; | 
|  | [FIRAnalytics setUserPropertyString:value forName:name]; | 
|  | result(nil); | 
|  | } else if ([@"setAnalyticsCollectionEnabled" isEqualToString:call.method]) { | 
|  | NSNumber *enabled = [NSNumber numberWithBool:call.arguments]; | 
|  | [[FIRAnalyticsConfiguration sharedInstance] setAnalyticsCollectionEnabled:[enabled boolValue]]; | 
|  | result(nil); | 
|  | } else if ([@"resetAnalyticsData" isEqualToString:call.method]) { | 
|  | [FIRAnalytics resetAnalyticsData]; | 
|  | result(nil); | 
|  | } else { | 
|  | result(FlutterMethodNotImplemented); | 
|  | } | 
|  | } | 
|  |  | 
|  | @end |