SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Apache Cordovaで本格スマホアプリに挑戦しよう

連絡先データにアクセスするプラグインを使う

Apache Cordovaで本格スマホアプリに挑戦しよう 第11回


 今回はスマートフォン内の連絡先データにアクセスするためのプラグインを紹介します。スマホではPCに比べて文字を入力することが面倒ですが、連絡先データを使えばこれらの入力を簡単にするなどが可能です。ただし、連絡先に保存されているデータは、必ずしも自分のデータだけではなく相手側のプライバシー情報も含むために取り扱いは十分に注意してください。

対象読者

  • スマホアプリに挑戦したいと思っているWeb開発者
  • アプリ開発をもっと楽にしたいと思っている方
  • 業務スマホアプリを作る開発者

連絡先にアクセスするためのプラグイン

 スマホの基本的な機能である連絡先にアクセスするプラグインを紹介します。

インストール

 インストールするプラグインは、「cordova-plugin-contacts 」です。インストールはリスト1のように行います。

リスト1 プラグインのインストール
$cordova plugin add cordova-plugin-contacts

プラグインの概要

 Contactsプラグインには、端末内の連絡先データを取得する方法として2種類の方法があり、抽出条件を指定して取得する方法、OS標準のUIによる連絡先データ一覧から選択した1件を取得する方法があります。取得だけでなく、データの登録/更新/削除も可能です。これらの利用できるメソッドの関係を示したのが、図1/表1です。

図1 連絡先データと利用できる操作(メソッド)との関係
図1 連絡先データと利用できる操作(メソッド)との関係

 これらメソッドの構文を、以下にまとめます。

表1 プラグインが提供するグローバルメソッド
メソッド 説明
navigator.contacts.create(object) 連絡先データ(Contactクラス)のインスタンスを作成する。同期メソッドでネイティブコールしない
navigator.contact.find(fields,successCallback,errorCallback,options) 条件(ContactFindOptionsクラス)を指定し、条件に一致する連絡先データを取得する
navigator.contacts.pickContact(successCallback) OSが提供する連絡先一覧のUIを起動し、そこで指定された連絡先データを取得する

 取得した連絡先データはContactクラスのインスタンスとして取得できます。このContactクラスには表2のようなメソッドがあり、これらを使ってデータの追加・更新・削除ができます。

表2 Contactクラスのメソッド一覧
メソッド 説明
Contact.save(successCallback,errorCallback) 内部で管理しているIDがない場合には追加、ある場合には更新する
Contact.remove(successCallback,errorCallback) 指定した連絡先データを削除する
Contact.clone() インスタンスの複製を作る。このとき内部IDはコピーしないのでsaveすると追加になる

連絡先のプロパティとデータ型

 連絡先データは氏名や電話番号などのプロパティ値を持ちますが、それぞれのデータのためにプラグイン側で定義された独自のデータ型が図2のように定義されています。

図2 連絡先データとそれらのプロパティのデータ型
図2 連絡先データとそれらのプロパティのデータ型

Contact(連絡先データ)

 連絡先を管理するためのクラスです。このクラスには表3に示すプロパティがありますが、iOSとAndroidでは多少管理する項目が異なります。例えば、iOSの場合にはdisplayNameはNULLになり、代わりにname属性を使うことが推奨されるなど少々異なるので注意が必要です。

表3 Contactクラスの属性と型
プロパティ 説明 型
id データを識別するためのID DOMString
displayName 表示用の連絡先の名称。iOSでは使用できない DOMString
nickname 連絡先を示すニックネーム DOMString
name 名前 ConstactName
birthday 誕生日 Date
phoneNumbers 電話番号(配列) ContactField[]
emails メールアドレス(配列) ContactField[]
photos 連絡先の写真(配列) ContactField[]
addresses 住所(配列) ContactAddress[]
ims インスタントメッセンジャー用のアドレス(配列) ContactField[]
organizations 組織(配列) ContactOrganization[]
urls WEBページへのリンク(配列) ContactField[]
categories ユーザー定義のカテゴリー(配列)。iOSでは使用できない ContactField[]
note メモ DOMString

氏名(ContactName)

 連絡先の氏名データを管理するためのクラスです。

表4 ContactNameクラスの属性と型
プロパティ 説明 型
formatted フルネームの値 DOMString
familyName 名前(性) DOMString
givenName 名前(名) DOMString
middleName ミドルネーム DOMString
honorificPrefix 名前の前につける敬称。例)Mr. DOMString
honorificSuffix 名前の後につける敬称。例)様 DOMString

属性用汎用フィールド(ContactField)

 電話番号やメールアドレス、写真データなどを管理するための汎用クラスです。例えば、電話番号で自宅用の場合にはtypeにhomeが入るなどのように使用されます。

表5 ContactFieldクラスの属性と型
プロパティ 説明 型
type 項目のタイプ。例)homeやmobileなど DOMString
value 項目の値。電話番号やメールアドレスなど DOMString
pref 優先的に値を指定するフィールドの場合にはtrueを指定 Boolean

ContactAddress

 住所データを管理するためのクラスです。

表6 ContactAddressクラスの属性と型
プロパティ 説明 型
type 項目のタイプ。例)homeなど DOMString
formatted 表示用の住所 DOMString
streetAddress 番地 DOMString
locality 市町村 DOMString
region 都道府県 DOMString
postalCode 郵便番号 DOMString
country 国 DOMString
pref 優先的に値を指定するフィールドの場合にはtrueを指定 Boolean

組織用フィールド(ContactOrganization)

 組織データを管理するためのクラスです。

表7 ContactOrganizationクラスの属性と型
プロパティ 説明 型
type 項目のタイプ。例)customなど DOMString
name 組織名 DOMString
department 所属部署 DOMString
title 役職名等 DOMString
pref 優先的に値を指定するフィールドの場合にはtrueを指定 Boolean

次のページ
サンプルアプリの概要

この記事は参考になりましたか?

Apache Cordovaで本格スマホアプリに挑戦しよう連載記事一覧

もっと読む

この記事の著者

WINGSプロジェクト 小林 昌弘(コバヤシ マサヒロ)

< WINGSプロジェクト について> 有限会社 WINGSプロジェクト が運営する、テクニカル執筆コミュニティ(代表 ...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/9838 2017/01/24 13:58

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー