Ionic native secure storage plugin fails silently (on Ionic View and Ionic Dev App on Android)

General Tech Bugs & Fixes 2 years ago

0 1 0 0 0 tuteeHUB earn credit +10 pts

5 Star Rating 1 Rating

Posted on 16 Aug 2022, this text provides information on Bugs & Fixes related to General Tech. Please note that while accuracy is prioritized, the data presented might not be entirely correct or up-to-date. This information is offered for general knowledge and informational purposes only, and should not be considered as a substitute for professional advice.

Take Quiz To Earn Credits!

Turn Your Knowledge into Earnings.

tuteehub_quiz

Answers (1)

Post Answer
profilepic.png
manpreet Tuteehub forum best answer Best Answer 2 years ago

 

I have added Ionic Secure Storage plugin (to store authentication tokens) into my Ionic project, and it works properly locally when running cordova run browser (so that cordova is loaded as a plaform).

However, when I open my project in Ionic DevApp and Ionic View on Android (works correctly on iOS), it fails silently whenever I try to retrieve the saved token.

Here is my code:

// ... unrelated imports omitted
import {Platform} from "ionic-angular";
import {SecureStorage, SecureStorageObject} from "@ionic-native/secure-storage";

@Component({
    selector: 'my-component',
    templateUrl: 'my-component.html'
})
export class MyComponent {

    constructor(private platform: Platform,
                private secureStorage: SecureStorage) {
    }

    ngOnInit() {
        this.getToken().then(token => {
            // ... do something with the retrieved token
        });
    }

    getToken() {
        if (this.platform.is('cordova')) {
            /**
             * Code below silently fails in Ionic View and Ionic Dev App
             * on Android (works correctly on iOS)
             */
            return this.platform.ready().then(() =>
                return this.secureStorage.create('cp_secure_storage')
                    .then((storage: SecureStorageObject) => {
                        return storage.get('TOKEN_NAME')
                            .then(token => {
                                console.log(token);
                                return token;
                            }, () => null);
                    });
            });
        } else {
            return Promise.resolve(localStorage.getItem('TOKEN_NAME'));
        }
    }

}

I have Ionic error monitoring turned on and it catches no errors.

Plugin version:

"@ionic-native/secure-storage": "4.5.3",
"cordova-plugin-secure-storage": "^2.6.8"

No matter what stage you're at in your education or career, TuteeHub will help you reach the next level that you're aiming for. Simply,Choose a subject/topic and get started in self-paced practice sessions to improve your knowledge and scores.