Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ionic framework 我们如何在爱奥尼亚4上获得android代币?_Ionic Framework_Device_Access Token_Android 8.0 Oreo_Cordova Plugin Fcm - Fatal编程技术网

Ionic framework 我们如何在爱奥尼亚4上获得android代币?

Ionic framework 我们如何在爱奥尼亚4上获得android代币?,ionic-framework,device,access-token,android-8.0-oreo,cordova-plugin-fcm,Ionic Framework,Device,Access Token,Android 8.0 Oreo,Cordova Plugin Fcm,您好,我使用的是fcm ionic native插件,它在android 7及以下版本中运行良好,但在android 8 Oreo及以上版本中,它无法获取设备令牌,可能会出现什么问题?您可以使用下面的代码,希望它能为您解决问题: export interface AuthResponseData { kind: string; idToken: string; email: string; refreshToken: string; localId: string; ex

您好,我使用的是fcm ionic native插件,它在android 7及以下版本中运行良好,但在android 8 Oreo及以上版本中,它无法获取设备令牌,可能会出现什么问题?

您可以使用下面的代码,希望它能为您解决问题:

export interface AuthResponseData {
  kind: string;
  idToken: string;
  email: string;
  refreshToken: string;
  localId: string;
  expiresIn: string;
  registered?: boolean;
}

export class AuthService implements OnDestroy {
  private _user = new BehaviorSubject<User>(null);

  get token() {
    return this._user.asObservable().pipe(
      map(user => {
        if (user) {
          return user.token;
        } else {
          return false;
        }
      })
    );
  }

  constructor(private http: HttpClient) { }

  signup(email: string, password: string) {
    return this.http
      .post<AuthResponseData>(
        `https://identitytoolkit.googleapis.com/v1/accounts:signUp?key=${yourAPIKey}`,
        { email, password, returnSecureToken: true })
      .pipe(tap(this.setUserData.bind(this)));
  }

  login(email: string, password: string) {
    return this.http
      .post<AuthResponseData>(
        `https://identitytoolkit.googleapis.com/v1/accounts:signInWithPassword?key=${yourAPIKey}`,
        { email, password, returnSecureToken: true })
      .pipe(tap(this.setUserData.bind(this)));
  }

  private setUserData(userData: AuthResponseData) {
    const expirationTime = new Date(new Date().getTime() + +userData.expiresIn * 1000);
    const user = new User(userData.localId, userData.email, userData.idToken, expirationTime);
    this._user.next(user);
    this.storeAuthData(userData.localId, userData.idToken, expirationTime.toISOString(), userData.email);
  }

  private storeAuthData(userId: string, token: string, tokenExpirationDate: string, email: string) {
    const data = JSON.stringify({ userId, token, tokenExpirationDate, email });
    Plugins.Storage.set({ key: 'authData', value: data });
  }
}
导出接口AuthResponseData{
种类:弦;
idToken:字符串;
电子邮件:字符串;
刷新令牌:字符串;
本地化:字符串;
expiresIn:字符串;
注册?:布尔值;
}
导出类AuthService实现OnDestroy{
private _user=new BehaviorSubject(null);
获取令牌(){
返回此。_user.asObservable().pipe(
映射(用户=>{
如果(用户){
返回user.token;
}否则{
返回false;
}
})
);
}
构造函数(私有http:HttpClient){}
注册(电子邮件:string,密码:string){
返回此文件。http

.post获取更多信息

您好谢谢您的回答,代码是否获得设备令牌以便我可以发送推送通知?我还使用FireStore令牌通常来自服务器端并存储在设备中,因此设备和服务器令牌是相同的,非常感谢