blob: b8e5413a6ea1af11d6138dd4f61ce529bd251b11 [file] [log] [blame]
// 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];
[FIRAnalytics setAnalyticsCollectionEnabled:[enabled boolValue]];
result(nil);
} else if ([@"resetAnalyticsData" isEqualToString:call.method]) {
[FIRAnalytics resetAnalyticsData];
result(nil);
} else {
result(FlutterMethodNotImplemented);
}
}
@end