import { Injectable } from '@angular/core'; import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core'; export interface Attributes { [index: string]: String; } /** * @name Crashlytics * @description * API for interacting with the Crashlytics kit. * * https://docs.fabric.io/crashlytics/index.html * * @usage * ```typescript * import { Crashlytics } from '@ionic-native/fabric'; * * * constructor(private crashlytics: Crashlytics) { } * * ... * * try { * await this.loadData(); * } catch (e) { * this.crashlytics.addLog("Error while loading data"); * this.crashlytics.sendNonFatalCrash(e.message || e); * } * * ``` */ @Plugin({ pluginName: 'Crashlytics', plugin: 'cordova-fabric-plugin', pluginRef: 'window.fabric.Crashlytics', repo: 'https://www.npmjs.com/package/cordova-fabric-plugin', install: 'ionic cordova plugin add cordova-fabric-plugin --variable FABRIC_API_KEY=XXX --variable FABRIC_API_SECRET=xxx', installVariables: ['FABRIC_API_KEY', 'FABRIC_API_SECRET'], platforms: ['Android', 'iOS'] }) @Injectable() export class Crashlytics extends IonicNativePlugin { /** * Add logging that will be sent with your crash data. This logging will not show up * in the system.log and will only be visible in your Crashlytics dashboard. * @param message {string} */ @Cordova({ sync: true }) addLog(message: string): void { return; } /** * Used to simulate a native platform crash (useful for testing Crashlytics logging). */ @Cordova({ sync: true }) sendCrash(): void { return; } /** * Used to log a non-fatal error message (Android only). */ @Cordova({ sync: true }) sendNonFatalCrash(message: string, stacktrace?: any): void { return; } /** * Used to record a non-fatal error message (iOS only). */ @Cordova({ sync: true }) recordError(message: string, code: number): void { return; } /** * Sets the user's identifier for logging to Crashlytics backend. */ @Cordova({ sync: true }) setUserIdentifier(userId: string): void { return; } /** * Sets the user's name for logging to Crashlytics backend. */ @Cordova({ sync: true }) setUserName(userName: string): void { return; } /** * Sets the user's email address for logging to Crashlytics backend. */ @Cordova({ sync: true }) setUserEmail(email: string): void { return; } /** * Sets a custom key/value pair for logging to Crashlytics backend. */ @Cordova({ sync: true }) setStringValueForKey(value: string, key: string): void { return; } /** * Sets a custom key/value pair for logging to Crashlytics backend. */ @Cordova({ sync: true }) setIntValueForKey(value: number, key: string): void { return; } /** * Sets a custom key/value pair for logging to Crashlytics backend. */ @Cordova({ sync: true }) setBoolValueForKey(value: boolean, key: string): void { return; } /** * Sets a custom key/value pair for logging to Crashlytics backend. */ @Cordova({ sync: true }) setFloatValueForKey(value: number, key: string): void { return; } } /** * @name Answers * @description * API for interacting with the Answers kit. * * https://docs.fabric.io/crashlytics/index.html * * @usage * ```typescript * import { Answers } from '@ionic-native/fabric'; * * * constructor(private answers: Answers) { } * * ... * * this.answers.sendCustomEvent('SomeCustomEvent', { some: "attributes" }) * * ``` */ @Plugin({ pluginName: 'Answers', plugin: 'cordova-fabric-plugin', pluginRef: 'window.fabric.Answers', repo: 'https://www.npmjs.com/package/cordova-fabric-plugin', install: 'ionic cordova plugin add cordova-fabric-plugin --variable FABRIC_API_KEY=XXX --variable FABRIC_API_SECRET=xxx', installVariables: ['FABRIC_API_KEY', 'FABRIC_API_SECRET'], platforms: ['Android', 'iOS'] }) @Injectable() export class Answers extends IonicNativePlugin { /** * Sends the Purchase tracking event. * * All parameters are optional. * * https://docs.fabric.io/android/answers/answers-events.html#purchase * * @param itemPrice The item's amount in the currency specified. * @param currency The ISO4217 currency code. * @param success Was the purchase completed succesfully? * @param itemName The human-readable name for the item. * @param itemType The category the item falls under. * @param itemId A unique identifier used to track the item. * @param attributes Any additional user-defined attributes to be logged. */ @Cordova({ sync: true }) sendPurchase( itemPrice?: number, currency?: string, success?: boolean, itemName?: string, itemType?: string, itemId?: string, attributes?: Attributes ): void { return; } /** * Sends the Add To Cart tracking event. * * All parameters are optional. * * https://docs.fabric.io/android/answers/answers-events.html#add-to-cart * * @param itemPrice The item's amount in the currency specified. * @param currency The ISO4217 currency code. * @param itemName The human-readable name for the item. * @param itemType The category the item falls under. * @param itemId A unique identifier used to track the item. * @param attributes Any additional user-defined attributes to be logged. */ @Cordova({ sync: true }) sendAddToCart( itemPrice?: number, currency?: string, itemName?: string, itemType?: string, itemId?: string, attributes?: Attributes ): void { return; } /** * Sends the Start Checkout tracking event. * * All parameters are optional. * * https://docs.fabric.io/android/answers/answers-events.html#start-checkout * * @param totalPrice The total price of all items in cart in the currency specified. * @param currency The ISO4217 currency code. * @param itemCount The count of items in cart. * @param attributes Any additional user-defined attributes to be logged. */ @Cordova({ sync: true }) sendStartCheckout( totalPrice?: number, currency?: string, itemCount?: number, attributes?: Attributes ): void { return; } /** * Sends the Search tracking event. * * https://docs.fabric.io/android/answers/answers-events.html#search * * @param query What the user is searching for. * @param attributes Any additional user-defined attributes to be logged. */ @Cordova({ sync: true }) sendSearch(query: string, attributes?: Attributes): void { return; } /** * Sends the Share tracking event. * * All parameters are optional. * * https://docs.fabric.io/android/answers/answers-events.html#share * * @param method The method used to share content. * @param contentName The description of the content. * @param contentType The type or genre of content. * @param contentId A unique key identifying the content. * @param attributes Any additional user-defined attributes to be logged. */ @Cordova({ sync: true }) sendShare( method?: string, contentName?: string, contentType?: string, contentId?: string, attributes?: Attributes ): void { return; } /** * Sends the Rated Content tracking event. * * All parameters are optional. * * https://docs.fabric.io/android/answers/answers-events.html#rated-content * * @param rating An integer rating of the content. * @param contentName The human-readable name of content. * @param contentType The category your item falls under. * @param contentId A unique identifier used to track the item. * @param attributes Any additional user-defined attributes to be logged. */ @Cordova({ sync: true }) sendRatedContent( rating?: number, contentName?: string, contentType?: string, contentId?: string, attributes?: Attributes ): void { return; } /** * Sends the Sign Up tracking event. * * All parameters are optional. * * https://docs.fabric.io/android/answers/answers-events.html#sign-up * * @param method An optional description of the sign up method (Twitter, Facebook, etc.); defaults to "Direct". * @param success An optional flag that indicates sign up success; defaults to true. * @param attributes Any additional user-defined attributes to be logged. */ @Cordova({ sync: true }) sendSignUp( method?: string, success?: boolean, attributes?: Attributes ): void { return; } /** * Sends the Log In tracking event. * * All parameters are optional. * * https://docs.fabric.io/android/answers/answers-events.html#log-in * * @param method An optional description of the sign in method (Twitter, Facebook, etc.); defaults to "Direct". * @param success An optional flag that indicates sign in success; defaults to true. * @param attributes Any additional user-defined attributes to be logged. */ @Cordova({ sync: true }) sendLogIn(method?: string, success?: boolean, attributes?: Attributes): void { return; } /** * Sends the Invite tracking event. * * All parameters are optional. * * https://docs.fabric.io/android/answers/answers-events.html#invite * * @param method An optional description of the sign in method (Twitter, Facebook, etc.); defaults to "Direct". * @param attributes Any additional user-defined attributes to be logged. */ @Cordova({ sync: true }) sendInvite(method?: string, attributes?: Attributes): void { return; } /** * Sends the Level Start tracking event. * * All parameters are optional. * * https://docs.fabric.io/android/answers/answers-events.html#level-start * * @param levelName String key describing the level. * @param attributes Any additional user-defined attributes to be logged. */ @Cordova({ sync: true }) sendLevelStart(levelName?: string, attributes?: Attributes): void { return; } /** * Sends the Level End tracking event. * * All parameters are optional. * * https://docs.fabric.io/android/answers/answers-events.html#level-end * * @param levelName String key describing the level. * @param score The score for this level. * @param success Completed the level or failed trying. * @param attributes Any additional user-defined attributes to be logged. */ @Cordova({ sync: true }) sendLevelEnd( levelName?: string, score?: number, success?: boolean, attributes?: Attributes ): void { return; } /** * Send the Content View tracking event. * * https://docs.fabric.io/android/answers/answers-events.html#content-view */ @Cordova({ sync: true }) sendContentView( name: string, type?: string, id?: string, attributes?: Attributes ): void { return; } /** * Shortcut for sendContentView(...) using type of "Screen". */ @Cordova({ sync: true }) sendScreenView(name: string, id: string, attributes?: Attributes): void { return; } /** * Send a custom tracking event with the given name. * * https://docs.fabric.io/android/answers/answers-events.html#custom-event */ @Cordova({ sync: true }) sendCustomEvent(name: string, attributes?: Attributes): void { return; } }