108 lines
4.5 KiB
TypeScript
108 lines
4.5 KiB
TypeScript
import { HttpClient } from '@angular/common/http';
|
|
import { Injectable } from '@angular/core';
|
|
import { isPlatform } from '@ionic/angular';
|
|
|
|
import { Observable } from 'rxjs';
|
|
//import 'rxjs/add/operator/map';
|
|
import { environment } from 'src/environments/environment';
|
|
import { SessionDataProviderService } from '../store/session-data-provider.service';
|
|
import { Router } from "@angular/router";
|
|
import OneSignal from 'onesignal-cordova-plugin';
|
|
|
|
@Injectable({
|
|
providedIn: 'root'
|
|
})
|
|
export class OnesignalService {
|
|
AppId;
|
|
|
|
constructor(private http: HttpClient,
|
|
private router: Router,
|
|
public sessionDataProviderService :SessionDataProviderService) {
|
|
// this is test
|
|
this.AppId = '13755f98-ec69-45fd-a2f1-d2166afcaa51';
|
|
}
|
|
|
|
// Call this function when your app starts
|
|
Init(member_uid): void {
|
|
|
|
if ( isPlatform('ios') == true || isPlatform('android')==true){
|
|
console.log("Correct Notification platform");
|
|
}
|
|
else{
|
|
return;
|
|
}
|
|
|
|
// https://documentation.onesignal.com/docs/mobile-sdk
|
|
// alert('OneSignalInit');
|
|
|
|
// 0 = None, 1 = Fatal, 2 = Errors, 3 = Warnings, 4 = Info, 5 = Debug, 6 = Verbose
|
|
// Uncomment to set OneSignal device logging to VERBOSE
|
|
//OneSignal.Debug.setLogLevel(6);
|
|
OneSignal.Debug.setLogLevel(0);
|
|
// 0 = None, 1 = Fatal, 2 = Errors, 3 = Warnings, 4 = Info, 5 = Debug, 6 = Verbose
|
|
// Uncomment to set OneSignal visual logging to VERBOSE
|
|
//OneSignal.Debug.setAlertLevel(6);
|
|
//OneSignal.Debug.setAlertLevel(4);
|
|
OneSignal.Debug.setAlertLevel(0);
|
|
|
|
// NOTE: Update the init value below with your OneSignal AppId.
|
|
//OneSignal.init(this.AppId);
|
|
OneSignal.initialize(this.AppId);
|
|
|
|
// Location permissions enable geotagging in the OneSignal dashboard to send notifications to users based on their location
|
|
OneSignal.Location.setShared(true);
|
|
|
|
let myClickListener = async function(event) {
|
|
let notificationData = JSON.stringify(event);
|
|
//alert("CLICKED: " + notificationData);
|
|
console.log('notificationOpenedCallback: ' + JSON.stringify(notificationData));
|
|
};
|
|
OneSignal.Notifications.addEventListener("click", myClickListener);
|
|
|
|
// Set a handler to run before displaying a notification while the app is in focus.
|
|
let myForegroundWillDisplayListener = async function(event) {
|
|
let notificationData = JSON.stringify(event);
|
|
// alert("RECEIVED: " + notificationData);
|
|
console.log('foregroundWillDisplayCallback : ' + JSON.stringify(notificationData));
|
|
|
|
/// Display Notification, preventDefault to not display
|
|
event.preventDefault();
|
|
|
|
// Use notification.display() to display the notification after some async work
|
|
//event.notification.display();
|
|
};
|
|
OneSignal.Notifications.addEventListener('foregroundWillDisplay', myForegroundWillDisplayListener);
|
|
|
|
// Prompts the user for notification permissions.
|
|
// * Since this shows a generic native prompt, we recommend instead using an In-App Message to prompt for notification permission (See step 7) to better communicate to your users what notifications they will get.
|
|
/*OneSignal.Notifications.requestPermission(function(accepted) {
|
|
console.log("User accepted notifications: " + accepted);
|
|
});*/
|
|
OneSignal.Notifications.requestPermission(true); // @param {boolean} fallbackToSettings
|
|
|
|
//OneSignal.User.addAlias("external_id", member_uid);
|
|
OneSignal.login(member_uid);
|
|
// OneSignal.getUser().addEmail(emailAddress, emailAuthHash);
|
|
// Auth hashes are expected to be a HMAC on a SHA-256 of the OneSignal REST API Key and the <protected_field_value>
|
|
// <?php echo hash_hmac('sha256', $email_address, $ONESIGNAL_REST_API_KEY);
|
|
// OneSignal.getUser().addSms(smsNumber, smsAuthHash);
|
|
|
|
OneSignal.Location.requestPermission();
|
|
/*
|
|
AndroidManifest.xml
|
|
|
|
// Make sure you add one of the following permissions
|
|
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
|
|
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
|
|
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
|
|
|
|
app/build.gradle
|
|
|
|
dependencies {
|
|
...
|
|
implementation 'com.google.android.gms:play-services-location:YOUR_PLAY_SERVICES_VERSION'
|
|
}
|
|
*/
|
|
}
|
|
}
|