在 tns build android --release app 不进行 REST 调用之后
After tns build android --release app doesn't make REST calls
已转为 this
我用 NativeScript + Angular 写了一个跨平台的应用程序。
我使用此命令创建 .keystore 文件(如 documentation 所示):
keytool -genkey -v -keystore <my-release-key>.keystore -alias <alias_name> -keyalg RSA -keysize 2048 -validity 10000
我使用此命令构建发布 apk:
tns build android --release --key-store-path "C:\Program Files\Java\jre1.8.0_201\bin\<name>.keystore" --key-store-password <password> --key-store-alias <alias> --key-store-alias-password <alias-password>
然后我在我的 Android 设备(Android 9 和 Android 8)上安装了 apk 文件,但是当我尝试登录时(=> 进行 REST 调用)它会没有什么。
没有显示,没有错误,也没有调用。
我使用的是 6.2.0 版本的 Nativescript。
将项目迁移到 NativeScript 6 后发现了这个问题
我哪里错了?我错过了什么吗?
更新
我尝试使用 run
而不是 build
的第二个命令,但是当我按下登录按钮时控制台没有显示任何内容。
控制台仍然停留在这句话上:
Successfully installed on device with identifier 'xxxxxx'.
更新
我删除了 'hooks'、'node_modules' 和 'platforms' 文件夹,然后重建了应用程序,但没有任何改变。
更新
这是按钮的代码。
当我按下带有空电子邮件和空密码的按钮时,会出现第一个警报。
当我按下包含所有凭据的按钮时,出现第二个警报。
第三个即使凭据正确也从未提出过。
login.component.ts
public login() {
if(!this.user.email || !this.user.password){
let options = {
title: 'ATTENZIONE!',
message: 'Inserire tutte le credenziali',
okButtonText: 'OK'
};
alert(options); //first
} else {
alert("HELLO WORLD!"); //second
this.userService.login(this.user).subscribe((res) => {
alert(res); //third
localStorage.setItem("authenticated", true);
localStorage.setItem("access_token", "bearer " + res.access_token);
localStorage.setItem("username", this.user.email);
},
(err)=>{
console.log("Something went wrong "+err);
alert("Credenziali errate");
return;
}
);
}
return;
}
user.service.ts
login(user: User) {
let urlSearchParams = new URLSearchParams();
urlSearchParams.append('username', user.email);
urlSearchParams.append('password', user.password);
urlSearchParams.append('grant_type','password');
let body = urlSearchParams.toString();
var url = Config.apiUrl + "/token";
return this.http.post(url, body , { headers : this.getCommonHeaders() })
.map(res => res.json())
.catch( (error: any) => {Observable.throw(error.json().error)} );
}
http
来自 @angular/http
我解决了将 http 客户端从 @angular/core
的 Http
(已弃用)更改为 @angular/common/http
的 HttpClient
的问题。
已转为 this
我用 NativeScript + Angular 写了一个跨平台的应用程序。
我使用此命令创建 .keystore 文件(如 documentation 所示):
keytool -genkey -v -keystore <my-release-key>.keystore -alias <alias_name> -keyalg RSA -keysize 2048 -validity 10000
我使用此命令构建发布 apk:
tns build android --release --key-store-path "C:\Program Files\Java\jre1.8.0_201\bin\<name>.keystore" --key-store-password <password> --key-store-alias <alias> --key-store-alias-password <alias-password>
然后我在我的 Android 设备(Android 9 和 Android 8)上安装了 apk 文件,但是当我尝试登录时(=> 进行 REST 调用)它会没有什么。 没有显示,没有错误,也没有调用。
我使用的是 6.2.0 版本的 Nativescript。 将项目迁移到 NativeScript 6 后发现了这个问题
我哪里错了?我错过了什么吗?
更新
我尝试使用 run
而不是 build
的第二个命令,但是当我按下登录按钮时控制台没有显示任何内容。
控制台仍然停留在这句话上:
Successfully installed on device with identifier 'xxxxxx'.
更新
我删除了 'hooks'、'node_modules' 和 'platforms' 文件夹,然后重建了应用程序,但没有任何改变。
更新 这是按钮的代码。
当我按下带有空电子邮件和空密码的按钮时,会出现第一个警报。
当我按下包含所有凭据的按钮时,出现第二个警报。
第三个即使凭据正确也从未提出过。
login.component.ts
public login() {
if(!this.user.email || !this.user.password){
let options = {
title: 'ATTENZIONE!',
message: 'Inserire tutte le credenziali',
okButtonText: 'OK'
};
alert(options); //first
} else {
alert("HELLO WORLD!"); //second
this.userService.login(this.user).subscribe((res) => {
alert(res); //third
localStorage.setItem("authenticated", true);
localStorage.setItem("access_token", "bearer " + res.access_token);
localStorage.setItem("username", this.user.email);
},
(err)=>{
console.log("Something went wrong "+err);
alert("Credenziali errate");
return;
}
);
}
return;
}
user.service.ts
login(user: User) {
let urlSearchParams = new URLSearchParams();
urlSearchParams.append('username', user.email);
urlSearchParams.append('password', user.password);
urlSearchParams.append('grant_type','password');
let body = urlSearchParams.toString();
var url = Config.apiUrl + "/token";
return this.http.post(url, body , { headers : this.getCommonHeaders() })
.map(res => res.json())
.catch( (error: any) => {Observable.throw(error.json().error)} );
}
http
来自 @angular/http
我解决了将 http 客户端从 @angular/core
的 Http
(已弃用)更改为 @angular/common/http
的 HttpClient
的问题。