Угловая инициализация соединения перед открытием приложения - PullRequest
0 голосов
/ 03 октября 2019

Я только начинаю понимать 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».?!?

Как я могу сослаться на это в скрипте сервиса?

Надеясь на помощь ;-)

1 Ответ

0 голосов
/ 03 октября 2019

Как насчет того, чтобы поместить код инициализации GameSparks в класс сервиса, инициализировать его в конструкторе, открыть GameSparks с помощью метода get и добавить сервис в компонент, который вы хотите использовать.

...