お気に入りや予定など、1 人のユーザーに対してさまざまな機能を使用したいと考えています。アプリでログインデータが必要です。しかし、Tabris Framework でローカル ストレージを使用することは可能ですか?
3 に答える
Tabris には、デバイスに情報を保存するための ClientStore (RWT.getClient().getService( ClientStore.class) ) というクライアント サービスがあります。とにかく、これらのデータをデバイスに保存することはお勧めしません。推奨される方法は、トークンを ClientStore に保存して、次回アプリを開いたときにユーザーを識別することです。このトークンを使用すると、サーバー上のデータベースなどにデータを保存できます。ClientStore は、Web ブラウザーの Cookie と比較できます。Cookie に大量のデータを保存することはありません。
私もClientStorageを使用しようとしています。現在、Tabris でいくつかのことをテストしており、ここのガイドを使用しましたhttp://eclipsesource.com/blogs/2013/02/18/tabris-0-11-0-new-noteworthy/ .
ClientStorage オブジェクトを値「false」から「true」に設定してテストしています。しかし、アプリを終了して戻るたびに、値は再び「false」に戻ります。
private void createContent( final UIContext context ) {
final ClientStore storageLogin = RWT.getClient().getService( ClientStore.class );
storageLogin.add( "username", "none" );
storageLogin.add( "passwd", "none" );
storageLogin.add( "isLoggedIn", "false");
labelUsername = new Label( containerContent, SWT.NONE );
labelUsername.setText( "Username:" );
final Text usernameText = new Text( containerContent, SWT.BORDER );
final Label labelPasswd = new Label( containerContent, SWT.NONE );
labelPasswd.setText( "Password:" );
final Text passwdText = new Text( containerContent, SWT.PASSWORD | SWT.BORDER );
final Button buttonLogin = new Button( containerContent, SWT.PUSH );
if(storageLogin.get( "isLoggedIn" ) == "false"){
buttonLogin.setText( "Log in" );
}
else{
buttonLogin.setText( "Logged in!" );
}
buttonLogin.addSelectionListener( new SelectionListener() {
public void widgetSelected( SelectionEvent event ) {
if(storageLogin.get( "isLoggedIn" ) == "false"){
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append( "Username: " + usernameText.getText() + "\n" );
stringBuilder.append( "Password: " + passwdText.getText() + "\n" );
System.out.println( "Stringbuilder: \n" + stringBuilder.toString() );
storageLogin.add( "username", usernameText.getText() );
storageLogin.add( "passwd", passwdText.getText() );
storageLogin.add( "isLoggedIn", "true" );
buttonLogin.setText( "Logged in!" );
}
else{
}
}
public void widgetDefaultSelected( SelectionEvent e ) {
}
} );
}
もちろん、クリアテキストでパスワードを保護するつもりはありません。実験しているだけです。:)
これは、 storageLogin.add( "isLoggedIn", "false"); を実行したためだと思います。アプリにアクセスするたびに。これにより、転送された値が上書きされ、クライアントに戻されます。storageLogin.get( "isLoggedIn" ); の場合にのみ false に設定することをお勧めします。null を返します。