Files
WrenchBoardIonic2023/src/app/services/onesignal.service.ts
T

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'
}
*/
}
}