Skip to content

alkree/capacitor-appmetrica

 
 

Repository files navigation

Capacitor Appmetrica plugin npm version

Available methods:

  • activate()
  • pauseSession()
  • sendEventsBuffer()
  • resumeSession()
  • setLocationTracking()
  • setStatisticsSending()
  • setLocation()
  • reportAppOpen()
  • reportError()
  • reportEvent()
  • reportReferralUrl()
  • setUserProfileID()
  • getDeviceID()
  • reportUserProfile()

Angular usage example:

  1. In your module (e.g. app.module.ts)
...
import { Appmetrica } from 'capacitor-appmetrica'

@NgModule({
	...
	providers: [
		...
		Appmetrica,
	],
})
export class AppModule {}
  1. In your component or service (e.g. analytics.service.ts)
...
import { Appmetrica, UserProfile, ProfileAttribute } from 'capacitor-appmetrica'

@Injectable()
export class AnalyticsService {
	constructor(private appmetrica: Appmetrica) {}

	async initialization() {
		await this.appmetrica.activate("<SDK_API_KEY>", { logs: true })
	}

	async logEvent(name: string, params?: Object) {
		await this.appmetrica.logEvent(name, params)
	}

	async setUserProfileID(id: string) {
		return this.appmetrica.setUserProfileID(id)
	}

	async reportUserProfile() {
		const userProfile = new UserProfile()
		userProfile.applyFromArray([
			ProfileAttribute.Name().withValue('Ivan'),
			ProfileAttribute.BirthDate().withBirthDate(new Date()),
			ProfileAttribute.CustomString('born_in').withValueIfUndefined('Moscow'),
		])

		await this.appmetrica.reportUserProfile(userProfile)
	}

	async getDeviceID(): string {
		return this.appmetrica.getDeviceID()
	}
}

React usage example:

import { Appmetrica } from 'capacitor-appmetrica';

export function useAppmetrica() {
  return useRef(new Appmetrica());
}
import {
  Appmetrica,
  UserProfile,
  ProfileAttribute,
} from 'capacitor-appmetrica';

export default function App() {
  const appmetrica = useAppmetrica();

  const [deviceId, setDeviceId] = useState(null);

  useEffect(() => {
    appmetrica.activate('<SDK_API_KEY>', { logs: true });

    appmetrica.getDeviceID().then(deviceId => {
      setDeviceId(deviceId);
    });
  }, []);

  const onButtonClick = () => {
    appmetrica.logEvent('clickButton', { param: 10 });
  };

  const onProfileClick = async () => {
    await appmetrica.setUserProfileID('123');

    const userProfile = new UserProfile();
    userProfile.applyFromArray([
      ProfileAttribute.Name().withValue('Ivan'),
      ProfileAttribute.BirthDate().withBirthDate(new Date()),
      ProfileAttribute.CustomString('born_in').withValueIfUndefined('Moscow'),
    ]);

    await appmetrica.reportUserProfile(userProfile);
  };

  return (
    <div>
      deviceId: {deviceId}
      <button onClick={onButtonClick}>log event</button>
      <button onClick={onProfileClick}>set profile</button>
    </div>
  );
}

BREAKING CHANGES in 1.x.x

  1. Removed automatic initialization of Appmetrica, now you need to initialize it manually using the activate method

To migrate, remove the Appmetrica settings from the capacitor.config.json

{
	"plugins": {
		...
-		"Appmetrica": {
-			"apiKey": "Your API key"
-			...
-		},
		...
	}

and run the activate method when the application starts. For example:

ngOnInit() {
	this.appmetrica.activate("<API_KEY>", options)
}
  1. Added Android support

  2. Removed support for appmetrica push notifications

  3. Added full support for Capacitor 3 and removed compatibility with Capacitor 2

About

Capacior 5

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 38.9%
  • Swift 34.4%
  • TypeScript 20.2%
  • Objective-C 3.2%
  • Ruby 2.4%
  • JavaScript 0.9%