Como armazenar as preferências do usuário

Este artigo demonstra como armazenar as configurações de IU do usuário ou preferências do usuário por meio das opções do SDK da Leitura Avançada -preferences ou -onPreferencesChanged.

Quando a opção do SDK CookiePolicy é definida como Habilitada, o aplicativo da Leitura Avançada armazena preferências do usuário, como tamanho do texto, cor do tema e fonte, usando cookies. Esses cookies são locais para um navegador e dispositivo específicos. Cada vez que o usuário inicia a Leitura Avançada no mesmo navegador e dispositivo, ela é aberta com as preferências do usuário da última sessão nesse dispositivo. No entanto, se o usuário abrir o aplicativo da Leitura Avançada em um navegador ou dispositivo diferente, as configurações serão inicialmente definidas com as configurações padrão da Leitura Avançada e o usuário precisará definir suas preferências novamente para cada dispositivo que usar. As opções -preferences e -onPreferencesChanged do SDK da Leitura Avançada fornecem uma forma para que os aplicativos migrem as preferências de um usuário em vários navegadores e dispositivos, para que o usuário tenha uma experiência consistente onde quer que use o aplicativo.

Primeiro, ao fornecer a opção -onPreferencesChanged do SDK de retorno de chamada ao iniciar o aplicativo da Leitura Avançada, a Leitura Avançada enviará a cadeia de caracteres -preferences de volta ao aplicativo host sempre que o usuário alterar as preferências durante a sessão. O aplicativo host é então responsável por armazenar as preferências do usuário no próprio sistema. Assim, quando o mesmo usuário inicia a Leitura Avançada novamente, o aplicativo host pode recuperar as preferências desse usuário do armazenamento e fornecê-las como a opção de cadeia de caracteres -preferences do SDK ao iniciar o aplicativo de Leitura Avançada, para que as preferências do usuário sejam restauradas.

Essa funcionalidade pode ser usada como um meio alternativo para armazenar as preferências do usuário quando não quiser ou não for viável usar cookies.

Cuidado

Não tente alterar programaticamente os valores da cadeia de caracteres -preferences enviada de e para o aplicativo da Leitura Avançada, pois isso pode causar um comportamento inesperado, resultando em uma experiência de usuário degradada. Os aplicativos host nunca devem atribuir um valor personalizado nem manipular a cadeia de caracteres -preferences. Ao usar a opção de cadeia de caracteres -preferences, use apenas o valor exato que foi retornado da opção -onPreferencesChanged de retorno de chamada.

Habilitar o armazenamento de preferências do usuário

O parâmetro launchAsync options do SDK da Leitura Avançada contém o retorno de chamada -onPreferencesChanged. Essa função será chamada sempre que o usuário alterar as preferências. O parâmetro value contém uma cadeia de caracteres, que representa as preferências atuais do usuário. Em seguida, essa cadeia de caracteres é armazenada para esse usuário, pelo aplicativo host.

const options = {
    onPreferencesChanged: (value: string) => {
        // Store user preferences here
    }
};

ImmersiveReader.launchAsync(YOUR_TOKEN, YOUR_SUBDOMAIN, YOUR_DATA, options);

Exemplo de estrutura JSON de preferências

Aqui está um exemplo da aparência do value parâmetro quando analisado, juntamente com os tipos de cada campo:

{
    "displayOptionsState": {
        "textSize": "number",
        "fontFamily": "string",
        "textSpacing": "number",
        "formattingEnabled": "boolean",
        "theme": "string",
        "themeSetByUser": "boolean",
        "syllabificationEnabled": "boolean",
        "nounHighlightingEnabled": "boolean",
        "nounHighlightingColor": "string",
        "verbHighlightingEnabled": "boolean",
        "verbHighlightingColor": "string",
        "adjectiveHighlightingEnabled": "boolean",
        "adjectiveHighlightingColor": "string",
        "adverbHighlightingEnabled": "boolean",
        "adverbHighlightingColor": "string",
        "pictureDictionaryEnabled": "boolean",
        "posLabelsEnabled": "boolean"
    },
    "readAloudState": {
        "readAloudSpeed": "number",
        "voice": "string"
    },
    "translationState": {
        "shouldTranslateWords": "boolean",
        "translationLanguage": "string" // encoded JSON
    }
}

E aqui está o exemplo do JSON decodificado translationLanguage.

{
  "text": "string",
  "key": "string",
  "data": {
    "tlc": "string",
    "slc": "string"
  }
}

Carregar as preferências do usuário

Passe as preferências do usuário para o aplicativo da Leitura Avançada usando a opção -preferences. Um exemplo trivial para armazenar e carregar as preferências do usuário é o seguinte:

const storedUserPreferences = localStorage.getItem("USER_PREFERENCES");
let userPreferences = storedUserPreferences === null ? null : storedUserPreferences;
const options = {
    preferences: userPreferences,
    onPreferencesChanged: (value: string) => {
        userPreferences = value;
        localStorage.setItem("USER_PREFERENCES", userPreferences);
    }
};

Próxima etapa