blob: 2a8750af023f7568f6c87405694ae8d53fe4ef2e [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 defaultApp]) {
[FIRApp configure];
}
}
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 {
result(FlutterMethodNotImplemented);
}
}
@end