Я только начинаю понимать Angular (?) И пытаюсь создать приложение с GameSparks в качестве поставщика данных (SDK)
В моем проекте есть маршрутизатор, подобный этому:
import { NgModule } from '@angular/core';
import { Routes, RouterModule, PreloadAllModules } from '@angular/router';
const routes: Routes = [
{ path: '', redirectTo: 'home', pathMatch: 'full' },
{
path: 'home',
loadChildren: '../pages/home/home.module#HomePageModule'
},
{
path: 'list',
loadChildren: '../pages/list/list.module#ListPageModule'
}
];
@NgModule({
imports: [RouterModule.forRoot(routes, { preloadingStrategy: PreloadAllModules })],
exports: [RouterModule]
})
export class AppRoutingModule { }
Теперь я добавил GameSparks SDK в свой проект в папке "scr / assets / gamesparks".
Здесь у меня есть инициализированный скрипт .js, подобный этому:
var gamesparks = new GameSparks();
var gsKey = "XXXXXXXXX";
var gsSecret = "XXXXXXXXXXXXXXXXXXXXXXX";
var gsCredentials = "";
var isLive = true;
//Initialse the SDK
function init() {
if (isLive) {
gamesparks.initLive({
key: gsKey,
secret: gsSecret,
//credential: gsCredentials,
onNonce: onNonce,
onInit: onInit,
onMessage: onMessage,
logger: console.log,
});
} else {
gamesparks.initPreview({
key: gsKey,
secret: gsSecret,
//credential: gsCredentials,
onNonce: onNonce,
onInit: onInit,
onMessage: onMessage,
logger: console.log,
});
}
}
//Callback function to hmac sha256 a nonce with the secret. It's assumed you will have your own method of securing the secret;
function onNonce(nonce) {
return CryptoJS.enc.Base64.stringify(CryptoJS.HmacSHA256(nonce, gsSecret));
}
//Callback to handle when the SDK is initialised and ready to go
function onInit() {
console.log("Initialised");
// NOW I AM READY TO START THE APP, BUT NOT SURE HOW?!?!
}
Когда вызывается onInit (), я должен быть в состоянии двигаться вперед, но я не уверен, как это вызватьсценарий перед роутером или, если он вообще есть, на котором я должен сосредоточиться, и как мне сделать GameSparks SDK доступным на всех моих страницах?
Действительно надеемся на какое-то руководство или помощь, и спасибо заранее :-)
/ **************** РЕДАКТИРОВАТЬ ****************** /
Сделаното, что предложил Руи, вот так:
import { Injectable } from '@angular/core';
var gamesparks = new GameSparks();
var gsKey = "XXXXXXXXXX";
var gsSecret = "XXXXXXXXXXXXXXXXXXXX";
var gsCredentials = "";
@Injectable({
providedIn: 'root'
})
export class GamesparksService {
isLive = false;
init() {
if (this.isLive) {
gamesparks.initLive({
key: gsKey,
secret: gsSecret,
//credential: gsCredentials,
onNonce: this.onNonce,
onInit: this.onInit,
onMessage: this.onMessage,
logger: console.log,
});
} else {
gamesparks.initPreview({
key: gsKey,
secret: gsSecret,
//credential: gsCredentials,
onNonce: this.onNonce,
onInit: this.onInit,
onMessage: this.onMessage,
logger: console.log,
});
}
}
//Callback function to hmac sha256 a nonce with the secret. It's assumed you will have your own method of securing the secret;
onNonce(nonce) {
return CryptoJS.enc.Base64.stringify(CryptoJS.HmacSHA256(nonce, gsSecret));
}
//Callback to handle when the SDK is initialised and ready to go
onInit() {
console.log("Initialised");
}
//Callback to handle async messages from the gamesparks platform
onMessage(message) {
console.log("onMessage: " + JSON.stringify(message["scriptData"]));
}
}
Теперь у меня есть некоторые другие проблемы. Этот скрипт называется gamesparks.service.ts и является папкой "./app/services/"
Теперь мои файлы GameSparks .js находятся в папке" ./assets/gamesparks/ ".
В приведенном выше сценарии var gamesparks = new GameSparks ();имеет красное подчеркивание под «GameSparks ()», как и «CryptoJS».?!?
Как я могу сослаться на это в скрипте сервиса?
Надеясь на помощь ;-)