2017-06-04 06:24:07 +08:00
|
|
|
import { Injectable } from '@angular/core';
|
2018-09-18 00:23:18 +08:00
|
|
|
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
|
2018-04-06 03:44:19 +08:00
|
|
|
import { Observable } from 'rxjs';
|
2017-06-04 06:24:07 +08:00
|
|
|
|
2018-02-03 00:40:01 +08:00
|
|
|
export interface IDynamicLink {
|
|
|
|
matchType: 'Weak' | 'Strong';
|
|
|
|
deepLink: string;
|
2017-06-04 06:24:07 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @beta
|
|
|
|
* @name Firebase Dynamic Links
|
|
|
|
* @description
|
2018-02-03 00:40:01 +08:00
|
|
|
* Cordova plugin for Firebase Dynamic Links
|
2017-06-04 06:24:07 +08:00
|
|
|
*
|
|
|
|
* Variables APP_DOMAIN and APP_PATH specify web URL where your app will start an activity to handle the link. They also used to setup support for App Indexing.
|
|
|
|
* Go to firebase console and export google-services.json and GoogleService-Info.plist. Put those files into the root of your cordova app folder.
|
|
|
|
*
|
|
|
|
* Preferences:
|
|
|
|
*
|
|
|
|
* Preferences GoogleIOSClientId and GoogleAndroidClientId are used to setup dynamic links when you have an app for several platforms.
|
|
|
|
* You can find values at your GoogleService-Info.plist (key ANDROID_CLIENT_ID) and google-services.json (key client[0].oauth_client[0].client_id).
|
|
|
|
*
|
2018-03-23 17:42:10 +08:00
|
|
|
* config.xml:
|
2017-06-04 06:24:07 +08:00
|
|
|
* ```xml
|
2018-06-23 00:13:47 +08:00
|
|
|
* <platform name="ios">
|
2017-06-04 06:24:07 +08:00
|
|
|
* <preference name="GoogleIOSClientId" value="..." />
|
|
|
|
* </platform>
|
2018-06-23 00:13:47 +08:00
|
|
|
* <platform name="android">
|
2017-06-04 06:24:07 +08:00
|
|
|
* <preference name="GoogleAndroidClientId" value="..." />
|
|
|
|
* </platform>
|
|
|
|
* ```
|
|
|
|
* @usage
|
|
|
|
* ```typescript
|
2018-10-11 05:13:45 +08:00
|
|
|
* import { FirebaseDynamicLinks } from '@ionic-native/firebase-dynamic-links/ngx';
|
2017-06-04 06:24:07 +08:00
|
|
|
*
|
|
|
|
*
|
|
|
|
* constructor(private firebaseDynamicLinks: FirebaseDynamicLinks) { }
|
|
|
|
*
|
|
|
|
* ...
|
2018-08-17 04:43:50 +08:00
|
|
|
* // Handle the logic here after opening the app with the Dynamic link
|
2017-07-04 05:31:02 +08:00
|
|
|
* this.firebaseDynamicLinks.onDynamicLink()
|
2018-08-17 04:43:50 +08:00
|
|
|
* .subscribe((res: any) => console.log(res), (error:any) => console.log(error));
|
2017-06-04 06:24:07 +08:00
|
|
|
* ```
|
|
|
|
*
|
|
|
|
* @interfaces
|
|
|
|
* DynamicLinksOptions
|
|
|
|
*/
|
|
|
|
@Plugin({
|
|
|
|
pluginName: 'FirebaseDynamicLinks',
|
|
|
|
plugin: ' cordova-plugin-firebase-dynamiclinks',
|
|
|
|
pluginRef: 'cordova.plugins.firebase.dynamiclinks',
|
|
|
|
repo: 'https://github.com/chemerisuk/cordova-plugin-firebase-dynamiclinks',
|
2018-04-06 03:44:19 +08:00
|
|
|
install:
|
|
|
|
'ionic cordova plugin add cordova-plugin-firebase-dynamiclinks --save --variable APP_DOMAIN="example.com" --variable APP_PATH="/"',
|
2017-06-04 06:24:07 +08:00
|
|
|
installVariables: ['APP_DOMAIN', 'APP_PATH'],
|
|
|
|
platforms: ['Android', 'iOS']
|
|
|
|
})
|
2019-02-21 00:37:39 +08:00
|
|
|
@Injectable()
|
2017-06-04 06:24:07 +08:00
|
|
|
export class FirebaseDynamicLinks extends IonicNativePlugin {
|
|
|
|
/**
|
|
|
|
* Registers callback that is triggered on each dynamic link click.
|
2018-02-03 00:40:01 +08:00
|
|
|
* @return {Observable<IDynamicLink>} Returns an observable
|
2017-06-04 06:24:07 +08:00
|
|
|
*/
|
2018-02-03 00:40:01 +08:00
|
|
|
@Cordova({
|
|
|
|
callbackOrder: 'reverse',
|
2018-04-06 03:44:19 +08:00
|
|
|
observable: true
|
2018-02-03 00:40:01 +08:00
|
|
|
})
|
2018-04-06 03:44:19 +08:00
|
|
|
onDynamicLink(): Observable<IDynamicLink> {
|
|
|
|
return;
|
|
|
|
}
|
2017-06-04 06:24:07 +08:00
|
|
|
}
|