首页 > 解决方案 > 如何使用 Ionic 和 Cordova 联系人重新加载联系人数据?

问题描述

在 Ionic 4 应用程序中,我使用 CordovaContacts通过该find方法检索所有设备联系人。它工作正常,除了当我在应用程序中检索联系人,然后切换到手机应用程序,修改联系人(例如添加电子邮件地址),保存,恢复到我的应用程序,并再次访问联系人列表时,它不是即使find再次调用该方法,也会使用新的电子邮件地址刷新。

但是,如果我退出应用程序并重新启动,则会出现联系人更改。

Contacts 对象是 Ionic/Angular 服务的一个字段,由服务构造函数初始化。每当调用该方法时,我也尝试重新创建此对象find,但这无济于事。

export class DeviceContactService {
  constructor(private contacts: Contacts) { }

  getDeviceContacts(): Observable<any> {
    // this.contacts = new Contacts() // does not work better
    let fields : ContactFieldType[] = [ "displayName"]
    let options = new ContactFindOptions();
    options.filter = ""
    options.multiple = true
    options.desiredFields = [ 
      "displayName",  
      "name", 
      "emails", 
      "phoneNumbers" 
    ]
    let prom = this.contacts.find(fields, options)
    ...
  }
}

我希望承诺返回一个联系人列表,其中包含存储在设备联系人数据库中的最新信息,但它没有发生。它总是返回联系人数据库更改之前的数据。

标签: ionic-frameworkcordova-pluginscontacts

解决方案


您可能还会发现,无论用户是将他们的联系人存储在 iCloud(它使用来自服务器的推送来刷新其数据)还是其他地方(使用 fetches - 用户可以指定“自动”或低至 15 的间隔,结果都会有所不同距离“设置”中的“联系人”页面几分钟,但不会更快)


推荐阅读