2

私の現在のプロジェクトについていくつかの背景を述べる - 私は従業員の電話帳アプリケーションに取り組んでいます。そこには、ユーザーのデバイス上に新しい連絡先を作成するためのボタンがあります。私は私のイオニアアプリケーションでこれを処理するために、次のプラグインを使用しています:私もしようとしたCordova-plugin-contactsはnavigator.contactsを未定義にしますか?

navigator.contacts 

を経由してアクセスする:

http://cordova.apache.org/docs/en/latest/reference/cordova-plugin-contacts/

は、ドキュメントの状態があることプラグイン方法にアクセスしようとしたとき

window.navigator.contacts 

これは、未定義のエラーを返します。ドキュメントでは、devicereadyイベントが発生した後、これはのみアクセス可能になると述べている - ので、私のコードは以下の通りであった:

document.addEventListener("deviceready", onDeviceReady, false); 
function onDeviceReady() { 
    console.log("Testing Navigation Contacts"); 
    console.log(navigator.contacts); 
} 

私も下記行われるよう$ ionicPlatform.readyの機能を利用しようとした:

$ionicPlatform.ready(function() { 
    var myContact = window.navigator.contacts.create({"displayName": "Test User"}); 
    myContact.save(); 
}); 

正確なエラーメッセージを以下に示します:

Error: undefined is not an object (evaluating 'navigator.contacts.create') 

すべてのヘルプははるかに、みんなをいただければ幸いです。私は他に何をしようとしているのか分からない。読んでくれてありがとう!

マイク

+0

プラグインを削除して再追加してください。 'cordova plugin rm cordova-plugin-contacts'と' codeova plugin add cordova-plugin-contacts'をお送りします。 – e666

+0

私はすでにこれをやろうとしています。私はgulpビルドシステムにプロジェクトを統合し、すべてのnode_modulesを何度も再インストールしても問題は解決しません。 –

+0

@MichaelAmato cordova.jsファイルはHTMLに含まれていますか? devicereadyイベントは確実に発砲していますか? – Gandhi

答えて

0

私はプラグインを試してきたし、期待どおりに動作します。 Android Marshamallowで実行されている端末で同じことをテストしました。

このコンタクトプラグインを使用してデバイスに連絡先を追加するサンプルコードバスアプリを用意しました。あなたは私のサンプルをチェックアウトすることができますgithub page

あなたはプラグインに困っているので、サンプルにプラグインフォルダも追加しました。あなたは、プロジェクトをコピーし、アンドロイドプラットフォームを追加し、同じものをビルドしてテストすることができます。欲しいのですが。

+0

ありがとう!あなたのサンプルを使用して、私は期待どおりに動作しているプラ​​グインを得た。それを他の人に助けてくれることを期待して正しい答えとしてください。 :-) –

+0

@MichaelAmatoとても助かりました。乾杯。ハッピーコーディング – Gandhi

0

私はこのプラグインを使って同じ問題を抱えていました。私はこれはバージョンの問題だと思うが、ドキュメントは更新されていない。

これは私が進ん方法です:

  • あなたapp.module.tsで

    最初のインポートの連絡先は、インポートクラスは、あなたのファイル

    で使用したい

    import { Contacts } from '@ionic-native/contacts'; ... ... providers: [ ... Contacts, ... ]

  • を提出

    import { Contacts, Contact , ContactField, ContactName } from '@ionic-native/contacts'; ... constructor(private contacts: Contacts) {}

  • 今あなたが、私は2つの電話番号と連絡先を作成

    ここ

    createContact(name, number){ let contact: Contact = this.contacts.create(); contact.name = new ContactName(null, '', name); contact.phoneNumbers = [new ContactField('mobile', number,true),new ContactField('home', number+1,true)]; contact.save().then( () => alert('Contact saved!'+ JSON.stringify(contact)), (error: any) => alert('Error saving contact.'+error) ); }

    をオブジェクトを使用することができます。もちろん、他の関数find()とpickContact()を使うこともできます。

+0

私はcordova-plugin-contacts 2.3.1を使用しています –