升级到 Ionic 1.3 后,Ionic/Cordova 联系人插件在 iOS 上返回 Invalid Date

Posted

技术标签:

【中文标题】升级到 Ionic 1.3 后,Ionic/Cordova 联系人插件在 iOS 上返回 Invalid Date【英文标题】:Ionic/Cordova Contacts plugin returns Invalid Date on iOS after upgrade to Ionic 1.3 【发布时间】:2016-04-22 15:52:14 【问题描述】:

自从我开始使用 Ionic 1.3(vs 1.0)以来,cordova-plugin-contacts 模块在 ios 9 上返回 Invalid Date 错误。在 android 上仍然有效。

这破坏了我的应用程序,所以我希望有人能指出如何解决它!谢谢。

错误

  var opts =  //search options
      // filter: '',                                 // 'Bob'
      //  multiple: true,                                      // Yes, return any contact that matches criteria
      fields: ['displayName', 'name'], // These are the fields to search for 'bob'.
      desiredFields: ['name', 'phoneNumbers'] //return fields.
  ;
  $cordovaContacts.find(opts).then(function(allContacts) ).catch(function(error) 
      //error is caught here;
  );

【问题讨论】:

【参考方案1】:

问题在于,在 Ionic 1.3 中,Cordova 联系人返回的 birthday 字段无效日期(请参见下面的屏幕截图),并且所有后续访问联系人属性的尝试都涉及生成错误的整个对象的序列化。我的(hacky)解决方案是将除生日之外的联系人属性复制到纯 javascript 对象中并从那里访问它。

例如,

 allContacts.forEach(function (c) 
      if (c.name.givenName && c.phoneNumbers) 
        contacts.push(name: c.name, phoneNumbers: c.phoneNumbers); // grab only the properties you need avoiding birthday
      
    );

https://github.com/driftyco/ng-cordova/issues/1233

【讨论】:

以上是关于升级到 Ionic 1.3 后,Ionic/Cordova 联系人插件在 iOS 上返回 Invalid Date的主要内容,如果未能解决你的问题,请参考以下文章

在 IONIC 项目中升级到电容器 3 后,Android Studio 构建失败

升级到 Ionic 5 后,TypeScript 编译中缺少 src/zone-flags.ts

ionic2升级到ionic3并打包APK

升级ionic版本后,创建新项目报Error Initializing app错误解决

请求的资源上不存在“Access-Control-Allow-Origin”标头。离子、AngularJS、Spring Boot 1.3

Ionic CLI 升级到最新版本