HarmonyOS 不同组件中调用 iap 出现不同的结果

相同的检查 iap 环境的方法

async queryEnv(): Promise<number> { 
  return new Promise((resolve) => { 
  iap.queryEnvironmentStatus(this.context).then(() => { 
  resolve(0); 
}).catch((error: BusinessError) => { 
  promptAction.showToast({ message: `queryEnvironmentStatus fail, error code ${error.code}` }); 
  resolve(error.code); 
}) 
}); 
}

定义在@Entry@Componentstruct MainPage中,检测环境返回 0,正常。

定义在一个普通的类中

export class A { 
  async queryEnv(): Promise<number> { 
    return new Promise((resolve) => { 
      iap.queryEnvironmentStatus(this.context).then(() => { 
        resolve(0); 
      }).catch((error: BusinessError) => { 
        promptAction.showToast({ message: `queryEnvironmentStatus fail, error code ${error.code}` }); 
        resolve(error.code); 
      }) 
    }); 
  }

通过 new A().queryEnv(), 即会得到结果:queryEnvironmentStatus fail, error code 1001860001。

HarmonyOS
2024-08-23 09:19:51
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zbw_apple

问题原因是因为没有上下文(context)对象,可以传递上下文即可。保证是UIAbility 的context如new A().queryEnv(context), === 属于UIAbility 的上下文。

async queryEnv(context:Context): Promise<number> { 
  return new Promise((resolve) => { 
  iap.queryEnvironmentStatus(context).then(() => { 
  resolve(0); 
}).catch((error: BusinessError) => { 
  promptAction.showToast({ message: `queryEnvironmentStatus fail, error code ${error.code}` }); 
  resolve(error.code); 
}) 
}); 
}
分享
微博
QQ
微信
回复
2024-08-23 16:11:09
相关问题
不同组件不同样式效果如何实现
352浏览 • 1回复 待解决
如何设置组件不同状态下样式
1935浏览 • 1回复 待解决
何设置组件不同状态下样式
2060浏览 • 1回复 待解决