mirror of
https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
synced 2026-04-21 00:52:43 +02:00
Begin migration from Matomo to PostHog
Add CocoaPods-Keys.
This commit is contained in:
@@ -1,162 +0,0 @@
|
||||
/*
|
||||
Copyright 2018 New Vector Ltd
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
#import "Analytics.h"
|
||||
|
||||
#import "GeneratedInterface-Swift.h"
|
||||
|
||||
|
||||
NSString *const AnalyticsNoficationsCategory = @"notifications";
|
||||
NSString *const AnalyticsNoficationsTimeToDisplayContent = @"timelineDisplay";
|
||||
NSString *const AnalyticsContactsIdentityServerAccepted = @"identityServerAccepted";
|
||||
|
||||
|
||||
// Duration data will be visible under the Piwik category called "Performance".
|
||||
// Other values will be visible in "Metrics".
|
||||
// Some Matomo screenshots are available at https://github.com/vector-im/element-ios/pull/3789.
|
||||
NSString *const kAnalyticsPerformanceCategory = @"Performance";
|
||||
NSString *const kAnalyticsMetricsCategory = @"Metrics";
|
||||
|
||||
|
||||
@import MatomoTracker;
|
||||
|
||||
@interface Analytics ()
|
||||
{
|
||||
MatomoTracker *matomoTracker;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@implementation Analytics
|
||||
|
||||
+ (instancetype)sharedInstance
|
||||
{
|
||||
static Analytics *sharedInstance = nil;
|
||||
static dispatch_once_t onceToken;
|
||||
|
||||
dispatch_once(&onceToken, ^{
|
||||
sharedInstance = [[Analytics alloc] init];
|
||||
});
|
||||
|
||||
return sharedInstance;
|
||||
}
|
||||
|
||||
- (instancetype)init
|
||||
{
|
||||
self = [super init];
|
||||
if (self)
|
||||
{
|
||||
matomoTracker = [[MatomoTracker alloc] initWithSiteId:BuildSettings.analyticsAppId
|
||||
baseURL:BuildSettings.analyticsServerUrl
|
||||
userAgent:@"iOSMatomoTracker"];
|
||||
[self migrateFromFourPointFourSharedInstance];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)migrateFromFourPointFourSharedInstance
|
||||
{
|
||||
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"migratedFromFourPointFourSharedInstance"]) return;
|
||||
[matomoTracker copyFromOldSharedInstance];
|
||||
[[NSUserDefaults standardUserDefaults] setBool:true forKey:@"migratedFromFourPointFourSharedInstance"];
|
||||
}
|
||||
|
||||
- (void)start
|
||||
{
|
||||
// Check whether the user has enabled the sending of crash reports.
|
||||
if (RiotSettings.shared.enableCrashReport)
|
||||
{
|
||||
matomoTracker.isOptedOut = NO;
|
||||
|
||||
[matomoTracker setCustomVariableWithIndex:1 name:@"App Platform" value:@"iOS Platform"];
|
||||
[matomoTracker setCustomVariableWithIndex:2 name:@"App Version" value:[AppDelegate theDelegate].appVersion];
|
||||
|
||||
// The language is either the one selected by the user within the app
|
||||
// or, else, the one configured by the OS
|
||||
NSString *language = [NSBundle mxk_language] ? [NSBundle mxk_language] : [[NSBundle mainBundle] preferredLocalizations][0];
|
||||
[matomoTracker setCustomVariableWithIndex:4 name:@"Chosen Language" value:language];
|
||||
|
||||
MXKAccount* account = [MXKAccountManager sharedManager].activeAccounts.firstObject;
|
||||
if (account)
|
||||
{
|
||||
[matomoTracker setCustomVariableWithIndex:7 name:@"Homeserver URL" value:account.mxCredentials.homeServer];
|
||||
[matomoTracker setCustomVariableWithIndex:8 name:@"Identity Server URL" value:account.identityServerURL];
|
||||
}
|
||||
|
||||
// TODO: We should also track device and os version
|
||||
// But that needs to be decided for all platforms
|
||||
|
||||
// Catch and log crashes
|
||||
[MXLogger logCrashes:YES];
|
||||
[MXLogger setBuildVersion:[AppDelegate theDelegate].build];
|
||||
|
||||
#ifdef DEBUG
|
||||
// Disable analytics in debug as it pollutes stats
|
||||
matomoTracker.isOptedOut = YES;
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
MXLogDebug(@"[AppDelegate] The user decided to not send analytics");
|
||||
matomoTracker.isOptedOut = YES;
|
||||
[MXLogger logCrashes:NO];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)stop
|
||||
{
|
||||
matomoTracker.isOptedOut = YES;
|
||||
[MXLogger logCrashes:NO];
|
||||
}
|
||||
|
||||
- (void)trackScreen:(NSString *)screenName
|
||||
{
|
||||
// Use the same pattern as Android
|
||||
NSString *appName = [[NSBundle mainBundle] infoDictionary][@"CFBundleDisplayName"];
|
||||
NSString *appVersion = [AppDelegate theDelegate].appVersion;
|
||||
|
||||
[matomoTracker trackWithView:@[@"ios", appName, appVersion, screenName]
|
||||
url:nil];
|
||||
}
|
||||
|
||||
- (void)dispatch
|
||||
{
|
||||
[matomoTracker dispatch];
|
||||
}
|
||||
|
||||
#pragma mark - MXAnalyticsDelegate
|
||||
|
||||
- (void)trackDuration:(NSTimeInterval)seconds category:(NSString*)category name:(NSString*)name
|
||||
{
|
||||
// Report time in ms to make figures look better in Matomo
|
||||
NSNumber *value = @(seconds * 1000);
|
||||
[matomoTracker trackWithEventWithCategory:kAnalyticsPerformanceCategory
|
||||
action:category
|
||||
name:name
|
||||
number:value
|
||||
url:nil];
|
||||
}
|
||||
|
||||
- (void)trackValue:(NSNumber*)value category:(NSString*)category name:(NSString*)name
|
||||
{
|
||||
[matomoTracker trackWithEventWithCategory:kAnalyticsMetricsCategory
|
||||
action:category
|
||||
name:name
|
||||
number:value
|
||||
url:nil];
|
||||
}
|
||||
|
||||
@end
|
||||
Reference in New Issue
Block a user