Register user with OneSignal after login

This commit is contained in:
2023-09-03 08:26:50 +08:00
parent 28e209fdd6
commit 473c3d5a4f
5 changed files with 125 additions and 48 deletions
+9
View File
@@ -22,9 +22,18 @@
<string>$(CURRENT_PROJECT_VERSION)</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>We need to enable geotagging to send you notifications and messages based on your location, so you will get the relevant ones only</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>We need to enable geotagging to send you notifications and messages based on your location, so you will get the relevant ones only</string>
<key>NSLocationUsageDescription</key>
<string>We need to enable geotagging to send you notifications and messages based on your location, so you will get the relevant ones only</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>We need to enable geotagging to send you notifications and messages based on your location, so you will get the relevant ones only</string>
<key>UIBackgroundModes</key>
<array>
<string>remote-notification</string>
<string>location</string>
</array>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
+1 -47
View File
@@ -1,5 +1,4 @@
import { Component } from '@angular/core';
import OneSignal from 'onesignal-cordova-plugin';
@Component({
selector: 'app-root',
@@ -13,51 +12,6 @@ export class AppComponent {
// Call this function when your app starts
OneSignalInit(): void {
// 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);
// 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);
// NOTE: Update the init value below with your OneSignal AppId.
OneSignal.init("13755f98-ec69-45fd-a2f1-d2166afcaa51");
// Location permissions enable geotagging in the OneSignal dashboard to send notifications to users based on their location
OneSignal.Location.setShared(false);
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);
});
console.log('Moved to home');
}
}
+3 -1
View File
@@ -3,7 +3,7 @@ import { Router } from '@angular/router';
import { SessionDataProviderService } from 'src/app/store/session-data-provider.service';
import { BlogDataService } from 'src/app/store/blog-data.service';
import { WrenchService } from 'src/app/services/wrench.service';
import { OnesignalService } from 'src/app/services/onesignal.service';
@Component({
selector: 'app-home',
@@ -20,6 +20,7 @@ export class HomePage implements OnInit {
private router: Router,
public sessionDataProviderService: SessionDataProviderService,
private wrenchService: WrenchService,
private onesignalService: OnesignalService,
public blogDataService: BlogDataService
) {
this.firstname = this.sessionDataProviderService.firstname;
@@ -34,6 +35,7 @@ export class HomePage implements OnInit {
// this.getBannersData();
console.log("BLOG HOME 002->", this.blogDataService.blogData);
// this.firstname = this.sessionDataProviderService.firstname;
this.onesignalService.Init(this.sessionDataProviderService.member_uid);
}
ionViewDidEnter(){
@@ -0,0 +1,16 @@
import { TestBed } from '@angular/core/testing';
import { OnesignalService } from './onesignal.service';
describe('OnesignalService', () => {
let service: OnesignalService;
beforeEach(() => {
TestBed.configureTestingModule({});
service = TestBed.inject(OnesignalService);
});
it('should be created', () => {
expect(service).toBeTruthy();
});
});
+96
View File
@@ -0,0 +1,96 @@
import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
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 {
// 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);
// 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);
// NOTE: Update the init value below with your OneSignal AppId.
OneSignal.init(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.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'
}
*/
}
}