アプリケーション開発ガイド -...

265
FUJITSU Software Interstage Mobile Application Server V1.3.0 アプリケーション開発ガイド B1X1-0326-03(00) 20168

Transcript of アプリケーション開発ガイド -...

Page 1: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

FUJITSU SoftwareInterstage Mobile Application Server V1.3.0

アプリケーション開発ガイド

B1X1-0326-03(00)2016年8月

Page 2: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

まえがき

本書の目的

本書は、Interstage Mobile Application Serverを利用したアプリケーションを開発できるようになることを目的としています。

本書の読者

本書は、Interstage Mobile Application Serverを利用したアプリケーションの設計・開発を行う方を対象としています。

本書を読むにあたって、以下の知識が必要です。

・ 使用するOSに関する基本的な知識

・ インターネットに関する基本的な知識

・ スマートデバイスに関する基本的な知識

・ Interstage Mobile Application Serverの基本的な知識

・ アプリケーションサーバ管理に関する基本的な知識

・ アプリケーション開発に関する基本的な知識

・ HTML5、JavaScript、CSS3の知識

本書の構成

本マニュアルは、次の構成になっています。

第1章 Interstage Mobile Application Serverにおけるアプリケーション開発の概要

Interstage Mobile Application Serverにおけるアプリケーション開発の流れ、提供するライブラリ(API)/フレームワークの概要につ

いて説明します。

第2章 ハイブリッドアプリケーション

Interstage Mobile Application Serverを使用したハイブリッドアプリケーションの開発について説明します。

第3章 ネイティブアプリケーション

Interstage Mobile Application Serverを使用したネイティブアプリケーションの開発について説明します。

第4章 Webアプリケーション

Interstage Application ServerのJava EE、Java EE 6によるWebアプリケーションの開発について説明します。

第5章 サーバアプリケーション

Interstage Mobile Application Serverにおけるサーバアプリケーションについて説明します。

第6章 プッシュ通知機能

Interstage Mobile Application Serverが提供するプッシュ通知機能を利用したアプリケーションの開発について説明します。

第7章 双方向通信サービスを利用したアプリケーション

Interstage Mobile Application Serverが提供する双方向通信サービスを利用したアプリケーションの開発について説明します。

第8章 認証

Interstage Mobile Application Serverで認証機能を利用する方法について説明します。

付録A プッシュWeb API

プッシュ通知が提供するプッシュWeb APIについて説明します。

付録B プッシュ通知のクライアントアプリケーションのサンプル

プッシュ通知のクライアントアプリケーションのサンプルについて説明します。

付録C クライアント設定ファイル

クライアント設定ファイルについて説明します。

- i -

Page 3: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

付録D プッシュクライアント設定ファイル

プッシュクライアント設定ファイルについて説明します。

付録E Cordova CLI

Cordova CLIについて説明します。

付録F 双方向通信アプリケーションのサンプル

双方向通信アプリケーションのサンプルについて説明します。

付録G jQuery Mobile

Interstage Mobile Application ServerにおけるjQuery Mobileの使い方について説明します。

付録H トラブルシューティング

アプリケーション開発時のトラブルシューティングについて記載します。

オペレーティングシステム表記

本書では、オペレーティングシステムを以下のように略記しています。

正式名称 略称

Microsoft(R) Windows Server(R) 2012 R2 Datacenter Windows Server 2012 Windows

Microsoft(R) Windows Server(R) 2012 R2 Standard

Microsoft(R) Windows Server(R) 2012 R2 Foundation

Microsoft(R) Windows Server(R) 2012 Datacenter

Microsoft(R) Windows Server(R) 2012 Standard

Microsoft(R) Windows Server(R) 2012 Foundation

Microsoft(R) Windows Server(R) 2008 R2 Standard Windows Server 2008 R2

Microsoft(R) Windows Server(R) 2008 R2 Enterprise

Red Hat Enterprise Linux 6 (for Intel64) Linux 6 Linux

Red Hat Enterprise Linux 7 (for Intel64) Linux 7

製品添付マニュアル

本マニュアル以外に、以下のマニュアルが本製品のDVD-ROMに以下の形式で格納されています。DVD-ROMから直接参照するか、

ハードディスクにコピーして参照してください。PDF形式のマニュアルを参照するためには、Adobe Readerが必要になります。

マニュアル名称 形式 目的・用途

解説書 PDF 製品の概要や、運用および使用のうえで必要な基礎となる知識について知る

ときにご利用ください。

導入ガイド PDF 製品の動作環境やインストール、アンインストール、およびセットアップ手順に

ついて知るときにご利用ください。

運用ガイド PDF 構築した情報システムを運用・操作する方法を知るときにご利用ください。

メッセージ集 PDF メッセージの意味、対処方法を知るときにご利用ください。

トラブルシューティング集 PDF 想定されるトラブルに対する、原因と対処方法を知るときにご利用ください。

用語集 PDF 重要な用語や、製品固有の用語を知るときにご利用ください。

リリース情報 PDF 本製品の以前のバージョン・レベルからの変更点について知るときにご利用く

ださい。

商標

・ Access、Excel、PowerPointおよびWordは、米国Microsoft Corporationの製品です。

- ii -

Page 4: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

・ Adobe、Acrobat、Adobe Reader、Acrobat Reader、Adobe ロゴ、Adobe AIR、Flash、Flash Playerは、Adobe Systems Incorporatedの

米国ならびに他の国における商標または登録商標です。

・ Android、Google Playは、Google Inc. の商標です。

・ iOSは、Cisco の米国およびその他の国における商標または登録商標です 。

・ Internet Explorer、Microsoft Internet Explorer ロゴ、Microsoft、Windows、Windows Server、Windows ストアまたはその他のマイク

ロソフト製品の名称および製品名は、米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。

・ Interstageは、富士通株式会社の登録商標です。

・ OracleとJavaは、Oracle Corporation およびその子会社、関連会社の米国およびその他の国における登録商標です。文中の社名、

商品名等は各社の商標または登録商標である場合があります。

・ 本書におけるその他名称については、各社の登録商標または商標です。

なお、本書では、システム名または製品名に付記される登録表示((TM)または(R))は、省略しています。

輸出管理規制

本ドキュメントを輸出または提供する場合は、外国為替、外国貿易法および米国輸出管理関連法規等の規制をご確認の上、必要な

手続きをおとりください。

お願い

・ このマニュアルは、予告なしに変更されることがあります。

・ このマニュアルを無断で他に転用しないようお願いします。

・ このマニュアルに記載されたデータの使用に起因する第三者の特許権およびその他の権利の侵害については、当社はその責を

負いません。

発行年月日

2016年8月

著作権

マイクロソフト製品のスクリーンショットはマイクロソフトの許可を得て使用しています。

Copyright 2016 FUJITSU LIMITED

- iii -

Page 5: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

目次

第1章 Interstage Mobile Application Serverにおけるアプリケーション開発の概要......................................................................11.1 運用イメージ........................................................................................................................................................................................ 11.2 クライアントのアプリケーション............................................................................................................................................................ 2

1.2.1 アプリケーション形態の特徴と留意点......................................................................................................................................... 21.2.2 必要なライセンス.......................................................................................................................................................................... 3

1.3 サーバのアプリケーション................................................................................................................................................................... 31.4 APIの概要........................................................................................................................................................................................... 31.5 動作環境............................................................................................................................................................................................. 5

第2章 ハイブリッドアプリケーション............................................................................................................................................. 62.1 ハイブリッドアプリケーションの概要....................................................................................................................................................6

2.1.1 Cordovaプロジェクトの構造..........................................................................................................................................................62.2 開発の流れ..........................................................................................................................................................................................7

2.2.1 開発環境の準備...........................................................................................................................................................................72.2.1.1 事前準備............................................................................................................................................................................... 72.2.1.2 開発環境のインストール........................................................................................................................................................82.2.1.3 環境変数の設定....................................................................................................................................................................82.2.1.4 外部ライブラリのインストール................................................................................................................................................ 9

2.2.2 アプリケーションの開発................................................................................................................................................................92.2.2.1 Cordovaプロジェクトの作成...................................................................................................................................................92.2.2.2 プラグインの追加...................................................................................................................................................................92.2.2.3 プラットフォームの追加....................................................................................................................................................... 102.2.2.4 コーディング.........................................................................................................................................................................102.2.2.5 アプリケーションのビルド.....................................................................................................................................................10

2.2.3 動作確認(デバッグ)................................................................................................................................................................... 102.2.4 パッケージング........................................................................................................................................................................... 10

2.2.4.1 Androidのパッケージング................................................................................................................................................... 102.2.4.1.1 Gradleの設定................................................................................................................................................................112.2.4.1.2 署名の設定...................................................................................................................................................................11

2.2.4.2 iOSのパッケージング.......................................................................................................................................................... 132.2.4.2.1 署名の設定...................................................................................................................................................................13

2.2.4.3 Windowsのパッケージング................................................................................................................................................. 142.2.4.3.1 ビルドオプション........................................................................................................................................................... 142.2.4.3.2 プロセッサアーキテクチャ............................................................................................................................................ 142.2.4.3.3 署名の設定...................................................................................................................................................................15

2.2.4.4 IMAPSサーバでアプリケーションを配布する場合のパッケージング................................................................................162.2.5 配布............................................................................................................................................................................................ 18

2.3 Cordovaプラグイン.............................................................................................................................................................................182.3.1 Battery.........................................................................................................................................................................................192.3.2 Camera........................................................................................................................................................................................ 202.3.3 Compat........................................................................................................................................................................................202.3.4 Console....................................................................................................................................................................................... 202.3.5 Contacts...................................................................................................................................................................................... 202.3.6 Crosswalk WebView Engine...................................................................................................................................................... 202.3.7 Devivce....................................................................................................................................................................................... 202.3.8 Devivce Motion.......................................................................................................................................................................... 202.3.9 Devivce Orientation....................................................................................................................................................................202.3.10 Notification............................................................................................................................................................................... 212.3.11 File............................................................................................................................................................................................ 212.3.12 File Transfer..............................................................................................................................................................................212.3.13 Geolocation...............................................................................................................................................................................212.3.14 Globalization.............................................................................................................................................................................212.3.15 Inappbrowser............................................................................................................................................................................ 212.3.16 Media........................................................................................................................................................................................ 212.3.17 Capture......................................................................................................................................................................................21

- iv -

Page 6: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

2.3.18 Network Information................................................................................................................................................................ 212.3.19 Screen Orientation.................................................................................................................................................................... 212.3.20 Splashscreen..............................................................................................................................................................................222.3.21 Statusbar....................................................................................................................................................................................222.3.22 Test Framework........................................................................................................................................................................ 222.3.23 Vibration................................................................................................................................................................................... 222.3.24 Whitelist....................................................................................................................................................................................222.3.25 Cordova WKWebView Engine................................................................................................................................................ 222.3.26 IMAPS Application Available Time Control........................................................................................................................... 222.3.27 Beacon...................................................................................................................................................................................... 24

2.3.27.1 Beacon受信機能............................................................................................................................................................... 242.3.27.2 お知らせメッセージ表示機能........................................................................................................................................... 242.3.27.3 サンプル............................................................................................................................................................................ 25

2.3.28 IMAPS Core............................................................................................................................................................................. 252.3.28.1 各機能の設定....................................................................................................................................................................252.3.28.2 認証................................................................................................................................................................................... 26

2.3.28.2.1 ログイン....................................................................................................................................................................... 262.3.28.2.2 ログアウト.....................................................................................................................................................................272.3.28.2.3 ユーザー情報の登録、取得、削除............................................................................................................................272.3.28.2.4 SLS内のデータの引き継ぎ........................................................................................................................................ 282.3.28.2.5 管理情報による認証.................................................................................................................................................. 292.3.28.2.6 パスワード変更........................................................................................................................................................... 302.3.28.2.7 タイムアウト検知..........................................................................................................................................................30

2.3.28.3 SLS.....................................................................................................................................................................................302.3.28.3.1 データの格納および取得.......................................................................................................................................... 312.3.28.3.2 データの削除、データ数およびキーの取得............................................................................................................. 322.3.28.3.3 サンプル..................................................................................................................................................................... 32

2.3.28.4 ログ収集.............................................................................................................................................................................332.3.28.4.1 ログ出力とサーバへの送信....................................................................................................................................... 332.3.28.4.2 ログ設定の変更.......................................................................................................................................................... 34

2.3.29 IMAPS Push............................................................................................................................................................................. 352.3.30 IMAPS Cloud Push...................................................................................................................................................................352.3.31 IMAPS Push Properties............................................................................................................................................................ 362.3.32 IMAPS Zip File........................................................................................................................................................................ 36

2.3.32.1 サンプル............................................................................................................................................................................ 362.3.33 Keyboard...................................................................................................................................................................................362.3.34 BarcodeScanner........................................................................................................................................................................ 36

2.4 プラグインの開発...............................................................................................................................................................................372.5 注意事項........................................................................................................................................................................................... 37

2.5.1 CordovaプラグインのAPI使用時の注意事項............................................................................................................................372.5.2 WNSを使用する場合の注意事項............................................................................................................................................. 372.5.3 Windowsアプリのビルド対象プロセッサについて.....................................................................................................................382.5.4 Visual Studioを使用した場合の注意事項.................................................................................................................................392.5.5 iOSでHTTP通信する場合の注意事項..................................................................................................................................... 39

第3章 ネイティブアプリケーション..............................................................................................................................................403.1 ネイティブアプリケーションの概要.................................................................................................................................................... 403.2 開発の流れ........................................................................................................................................................................................403.3 Androidアプリケーションの開発........................................................................................................................................................40

3.3.1 開発環境の準備.........................................................................................................................................................................403.3.2 ネイティブアプリケーションの開発をする(Android Studio)....................................................................................................... 403.3.3 認証............................................................................................................................................................................................ 43

3.3.3.1 認証API............................................................................................................................................................................... 433.3.3.2 ログイン................................................................................................................................................................................ 433.3.3.3 ログアウト..............................................................................................................................................................................443.3.3.4 認証情報の付与..................................................................................................................................................................453.3.3.5 管理情報の設定..................................................................................................................................................................45

- v -

Page 7: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

3.3.3.6 パスワード変更.................................................................................................................................................................... 463.3.3.7 ユーザー情報の登録、取得、削除.....................................................................................................................................473.3.3.8 SLS内のデータの引き継ぎ................................................................................................................................................. 473.3.3.9 タイムアウト検知...................................................................................................................................................................48

3.3.4 SLS..............................................................................................................................................................................................493.3.4.1 SLSのAPI............................................................................................................................................................................ 493.3.4.2 データの格納および取得................................................................................................................................................... 493.3.4.3 データの削除、データ数およびキーの取得...................................................................................................................... 49

3.3.5 ログ収集......................................................................................................................................................................................503.3.5.1 ログ収集API........................................................................................................................................................................ 503.3.5.2 ログ出力と送信.................................................................................................................................................................... 503.3.5.3 ログ設定の変更................................................................................................................................................................... 51

3.3.6 利用時間制御............................................................................................................................................................................ 513.3.6.1 利用時間制御API............................................................................................................................................................... 523.3.6.2 利用時間の制御..................................................................................................................................................................52

3.3.7 パーミッション..............................................................................................................................................................................533.3.7.1 パーミッションAPI................................................................................................................................................................ 533.3.7.2 APIに必要なパーミッションの取得とチェック..................................................................................................................... 54

3.3.8 パッケージング........................................................................................................................................................................... 553.3.9 デバッグ...................................................................................................................................................................................... 563.3.10 配布.......................................................................................................................................................................................... 56

3.4 iOSアプリケーションの開発...............................................................................................................................................................563.4.1 開発環境の準備.........................................................................................................................................................................563.4.2 ネイティブアプリケーションの開発をする(Objective-C)............................................................................................................ 573.4.3 ネイティブアプリケーションの開発をする(Swift)....................................................................................................................... 583.4.4 認証............................................................................................................................................................................................ 60

3.4.4.1 認証API............................................................................................................................................................................... 603.4.4.2 ログイン................................................................................................................................................................................ 603.4.4.3 ログアウト..............................................................................................................................................................................613.4.4.4 認証情報の付与..................................................................................................................................................................613.4.4.5 管理情報の設定..................................................................................................................................................................623.4.4.6 パスワード変更.................................................................................................................................................................... 623.4.4.7 ユーザー情報の登録、取得、削除.....................................................................................................................................623.4.4.8 SLS内のデータの引き継ぎ................................................................................................................................................. 633.4.4.9 タイムアウト検知...................................................................................................................................................................64

3.4.5 SLS..............................................................................................................................................................................................653.4.5.1 SLSのAPI............................................................................................................................................................................ 653.4.5.2 データの格納および取得................................................................................................................................................... 653.4.5.3 データの削除、データ数およびキーの取得...................................................................................................................... 66

3.4.6 ログ収集......................................................................................................................................................................................663.4.6.1 ログ収集API........................................................................................................................................................................ 663.4.6.2 ログ出力と送信.................................................................................................................................................................... 663.4.6.3 ログ設定の変更................................................................................................................................................................... 67

3.4.7 利用時間制御............................................................................................................................................................................ 683.4.7.1 利用時間制御API............................................................................................................................................................... 683.4.7.2 利用時間の制御..................................................................................................................................................................68

3.4.8 パッケージング........................................................................................................................................................................... 693.4.9 デバッグ...................................................................................................................................................................................... 713.4.10 配布.......................................................................................................................................................................................... 71

3.5 Windowsアプリケーションの開発......................................................................................................................................................713.5.1 開発環境の準備.........................................................................................................................................................................713.5.2 ネイティブアプリケーションの開発をする(Visual Studio)..........................................................................................................713.5.3 認証............................................................................................................................................................................................ 73

3.5.3.1 認証API............................................................................................................................................................................... 733.5.3.2 ログイン................................................................................................................................................................................ 733.5.3.3 ログアウト..............................................................................................................................................................................743.5.3.4 認証情報の付与..................................................................................................................................................................74

- vi -

Page 8: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

3.5.3.5 管理情報の設定..................................................................................................................................................................753.5.3.6 パスワード変更.................................................................................................................................................................... 753.5.3.7 ユーザー情報の登録、取得、削除.....................................................................................................................................763.5.3.8 SLS内のデータの引き継ぎ................................................................................................................................................. 763.5.3.9 タイムアウト検知...................................................................................................................................................................77

3.5.4 SLS..............................................................................................................................................................................................783.5.4.1 SLSのAPI............................................................................................................................................................................ 783.5.4.2 データの格納および取得................................................................................................................................................... 783.5.4.3 データの削除、データ数およびキーの取得...................................................................................................................... 79

3.5.5 ログ収集......................................................................................................................................................................................793.5.5.1 ログ収集API........................................................................................................................................................................ 793.5.5.2 ログ出力と送信.................................................................................................................................................................... 793.5.5.3 ログ設定の変更................................................................................................................................................................... 80

3.5.6 利用時間制御............................................................................................................................................................................ 803.5.6.1 利用時間制御API............................................................................................................................................................... 813.5.6.2 利用時間の制御..................................................................................................................................................................81

3.5.7 パッケージング........................................................................................................................................................................... 823.5.8 デバッグ...................................................................................................................................................................................... 843.5.9 配布............................................................................................................................................................................................ 84

3.6 注意事項........................................................................................................................................................................................... 843.6.1 iOSでHTTP通信する場合の注意事項..................................................................................................................................... 84

第4章 Webアプリケーション..................................................................................................................................................... 864.1 Webアプリケーションの概要............................................................................................................................................................. 864.2 開発の流れ........................................................................................................................................................................................864.3 開発環境の準備................................................................................................................................................................................864.4 開発................................................................................................................................................................................................... 86

4.4.1 認証............................................................................................................................................................................................ 864.4.2 双方向通信サービス.................................................................................................................................................................. 864.4.3 jQuery Mobile.............................................................................................................................................................................86

4.5 パッケージング.................................................................................................................................................................................. 864.6 デバッグ............................................................................................................................................................................................. 864.7 配備・配備解除................................................................................................................................................................................. 87

第5章 サーバアプリケーション.................................................................................................................................................. 885.1 サーバアプリケーションの概要......................................................................................................................................................... 885.2 認証の組み込み................................................................................................................................................................................88

第6章 プッシュ通知機能...........................................................................................................................................................896.1 動作概要........................................................................................................................................................................................... 896.2 受信したメッセージの表示................................................................................................................................................................ 90

6.2.1 IMAPSプッシュ...........................................................................................................................................................................916.2.2 GCM........................................................................................................................................................................................... 926.2.3 APNs...........................................................................................................................................................................................946.2.4 WNS............................................................................................................................................................................................95

6.3 受信したメッセージからのアクション............................................................................................................................................... 1006.4 API................................................................................................................................................................................................... 103

6.4.1 サーバ側のAPI........................................................................................................................................................................ 1036.4.2 クライアント側のAPI..................................................................................................................................................................104

6.5 クライアントのアプリケーションの開発.............................................................................................................................................1056.5.1 ハイブリッドアプリケーション向けのAPIの開発....................................................................................................................... 1056.5.2 IMAPSプッシュ通知を利用するネイティブアプリケーションの開発.......................................................................................1076.5.3 GCMプッシュ通知を利用するネイティブアプリケーションの開発..........................................................................................1106.5.4 APNsプッシュ通知を利用するネイティブアプリケーションの開発......................................................................................... 1136.5.5 WNSプッシュ通知を利用するネイティブアプリケーションの開発.......................................................................................... 1156.5.6 ログ出力のカスタマイズ............................................................................................................................................................1176.5.7 認証クラスの定義..................................................................................................................................................................... 1196.5.8 拡張データの指定....................................................................................................................................................................120

- vii -

Page 9: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

6.5.9 IMAPSプッシュの処理結果受け取り.......................................................................................................................................1216.5.10 GCMプッシュの処理結果受け取り........................................................................................................................................1236.5.11 APNsプッシュの処理結果受け取り....................................................................................................................................... 1246.5.12 WNSプッシュの処理結果受け取り........................................................................................................................................ 1256.5.13 既読通知機能の利用.............................................................................................................................................................126

6.6 サーバ側のアプリケーションの開発............................................................................................................................................... 1346.6.1 共通メッセージ送信アプリケーションの開発...........................................................................................................................134

6.6.1.1 テンプレートファイルを指定.............................................................................................................................................. 1406.6.1.2 messageOptionsを指定......................................................................................................................................................141

6.6.2 メッセージ送信アプリケーションの開発...................................................................................................................................141

第7章 双方向通信サービスを利用したアプリケーション........................................................................................................... 1437.1 概要................................................................................................................................................................................................. 1437.2 API................................................................................................................................................................................................... 1447.3 イベント.............................................................................................................................................................................................1447.4 作成例............................................................................................................................................................................................. 144

第8章 認証............................................................................................................................................................................ 1458.1 ユーザーのパスワードをリポジトリに保管する値に変換するクラスの開発....................................................................................145

8.1.1 必要なメソッドを実装する.........................................................................................................................................................1458.1.2 「認証定義」を作成する............................................................................................................................................................1468.1.3 作成したクラスと「認証定義」を設定し登録する......................................................................................................................146

8.2 パスワードの変更を行うクラスの開発............................................................................................................................................. 1468.2.1 必要なメソッドを実装する.........................................................................................................................................................1478.2.2 「認証定義」を作成する............................................................................................................................................................1478.2.3 作成したクラスと「認証定義」を設定し登録する......................................................................................................................148

8.3 認証したユーザーの情報取得....................................................................................................................................................... 1488.4 認証タイムアウトの検出...................................................................................................................................................................148

8.4.1 任意のコンテンツを返す方法.................................................................................................................................................. 1498.4.2 IMAPSクライアントAPIに通知する方法.................................................................................................................................. 1498.4.3 例.............................................................................................................................................................................................. 149

8.5 Web画面上からイベントとして受信する方法................................................................................................................................. 151

付録A プッシュWeb API.........................................................................................................................................................154A.1 登録ID情報の取得.........................................................................................................................................................................155

A.1.1 リクエスト...................................................................................................................................................................................155A.1.2 レスポンス.................................................................................................................................................................................156A.1.3 使用例......................................................................................................................................................................................156

A.2 登録IDの一覧取得.........................................................................................................................................................................157A.2.1 リクエスト...................................................................................................................................................................................157A.2.2 レスポンス.................................................................................................................................................................................158A.2.3 使用例......................................................................................................................................................................................159

A.3 登録IDの検索.................................................................................................................................................................................159A.3.1 リクエスト...................................................................................................................................................................................159A.3.2 レスポンス.................................................................................................................................................................................160A.3.3 使用例......................................................................................................................................................................................161

A.4 登録IDの削除.................................................................................................................................................................................161A.4.1 リクエスト...................................................................................................................................................................................161A.4.2 レスポンス.................................................................................................................................................................................162A.4.3 使用例......................................................................................................................................................................................162

A.5 IMAPSプッシュIDの更新...............................................................................................................................................................163A.5.1 リクエスト...................................................................................................................................................................................163A.5.2 レスポンス.................................................................................................................................................................................163A.5.3 使用例......................................................................................................................................................................................164

A.6 APNsのデバイストークン登録、更新............................................................................................................................................. 164A.6.1 リクエスト...................................................................................................................................................................................164A.6.2 レスポンス.................................................................................................................................................................................165A.6.3 使用例......................................................................................................................................................................................165

- viii -

Page 10: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

A.7 GCMのregistrationID登録、更新...................................................................................................................................................166A.7.1 リクエスト...................................................................................................................................................................................166A.7.2 レスポンス.................................................................................................................................................................................167A.7.3 使用例......................................................................................................................................................................................167

A.8 WNSのチャネルURI登録、更新....................................................................................................................................................167A.8.1 リクエスト...................................................................................................................................................................................167A.8.2 レスポンス.................................................................................................................................................................................168A.8.3 使用例......................................................................................................................................................................................168

A.9 共通メッセージの送信....................................................................................................................................................................169A.9.1 リクエスト...................................................................................................................................................................................169A.9.2 レスポンス.................................................................................................................................................................................171A.9.3 使用例......................................................................................................................................................................................172

A.10 蓄積メッセージ参照......................................................................................................................................................................176A.10.1 リクエスト.................................................................................................................................................................................176A.10.2 レスポンス...............................................................................................................................................................................177A.10.3 使用例....................................................................................................................................................................................178

A.11 メッセージIDからのメッセージ情報の取得.................................................................................................................................. 178A.11.1 リクエスト.................................................................................................................................................................................178A.11.2 レスポンス...............................................................................................................................................................................179A.11.3 使用例....................................................................................................................................................................................180

A.12 登録IDからのメッセージ情報の取得...........................................................................................................................................182A.12.1 リクエスト.................................................................................................................................................................................182A.12.2 レスポンス...............................................................................................................................................................................183A.12.3 使用例....................................................................................................................................................................................184

A.13 既読件数の取得...........................................................................................................................................................................186A.13.1 リクエスト.................................................................................................................................................................................186A.13.2 レスポンス...............................................................................................................................................................................187A.13.3 使用例....................................................................................................................................................................................188

A.14 メッセージの送信(非推奨)........................................................................................................................................................... 189A.14.1 リクエスト.................................................................................................................................................................................189A.14.2 レスポンス...............................................................................................................................................................................190A.14.3 使用例....................................................................................................................................................................................192

付録B プッシュ通知のクライアントアプリケーションのサンプル................................................................................................. 194B.1 サンプルの概要.............................................................................................................................................................................. 194B.2 サンプルアプリの準備.................................................................................................................................................................... 194

B.2.1 IMAPSプッシュ(Android)のサンプルを準備する...................................................................................................................195B.2.2 GCM(Android)のサンプルを準備する................................................................................................................................... 195B.2.3 APNs(iOS)のサンプルを準備する.......................................................................................................................................... 196B.2.4 WNS(Windows)のサンプルを準備する..................................................................................................................................197

B.3 サーバ環境の準備をする...............................................................................................................................................................198B.4 サンプルアプリの操作方法............................................................................................................................................................ 198

B.4.1 IMAPSプッシュ(Android)のサンプルを起動する...................................................................................................................198B.4.2 GCM(Android)のサンプルを起動する................................................................................................................................... 199B.4.3 APNs(iOS)のサンプルを起動する.......................................................................................................................................... 199B.4.4 WNS(Windows)のサンプルを起動する..................................................................................................................................199

B.5 メッセージの送信............................................................................................................................................................................ 199

付録C クライアント設定ファイル..............................................................................................................................................200C.1 ファイル形式................................................................................................................................................................................... 200C.2 サンプルファイルの配置場所.........................................................................................................................................................200C.3 配置場所.........................................................................................................................................................................................201C.4 定義例.............................................................................................................................................................................................201C.5 定義項目.........................................................................................................................................................................................203

C.5.1 auth.loginMode........................................................................................................................................................................ 203C.5.2 idleTimeout.............................................................................................................................................................................. 204C.5.3 imapsServerAddress.................................................................................................................................................................204C.5.4 log.level....................................................................................................................................................................................204

- ix -

Page 11: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

C.5.5 log.maxFileSize........................................................................................................................................................................205C.5.6 log.rotateCount.........................................................................................................................................................................205C.5.7 offlineAuthTryMaxCount........................................................................................................................................................ 205C.5.8 server.connectionTimeout........................................................................................................................................................206C.5.9 server.responseTimeout........................................................................................................................................................... 206C.5.10 sls.maxDatabaseSize.............................................................................................................................................................. 206C.5.11 ssl.noVerify............................................................................................................................................................................ 207C.5.12 appmgr.strictPolicyMode....................................................................................................................................................... 207

付録D プッシュクライアント設定ファイル..................................................................................................................................208D.1 ファイル形式................................................................................................................................................................................... 208D.2 配置場所.........................................................................................................................................................................................208D.3 定義例.............................................................................................................................................................................................209D.4 定義項目(IMAPSおよびGCMプッシュ通知)................................................................................................................................210

D.4.1 push.ServerConnectTimeout....................................................................................................................................................211D.4.2 push.ServerDataReadTimeout................................................................................................................................................. 211D.4.3 push.ServerAddress................................................................................................................................................................. 211D.4.4 push.SelfCertificate..................................................................................................................................................................212D.4.5 push.RingtoneUri..................................................................................................................................................................... 212D.4.6 push.LedSet..............................................................................................................................................................................212D.4.7 push.LedColor..........................................................................................................................................................................213D.4.8 push.LedOntime.......................................................................................................................................................................213D.4.9 push.LedOfftime...................................................................................................................................................................... 213D.4.10 push.VibPattern......................................................................................................................................................................214D.4.11 push.NotificationAppName................................................................................................................................................... 214D.4.12 push.NotificationMainClassName......................................................................................................................................... 215D.4.13 push.NotificationIconID........................................................................................................................................................ 215D.4.14 push.gcm.NotificationMode.................................................................................................................................................. 215D.4.15 push.gcm.SenderID................................................................................................................................................................216D.4.16 push.LogClassName.............................................................................................................................................................. 216D.4.17 push.AuthClassName.............................................................................................................................................................216D.4.18 push.ExtensionData............................................................................................................................................................... 217D.4.19 push.ServerConnectRetryCount.............................................................................................................................................217D.4.20 push.ServerConnectRetryWait...............................................................................................................................................218

D.5 定義項目(APNsプッシュ通知).......................................................................................................................................................218D.5.1 push.SandboxFlg......................................................................................................................................................................218D.5.2 push.Address............................................................................................................................................................................219D.5.3 push.SslForceFlg......................................................................................................................................................................219D.5.4 push.RetryWaitTime................................................................................................................................................................220D.5.5 push.LowerUpdateTime...........................................................................................................................................................220D.5.6 push.RetryCount...................................................................................................................................................................... 220

D.6 定義項目(WNSプッシュ通知)........................................................................................................................................................221D.6.1 push.ServerAddress................................................................................................................................................................. 221D.6.2 push.SelfCertificate..................................................................................................................................................................221D.6.3 push.wns.NotificationMode.....................................................................................................................................................222D.6.4 push.LogClassNameSpace.......................................................................................................................................................222D.6.5 push.LogClassName................................................................................................................................................................ 222D.6.6 push.AuthClassNameSpace..................................................................................................................................................... 223D.6.7 push.AuthClassName...............................................................................................................................................................223D.6.8 push.ExtensionData................................................................................................................................................................. 223D.6.9 push.ServerConnectRetryCount...............................................................................................................................................224D.6.10 push.ServerConnectRetryWait...............................................................................................................................................224D.6.11 push.BackGroundTaskErrorLogFileName............................................................................................................................ 224

付録E Cordova CLI...............................................................................................................................................................226E.1 cordova create..................................................................................................................................................................................226E.2 cordova help.................................................................................................................................................................................... 227E.3 cordova info.....................................................................................................................................................................................227

- x -

Page 12: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

E.4 cordova requirements...................................................................................................................................................................... 228E.5 cordova platform add.......................................................................................................................................................................229E.6 cordova platform remove................................................................................................................................................................ 230E.7 cordova platform list....................................................................................................................................................................... 230E.8 cordova platform check................................................................................................................................................................... 231E.9 cordova plugin add.......................................................................................................................................................................... 231E.10 cordova plugin remove..................................................................................................................................................................232E.11 cordova plugin list......................................................................................................................................................................... 233E.12 cordova plugin search....................................................................................................................................................................233E.13 cordova prepare............................................................................................................................................................................. 233E.14 cordova compile............................................................................................................................................................................ 234E.15 cordova clean.................................................................................................................................................................................236E.16 cordova run....................................................................................................................................................................................236E.17 cordova build.................................................................................................................................................................................239E.18 cordova emulate............................................................................................................................................................................ 241

付録F 双方向通信アプリケーションのサンプル........................................................................................................................244F.1 サンプルアプリの種類.....................................................................................................................................................................244

付録G jQuery Mobile............................................................................................................................................................ 245G.1 アプリケーション開発方法..............................................................................................................................................................245

G.1.1 提供ファイル............................................................................................................................................................................ 245G.1.2 アプリケーションを組み込む................................................................................................................................................... 245G.1.3 jQuery MobileによるHTMLページの作成方法..................................................................................................................... 245

G.2 APIリファレンス............................................................................................................................................................................... 245G.3 開発を行う上での注意事項........................................................................................................................................................... 246G.4 留意事項.........................................................................................................................................................................................246

付録H トラブルシューティング................................................................................................................................................. 247H.1 形式.................................................................................................................................................................................................247H.2 jQueryMobile使用時に発生するトラブル......................................................................................................................................247H.3 Apache Cordova使用時に発生するトラブル................................................................................................................................. 250H.4 そのほかのトラブル.........................................................................................................................................................................253

- xi -

Page 13: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

第1章 Interstage Mobile Application Serverにおけるアプリケーション開発の概要

Interstage Mobile Application Server(以降、IMAPSと記載します)は、スマートデバイスで動作するアプリケーションの開発・運用を支援

するライブラリ(API)/フレームワークと、サーバサイドの機能を持つ製品です。

対応OSは、サーバはWindows、Linux、クライアントはAndroid 、iOS (iPhone 、iPad)、Windowsです。 クライアントのWindowsは、Windows8.1 ストアアプリとWindows 10 UWPアプリ(以降、両者を総称してWindowsアプリと記載します)に対応しています。

スマートデバイス向けアプリケーションには様々な提供形態がありますが、IMAPSでは次の3つの形態をサポートしています。

・ ネイティブアプリケーション

・ ハイブリッドアプリケーション

・ Webアプリケーション

開発者は、IMAPSが提供する認証、セキュアローカルストレージ(以降、SLSと表記します)、ログ収集、双方向通信、プッシュ通知とい

ったライブラリを利用して、スマートデバイス向けのアプリケーションが開発できます。

サーバサイドでは、スマートデバイスを業務で利用するために必要な機能やJavaアプリケーション実行環境など、クライアントと連携し

て動作する業務アプリケーションの実行基盤を提供しています。

1.1 運用イメージ

クライアントとサーバのアプリケーション開発の流れを概略図に示します。

クライアントアプリケーションの開発から配布

クライアントアプリケーションの開発者は、IMAPSが提供するライブラリ/フレームワークを利用してアプリケーションを開発します。

開発できるアプリケーション形態は、1.2 クライアントのアプリケーションを参照してください。

開発したアプリケーションをGoogle Playなど公式の配信サイトや、IMAPSサーバに登録すれば、スマートデバイスへ配布できます。

- 1 -

Page 14: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

サーバアプリケーションの開発

サーバアプリケーションの開発者は、クライアントアプリケーションと連携するサーバサイドの業務アプリケケーションを開発します。

開発した業務アプリケーションは、業務サーバ機能に配備して運用します。

IMAPSは業務サーバ機能のJavaアプリケーションの実行環境としてInterstage Application Serverを提供しているため、そのノウハウ

を活かして開発・運用できます。

また、サーバサイドでは双方向通信サービスが提供するライブラリ(Java)により、スマートデバイスの特徴を活かしたアプリケーション

開発も実現できます。

1.2 クライアントのアプリケーション

IMAPSを利用して開発できるアプリケーションの種類と、その概要を説明します。

ネイティブアプリケーション

ネイティブアプリケーションとは、OS固有のAPIで開発したアプリケーションです。そのため、スマートデバイスの特徴を活かしたア

プリケーションが開発できます。

IMAPSでは、ネイティブアプリケーションを作成する開発者向けに、Android、iOS、Windows用、ユーザー認証、データ暗号化、プ

ッシュ通知、ログを収集するAPIを提供しています。

ハイブリッドアプリケーション

ハイブリッドアプリケーションとは、ネイティブアプリケーションをベースにして、HTML5、JavaScript、CSS3などWeb標準技術で開発

するアプリケーションで、クロスプラットフォームに容易に対応できます。

IMAPSでは、クロスプラットフォーム・開発フレームワークであるApache Cordova(以降、Cordovaと記載します)をベースとした開発

ツールと、Cordova向けにユーザー認証やデータ暗号化などのAPIを提供しています。

Cordovaは、デバイス固有の機能(カメラやGPSなど)をJavaScriptでアクセスするプラグイン機能を提供しているため、アプリケーショ

ンからデバイスの機能を利用できます。

ハイブリッドアプリケーションはプラットフォーム展開に効果的ですが、実行速度はネイティブアプリケーションより劣ります。そのた

め、クリティカルな実行速度を求めるアプリケーションには、ネイティブアプリケーションが適しています。

Webアプリケーション

Webアプリケーションとは、HTML5、JavaScript、CSS3などWeb標準の言語やフレームワークで開発するアプリケーションで、スマー

トデバイスに搭載されているWebブラウザで動作します。

IMAPSでは、Webアプリケーションの開発に向けに、jQuery Mobileや双方向通信サービスのライブラリを提供しています。

1.2.1 アプリケーション形態の特徴と留意点

IMAPSがサポートするアプリケーション形態の特徴と留意点を以下に示します。

ネイティブ

アプリケーション

ハイブリッド

アプリケーション

Webアプリケーション

開発言語 ネイティブ

iOS:Objective-CAndroid:JavaWindows:C#

HTML5,JavaScript,CSS3ネイティブ(iOS:Objective-C、

Android:Java、Windows:C#)

HTML,JavaScript,CSS3

開発環境 iOS:Mac+XcodeAndroid:Android StudioWindows 8.1 ストアアプリ:VisualStudio 2013以降

Windows 10 UWPアプリ:VisualStudio 2015以降

iOS:Mac+XcodeAndroid:Android StudioWindows 8.1 ストアアプリ:VisualStudio 2013以降

Windows 10 UWPアプリ:VisualStudio 2015以降

テキストエディタ

事前作業 iOSの場合はApple社との開発

ライセンス契約(注)が必要

iOSの場合はApple社との開発

ライセンス契約が(注)必要

特になし

操作性 スマートデバイスの特徴を活か

した操作性

ブラウザ機能と同等 ブラウザ機能と同等

- 2 -

Page 15: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

ネイティブ

アプリケーション

ハイブリッド

アプリケーション

Webアプリケーション

アプリタイプ クラサバ型 クラサバ型 Web型

配布方法 Google Play(注),Appstore,Windowsストア,IMAPSの

アプリ配布機能

Google Play(注),Appstore,Windowsストア ,IMAPSの

アプリ配布機能

なし(サーバに配備)

注) 必要なライセンス、契約については、1.2.2 必要なライセンスを参照

各アプリケーションの形態とIMAPSが提供するAPIの関係は、次のとおりです。図中のWebViewは、IMAPSが提供しているCordovaフレームワークに含まれているブラウザ機能で、アプリケーションに記述されたHTML5, JavaScript CSS3を解釈します。

1.2.2 必要なライセンス

アプリケーションの開発や配布には、スマートデバイスOSの供給元の定めるライセンス契約が必要です。

Androidの場合

Google Playでアプリを配布するには、Google社との契約(Google Play Developer への登録)が必要

iOSの場合

開発ライセンスとして、iDP(iOS Developer Program)または、iDEP(iOS Developer Enterprise Program)が必要

Windowsの場合

Windowsストアでアプリを配布するには、アプリケーション開発者契約が必要

1.3 サーバのアプリケーション

IMAPSは、業務サーバを構築するためのJavaアプリケーション実行環境として、Interstage Application Server を提供します。

IMAPSでは、Interstage Application ServerのJava EE 5、Java EE 6実行環境で開発する業務サーバに認証機能を組み込めます。

1.4 APIの概要

IMAPS が提供するAPI の概要を次に示します。

カテゴリ 概要

jQuery Mobile モバイル・アプリケーションのユーザーインタフェースの開発に適したJavaScriptライブラリです。

IMAPSでは、jQuery Mobile 1.4.2を提供しており、Webアプリケーション、ハイブリッドアプリケーション

の開発で使用できます。

- 3 -

Page 16: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

カテゴリ 概要

双方向通信サービス 複数のクライアント間でリアルタイムに情報を共有するためのAPIです。APIはJavaScript、Java、Objective-Cを提供しており、Webアプリケーション、ハイブリッドアプリケーション、ネイティブアプリケーション、サ

ーバ側のアプリケーションの開発で使用できます。

プッシュ通知サービス プッシュ通知を実現するAPIで、サーバ側とクライアント側のAPIがあります。

サーバ側のAPIはWeb API(RESTインタフェース)で提供されます。クライアント側のAPIはJavaScriptとAndroid、iOS、Windowsに対応したネイティブAPIを提供しています。

Cordova API ハイブリッドアプリケーションを開発する際に使用するフレームワークです。IMAPSではApache Cordova3.6.4(AndroidおよびWindows)、Apache Cordova 3.6.3(iOS)を提供しています。従来はカメラやGPSな

どスマートデバイス特有機能を使う場合は、OSに依存したネイティブコードで開発しなければなりませ

んでした。しかし、Cordova APIを使用するとJavaScriptでデバイスを制御できるため、OSに依存せずア

プリケーションが共通化できる特徴があります。

SLS クライアントで扱うデータを暗号化し、デバイス上の領域にセキュアに格納するAPIです。APIはJavaScriptとAndroid、iOS、Windowsに対応したネイティブAPIを提供しています。

認証 クライアントからサーバに対してユーザー認証を行うためのAPIです。APIはJavaScriptとAndroid、iOS、

Windowsに対応したネイティブAPIを提供しています。

ログ収集 クライアントのアプリケーションによるログ出力と、出力したログをサーバへ送信するためのAPIです。ユ

ーザーの操作をログに出力し、サーバ側で分析するなど様々な目的に利用できます。APIはJavaScriptとAndroid、iOS、Windowsに対応したネイティブAPIを提供しています。

利用時間制御 利用時間を制御するAPIです。勤務時間外のモバイルアプリケーションの利用を防止します。APIはJavaScriptとAndroid、iOS、Windowsに対応したネイティブAPIを提供しています。

パーミッション 認証、SLS、プッシュ通知のAPIに必要なパーミッションをチェックするためのAPIです。APIはAndroidに対応したネイティブAPIを提供しています。Android6.0以上向けに開発する場合に使用します。

APIの仕様は、以下に格納されている開発者用マニュアルを参照してください。

<DVD-ROMドライブ>\apiref\index.html

<DVD-ROMマウントディレクトリ>/apiref/index.html

アプリケーション形態ごとに提供されるAPIを以下に示します。

表1.1 APIが対応しているアプリケーション形態(クライアント)

カテゴリ ハイブリッド

アプリケーション

ネイティブ

アプリケーション

Webアプリケーション

Android iOS Windows Android iOS Windows Android iOS Windows

jQuery Mobile ○ ○ - - - - ○ ○ ○

双方向通信

サービス

○ ○ - ○ ○ - ○ ○ ○

プッシュ通知 ○ ○ ○ ○ ○ ○ - - -

Cordova ○ ○ ○ - - - - - -

SLS ○ ○ ○ ○ ○ ○ - - -

認証 ○ ○ ○ ○ ○ ○ - - -

ログ収集 ○ ○ ○ ○ ○ ○ - - -

利用時間制御 ○ ○ ○ ○ ○ ○ - - -

パーミッション - - - ○ - - - - -

- 4 -

Page 17: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

表1.2 APIが対応しているアプリケーション形態(サ―バ)

カテゴリ Linux Windows

Java EE Java EE 6 Java EE Java EE 6

双方向通信サービス ○ ○ ○ ○

プッシュ通知 ○ ○ ○ ○

1.5 動作環境

作成したアプリケーションが動作するために必要なスマートデバイスの資源について説明します。

動作確認済スマートデバイス

動作確認済スマートデバイスは随時追加します。 新情報を以下のサイトの"動作環境"を参照してください。

http://interstage.fujitsu.com/jp/mobileapserver/index.html

- 5 -

Page 18: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

第2章 ハイブリッドアプリケーション

本章では、IMAPSを使用したハイブリッドアプリケーションの開発について説明します。

2.1 ハイブリッドアプリケーションの概要

ハイブリッドアプリケーションは、ネイティブアプリケーションとWebアプリケーションを組み合わせて開発するアプリケーションです。ネイ

ティブアプリケーションの中にHTMLやJavaScriptを解釈するレンダリングエンジンを組み込み、アプリケーションをHTMLやJavaScriptを中心に組み立てます。

IMAPSではハイブリッドアプリケーションの開発をサポートするために、Apache Cordovaを提供しています。

Apache Cordovaでは、Cordovaプラグインを使用することで、HTMLとJavaScriptだけでは、使用することができないスマートデバイスの

機能をハイブリッドアプリケーションから使用することができます。

本製品では、Apache Cordovaが標準で用意しているプラグインの他、本製品独自のCordovaプラグインを提供しています。

ハイブリッドアプリケーションは、Cordova CLIと呼ぶコマンドラインインターフェースで、作成するCordovaプロジェクトを使用して開発を

行います。 Cordova CLIの詳細については、付録E Cordova CLIを参照してください。

Apache Cordovaを使ったアプリケーション開発の詳細については、Apache Cordova Documentationを参照してください。

2.1.1 Cordovaプロジェクトの構造

Cordovaプロジェクトは以下のように構成されます。

+- hooks

+- merges

+- android

+- ios

+- windows

+- platforms

+- plugins

+- www

config.xml

www

HTMLで記述したアプリケーションのコードなどの保管先です

開発者は、主にこのwwwディレクトリの下にHTMLやCSS、JavaScriptを記述してアプリケーションを開発します。

plugins

アプリケーションで使用するプラグインの保管先です

platforms

プラットフォーム固有のファイルの保管先です

Android、iOSでネイティブ層への実装が必要な場合は、このフォルダ配下内で実装してください。

Windowsは、別途クラスライブラリのサブプロジェクトを作成し、ネイティブ層の実装を行う必要があります。

hooks

Cordova CLIの動作をカスタマイズするためのスクリプトの保管先です

cordova createコマンドでは作成されないので、必要に応じてディレクトリを作成してください

merges

プラットフォーム固有の資産の保管先です

アプリケーションのビルド時にmergesディレクトリのプラットフォームのディレクトの下に保管した資産でwww内の資産が上書きされ

ます

- 6 -

Page 19: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

cordova createコマンドでは作成されないので、必要に応じてディレクトリを作成してください

config.xml

Cordovaプロジェクトの設定ファイルです

設定内容については、Apache Cordova Documentationを参照してください

2.2 開発の流れ

ハイブリッドアプリケーションは、Cordova CLIと呼ぶコマンドラインインターフェースを使用して、 アプリケーションを作成します。

作成したアプリケーションは、スマートデバイスまたは、エミュレーターを使用してテストします。

また、作成したアプリケーションは、IMAPSサーバで配布することができます。

ここでは、以下の手順を説明します。

1. 開発環境の準備

2. アプリケーションの開発

3. 動作確認(デバッグ)

4. 配布

2.2.1 開発環境の準備

アプリケーションを開発する前に以下の作業が必要です。

1. 事前準備

2. 開発環境のインストール

3. 環境変数の設定

2.2.1.1 事前準備

ハイブリッドアプリーケーションを開発するには、アプリケーションをビルドするために、各ベンダーが提供するビルドツールが必要で

す。

アプリケーションのビルドに必要なビルドツールは、以下のとおりです。

プラットフォー

開発マシン ビルドツール

Android Windows 7(64 bit)以降、または、Mac OSX 10.10.4以降

JDK 7以降

Android SDK

・ Android SDK Tools

・ Android SDK Platform-tools

・ Android SDK Build-tools 19.1.0以上

・ Android SDK Platform(API level 14-23) 23を推奨

・ Android Support Repository

・ Google Repository

iOS Mac OS X 10.10.4以降 Xcode 7.x

・ iOS SDK 8以降

Windows Windows 8.1(64 bit)以降(Windows RTは

除く)

・ Visual Studio 2013以降(Windows 8.1 ストアアプリを開発する場合)

・ Visual Studio 2015以降(Windows 10 UWPアプリを開発する場合)

開発するWindowsアプリをビルドするために必要なライブラリを選択し

て、Visual Studioをインストールしてください。

- 7 -

Page 20: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

2.2.1.2 開発環境のインストール

以下の手順でハイブリッドアプリケーションの開発環境をインストールします。

1. インストーラーを、開発マシンに展開する。

インストーラーは、本製品のDVDから取得します。

・ <DVD-ROMドライブ>\development\cordova

・ <DVD-ROMマウントディレクトリ>/development/cordova

開発マシンに展開するファイルは、以下です。

・ 開発マシンが、Windowsの場合:Windows.zip

・ 開発マシンが、Mac OSの場合:MacOSX.tar.gz

2. インストーラーを実行する。

インストーラーを展開したディレクトリの下のファイルを実行します。

・ 開発マシンが、Windowsの場合:install.bat

・ 開発マシンが、Mac OSの場合:install.sh

参考

アンインストールする場合は以下のファイルを実行します。

・ 開発マシンが、Windowsの場合:uninstall.bat

・ 開発マシンが、Mac OSの場合:uninstall.sh

アンインストール後に残ったファイルは必要に応じて削除してください。

2.2.1.3 環境変数の設定

Cordova CLIを使用するために、環境変数を設定します。

環境変数は、Windowsの場合は、コマンドプロンプト、MacOSの場合は、ターミナル上で設定します。

環境変数は、コマンドプロンプト、ターミナルを開いた時に毎回設定してください。

開発マシンが、Windowsの場合

1. インストーラーの下のimaps.batを実行します。imaps.batは、Cordova CLIの実行に必要な環境変数を設定します。

2. 以下の環境変数を設定します。

環境変数名 値 備考

ANDROID_HOME Android SDKのインストール先 Android用クライアントアプリケーションを開

発をする場合に必要

PATH Android SDKのインストール先\tools

Android SDKのインストール先\platform-tools

Android用クライアントアプリケーションを開

発をする場合に必要

開発マシンが、Mac OSの場合

以下の環境変数を設定します。

環境変数名 値 備考

ANDROID_HOME Android SDKのインストール先 Android用クライアントアプリケーションを開発

をする場合に必要

GRADLE_USER_HOME Cordova CLIインストール先/gradle-2.2.1/.gradle

- 8 -

Page 21: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

環境変数名 値 備考

PATH Android SDKのインストール先/tools

Android SDKのインストール先/platform-tools

Android用クライアントアプリケーションを開発

をする場合に必要

Cordova CLIインストール先/nodejs/bin

2.2.1.4 外部ライブラリのインストール

開発に必要なその他のライブラリをインストールします。

IMAPS Coreプラグイン、IMAPS Pushプラグイン、IMAPS Cloud Pushプラグインを使用する場合、以下の手順でSQLiteをインストール

します。

注意

すでにSQLite for Windows Runtime(Windows 8.1)またはSQLite for Universal Windows Platformをインストール済みの場合はアンインストールしてから実行してください。

Windows 8.1 ストアアプリを開発する場合

以下のファイルを実行します。

<DVD-ROMドライブ>:\development\cordova\external\sqlite-winrt81-3130000.vsix

<DVD-ROMマウントディレクトリ>/development/cordova/external/sqlite-winrt81-3130000.vsix

Windows 10 UWPアプリを開発する場合

以下のファイルを実行します。

<DVD-ROMドライブ>:\development\cordova\external\sqlite-uwp-3130000.vsix

<DVD-ROMマウントディレクトリ>/development/cordova/external/sqlite-uwp-3130000.vsix

2.2.2 アプリケーションの開発

ハイブリッドアプリケーションは、Cordova CLIを使用して、アプリケーションの作成・ビルド・テスト・パッケージングをします。 コードは任

意のエディタで編集します。 開発の流れは以下のとおりです。

1. Cordovaプロジェクトの作成

2. プラグインの追加

3. プラットフォームの追加

4. コーディング

5. アプリケーションのビルド

2.2.2.1 Cordovaプロジェクトの作成

cordova createコマンドを使用して、新しいCordovaプロジェクトを作成します。

> cordova create hello com.fujitsu.imaps HelloWorld

作成したCordovaプロジェクトのフォルダーに移動します。

> cd hello

2.2.2.2 プラグインの追加

cordova plugin addコマンドを使用して、作成したCordovaプロジェクトに使用するCordovaプラグインを追加します。

また、不要となったCordovaプラグインは、cordova plugin removeコマンドで削除します。

- 9 -

Page 22: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

> cordova plugin add imaps-plugin-core

2.2.2.3 プラットフォームの追加

cordova platform addコマンドを使用して、作成したCordovaプロジェクトに使用するプラットフォームを追加します。

また、不要となったプラットフォームは、cordova platform removeコマンドで削除します。

> cordova platform add android ios

2.2.2.4 コーディング

HTML/JavaScript/CSSでアプリケーションを作成します。

任意のエディタを使用して作成します。

作成したプラットフォーム共通の資産は、wwwの下に保管します。 プラットフォーム固有の資産は、mergesの下に保管します。

2.2.2.5 アプリケーションのビルド

cordova buildコマンドで、追加したプラットフォーム用のアプリケーションをビルドします。

> cordova build

また、特定のプラットフォームのみをビルドすることもできます。

> cordova build ios

2.2.3 動作確認(デバッグ)作成したハイブリッドアプリケーションは、実機または、エミュレーターを使用して動作確認します。

cordova runまたは、cordova emulateコマンドで実行します。

HTML/JavaScriptは、ChromeやsafariのWebインスペクタを使用してデバッグできます。

2.2.4 パッケージング

アプリケーションをスマートデバイスにインストールできる形式にパッケージ化します。cordova compile/build/runでパッケージングを実

施します。

Androidの場合、署名なしのアプリケーションでもデバッグ環境では動作します。しかし、実際の端末で動作させる場合には署名が必

要です。

iOSの場合、パッケージングするために証明書のインストールおよびプロビジョニングファイルが必要です。

Windowsの場合、アプリケーションに署名が必要です。

詳細は各プラットフォームのドキュメントを参照してください。

Android

Android Developers

iOS

Apple Developers

Windows

Windows デベロッパー センター

2.2.4.1 Androidのパッケージング

cordova compile/build/runで以下を指定し、パッケージを作成します。

・ Gradleの設定

・ 署名の設定

- 10 -

Page 23: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

2.2.4.1.1 Gradleの設定

--gradleArgオプションにGradleのビルドプロパティを指定します。

--gradleArgオプションのプロパティは環境変数でも設定可能です。

以下の様に、「ORG_GRADLE_PROJECT_」というプレフィックスの付いた環境変数で定義できます。

例:

export ORG_GRADLE_PROJECT_cdvMinSdkVersion=20

ビルドプロパティ

プロパティ 説明

cdvBuildMultipleApks 指定した場合、ネイティブライブラリが対応するCPUアーキテクチャごと(x86, ARMな

ど)にAPKファイルを作成します。 省略すると、すべてのネイティブライブラリを含んだ

APKファイルを作成します。

cdvVersionCode AndroidManifest.xmlに指定したバージョン番号を上書きします。

cdvReleaseSigningPropertiesFile リリースビルド用の署名オプションが記載されたファイルを指定します。 省略した場合

は、build.gradleがあるディレクトリにrelease-signing.propertiesというファイルが存在すれ

ば、その値を読み込みます。

cdvDebugSigningPropertiesFile デバッグビルド用の署名オプションが記載されたファイルを指定します。 省略した場合

は、build.gradleがあるディレクトリにdebug-signing.propertiesというファイルが存在すれ

ば、その値を読み込みます。

cdvMinSdkVersion AndroidManifest.xmlに指定したminSdkVersionを上書きします。

cdvBuildToolsVersion android.buildToolsVersionの設定を上書きします。

cdvCompileSdkVersion android.compileSdkVersionの設定を上書きします。

実行例

cordova run android -- --gradleArg=-cdvMinSdkVersion=20

2.2.4.1.2 署名の設定

アプリケーションの署名の設定をします。

署名の指定方法は、3種類あります。

・ cordovaコマンドのplatformOpts

・ build.json

・ Gradle

cordovaコマンドのplatformOpts

クライアントアプリケーションで必要な値を以下のオプションで指定します。

オプション 説明

--keystore キーストアファイルへのパス

--storePassword キーストアのパスワード。

--alias プライベートキーのID

--password プライベートキーのパスワード

--keystoreType キーストアのタイプ。省略した場合は、自動判定する

リリース用にビルドする時には、storePassword、passwordを省略できます。省略した場合は、パスワードを入力するプロンプトを表示し

ます。

実行例

- 11 -

Page 24: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

cordova run android --release -- --keystore=../my-key.keystore --storePassword=pass00 --alias=myAlias --password=keypass00

build.json

build.jsonをCodrovaプロジェクトのルートディレクトリに配置します。

--buildConfigオプションでファイルを指定することもできます。

以下のフォーマットで指定します。

{

"android":{

"debug":{

"keystore":"keystore",

"storePassword":"store password",

"alias":"alias",

"password":"private key passsword",

"keystoreType":"keystore type"

},

"release":{

"keystore":"keystore",

"storePassword":"store password",

"alias":"alias",

"password":"private key passsword",

"keystoreType":"keystore type"

}

}

}

キー名 値

android Android用の定義です

debug デバッグ用の定義です

release リリース用の定義です

keystore キーストアファイルのパス

storePassword キーストアのパスワード

alias プライベートキーのID

password プライベートキーのパスワード

keystoreType キーストアのタイプ

リリース用にビルドする時には、storePassword、passwordを省略できます。省略した場合は、パスワードを入力するプロンプトを表示し

ます。

Gradle

以下の場所に、release-signing.properties(リリース用)、debug-signing.properties(デバッグ用)を配置します。

<Cordovaプロジェクト>/platforms/anrdoid

<Cordovaプロジェクト>\platforms\anrdoid

--gradleArgオプションのcdvReleaseSigningPropertiesFile(リリース用)、cdvDebugSigningPropertiesFile(デバッグ用)でファイルを指定す

ることもできます。

以下のフォーマットで指定します。

storeFile=keystore

storePassword=store password

storeType=pkcs12

- 12 -

Page 25: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

keyAlias=alias

keyPassword=private key passsword

キー名 値

storeFile キーストアファイルのパス

storePassword キーストアのパスワード

storeType キーストアのタイプ

keyAlias プライベートキーのID

keyPassword プライベートキーのパスワード

リリース用にビルドする時には、storePassword、passwordを省略できます。省略した場合は、パスワードを入力するプロンプトを表示し

ます。

2.2.4.2 iOSのパッケージング

cordova compile/build/runで以下を指定し、パッケージを作成します。

・ 署名の設定

2.2.4.2.1 署名の設定

アプリケーションの署名の設定をします。

署名の指定方法は、2種類あります。

・ cordovaコマンドのplatformOpts

・ build.json

cordovaコマンドのplatformOpts

クライアントアプリケーションで必要な値を以下のオプションで指定します。

パラメーター

オプション 説明

--codeSignIdentity コード署名ID

--provisioningProfile プロビジョニングプロファイルのGUID

実行例

cordova run ios --release -- --codeSignIdentity=Fujitsu --provisioningProfile=MyApp.mobileprovision

参考

コード署名IDは事前にXcodeで生成し、キーチェーンに追加する必要があります。

プロビジョニングプロファイルのGUIDは、開発マシンの(~/Library/MobileDevice/Provisioning Profiles/)にあります。

build.json

build.jsonをCodrovaプロジェクトのルートディレクトリに配置します。

--buildConfigオプションでファイルを指定することもできます。

以下のフォーマットで指定します。

{

"ios":{

"debug":{

"codeSignIdentity":"Code signing identity",

- 13 -

Page 26: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

"provisioningProfile":"provisioning profile"

},

"release":{

"codeSignIdentity":"Code signing identity",

"provisioningProfile":"provisioning profile"

}

}

}

キー名 値

ios iOS用の定義です

debug デバッグ用の定義です

release リリース用の定義です

codeSignIdentity コード署名ID

provisioningProfile プロビジョニングプロファイルのGUID

参考

コード署名IDは事前にXcodeで生成し、キーチェーンに追加する必要があります。

プロビジョニングプロファイルのGUIDは、開発マシンの(~/Library/MobileDevice/Provisioning Profiles/)にあります。

2.2.4.3 Windowsのパッケージング

cordova compile/build/runで以下を指定し、パッケージを作成します。

・ ビルドオプション

・ プロセッサアーキテクチャ

・ 署名の設定

2.2.4.3.1 ビルドオプション

--appxオプションに作成するアプリケーションのターゲットとなるOSを指定します。

以下の値が指定できます。省略した場合は、Windows 8.1 ストアアプリ用にビルドします。

8.1-win

Windows 8.1 ストアアプリ

uap

Windows 10 UWPアプリ

実行例

cordova run windows -- --appx=uap

2.2.4.3.2 プロセッサアーキテクチャ

--archsオプションにビルドターゲットとなるプロセッサアーキテクチャを指定します。

以下の値を指定します。

・ anycpu

・ x86

・ x64

・ arm

複数のプラットフォームを指定する場合は、半角スペースで区切って指定します。

- 14 -

Page 27: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

省略した場合、すべてのプロセッサ用(anycpu)にビルドしますが、anycpuをサポートしていないCordovaプラグインがあります。

Cordovaプラグインのサポート状況は、以下のとおりです。

No. プラグイン anycpuのサポート

8.1 10

1 Camera ○ ○

2 Console ○ ○

3 Contacts ○ ○

4 Device ○ ○

5 Device Motion ○ ○

6 Device Orientation ○ ○

7 Notification ○ ○

8 File ○ ○

9 File Transfer ○ ○

10 Geolocation ○ ○

11 Globalization ○ ○

12 InAppBrowser ○ ○

13 Media ○ ○

14 Capture ○ ○

15 Network Information ○ ○

16 Splashscreen ○ ○

17 StatusBar ○ ○

18 Test Framework ○ ○

19 IMAPS Core × ×

20 IMAPS Application Available Time Control × ×

21 IMAPS Cloud Push × ×

22 Keyboard ○ ○

23 Beacon × ○

24 BarcodeScanner ○ ×

25 Screen Orientation ○ ×

2.2.4.3.3 署名の設定

アプリケーションの署名の設定をします。

署名の指定方法は、2種類あります。

・ cordovaコマンドのplatformOpts

・ build.json

cordovaコマンドのplatformOpts

クライアントアプリケーションで必要な値を以下のオプションで指定します。

オプション 説明

--packageCertificateKeyFile パッケージ署名証明書のパス

--packageThumbprint パッケージ署名証明書鍵ファイルを検証するための値

- 15 -

Page 28: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

オプション 説明

--publisherId パッケージ署名署名書の発行者情報

実行例

cordova run windows --release -- --packageCertificateKeyFile="platforms\windows\CordovaApp_TemporaryKey.pfx" --

packageThumbprint="ABCABCABCABC123123123123"

参考

パッケージ署名証明書鍵ファイルは、証明書鍵作成時に作成されたものを使用します

build.json

build.jsonをCodrovaプロジェクトのルートディレクトリに配置します。

--buildConfigオプションでファイルを指定することもできます。

以下のフォーマットで指定します。

{

"windows":{

"debug":{

"packageCertificateKeyFile":"certificate file"

},

"release":{

"packageCertificateKeyFile":"certificate file",

"packageThumbprint":"package thumbprint",

"publisherId":"publisher id"

}

}

}

キー名 値

windows Windows用の定義です

debug デバッグ用の定義です

release リリース用の定義です

packageCertificateKeyFile パッケージ署名証明書のパス

packageThumbprint パッケージ署名証明書鍵ファイルを検証するための値

publisherId パッケージ署名署名書の発行者情報

参考

パッケージ署名証明書鍵ファイルは、証明書鍵作成時に作成されたものを使用します

2.2.4.4 パッケージング

IMAPSサーバでアプリケーションを配布する場合

IMAPSサーバでアプリケーションを配布する場合は、パッケージ化したファイルを含めた以下のようなzip形式のアーカイブファイルを

作成します。

- 16 -

Page 29: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

それぞれのファイルについて説明します。以下のファイルをzipファイルのルートフォルダーに含めます。

・ アプリケーション本体

パッケージ化したアプリケーション本体です。拡張子はAndroidの場合はapk、iOSの場合はipa、Windowsの場合はappxです。

アプリケーションのバージョンと識別IDは255文字以降は無視されます。

バージョンはアプリケーションのバージョンです。

パッケージは、アプリケーションを特定するための値です。アプリケーションのプラットフォームごとに以下の値を参照します。

Androidアプリケーションの場合

AndroidManifext.xmlのpackage属性の値です。

iOSアプリケーションの場合

Info.plistのCFBundleIdentifierの値です。

Windowsアプリの場合

Package.appxmanifestのIdentity要素のName属性の値です。

・ 説明ファイル

アプリ詳細画面でアプリケーションの説明欄に表示する文章を定義するファイルです。ファイルはUTF-8で記載します。

日本語の説明はdescription_ja.txt、英語の説明はdescription.txtに記載します。

説明文は、0文字以上4000文字以下の範囲で記載できます。

省略時は空文字になります。

・ アイコン

IMAPSサーバによる配布画面上で利用されるアイコンです。アイコンの推奨サイズは96x96ピクセル以上で縦横の幅が同じ画像で

す。ファイルはpng形式でファイル名はicon.pngです。

省略時はデフォルトのアイコンになります。

・ そのほか

アプリケーションをインストールするための依存ファイルなどです。Windowsアプリの場合は、依存関係にあるファイルもアプリケー

ション本体との位置関係を維持したままzipファイルに含めます。

- 17 -

Page 30: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

注意

IMAPSサーバによる配布をするには、プラットフォームごとに以下の条件があります。丸括弧内は、主に対応が必要となる人物です。

ここで説明されている内容は、各ベンダーによって変更される可能性があります。 新の情報は、それぞれの公開情報を参照してくだ

さい。

Android

(アプリケーション利用者) 配布されたアプリケーションをインストールするには、スマートデバイスの[提供元不明のアプリのインスト

ール]を許可する設定にします。

(システム管理者) IMAPSサーバを自己発行証明書を使用してSSLで運用している場合、ブラウザ(IMAPSサーバによる配布画面

など)でアプリケーションをダウンロードできないことがあります。その場合はHTTPで運用するか、または、認証局が発行した正式な

証明書を利用してください。

(システム管理者) Androidの標準ブラウザを使用しており、ネットワーク接続にプロキシを使用している場合、アプリケーションを正

常にダウンロードできないことがあります。その場合は、プロキシを不使用でIMAPSサーバに接続するように端末のネットワーク設

定を変更してください。

(システム管理者) Android版Chromeブラウザでアプリケーションをダウンロードする場合、セキュリティ上の理由で確認メッセージ

が表示されます。ファイル名を確認し、問題なければ[OK]ボタンをタップすれば、アプリケーションをダウンロードできます。

iOS

(アプリケーション開発者) Apple社とのiOS Developer Enterprise Program契約が必要です。アプリケーション作成時に、この契約

によって入手できる適切なプロビジョニングプロファイルを使用してください。

(システム管理者) iOS7.1から、SSL(HTTPS)が前提となります。IMAPSサーバをSSLで運用してください。

Windows

(システム管理者) Microsoft社とのサイドローディング契約が必要です。

(アプリケーション開発者) アプリケーションを信頼できるルート証明書にチェーンされた証明書を使って署名する。

(アプリケーション利用者) インストール先のスマートデバイスをActive Directoryドメインに追加するか、インストール時に開発者ライ

センス認証を行う。

(アプリケーション利用者) インストール先のスマートデバイスのグループポリシー[信頼できるすべてのアプリのインストールを許可

する]を有効にする。

アプリケーション利用者の操作は、アプリケーション作成時に生成されるAdd-AppDevPackage.ps1ファイルを利用することでも実行

できます。

以下のように実行します。

・ (システム管理者) あらかじめこのファイルと、そのほかのアプリケーションのインストールに必要なファイルをzip形式のアーカイ

ブに含めてIMAPSサーバに登録します。

・ (アプリケーション利用者) zipファイルをダウンロード・展開し、Add-AppDevPackage.ps1ファイルを右クリックして、[PowerShellで実行]を選択します。

・ (アプリケーション利用者) 画面に表示される質問に答えることでインストールできます。

※正式なインストール手順はマイクロソフト社のドキュメントを参照してください。

http://technet.microsoft.com/ja-jp/windows/jj874388.aspx

2.2.5 配布

開発したアプリケーションを配布する方法は、"運用ガイド"の"IMAPSクライアントアプリケーションの配布"を参照してください。

2.3 Cordovaプラグイン

本製品が提供するCordovaプラグインの一覧です。

各CordovaプラグインのIDとバージョンは、cordova plugin searchコマンドで確認できます。

- 18 -

Page 31: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

No. 名前 サポートOS

Android iOS Windows

1 Battery ○ ○ ×

2 Camera ○ ○ ○

3 Compat ○ ○ ○

4 Console × ○ ○

5 Contacts ○ ○ ○

6 Crosswalk WebView Engine ○ × ×

7 Device ○ ○ ○

8 Device Motion ○ ○ ○

9 Device Orientation ○ ○ ○

10 Notification ○ ○ ○

11 File ○ ○ ○

12 File Transfer ○ ○ ○

13 Geolocation ○ ○ ○

14 Globalization ○ ○ ○

15 InAppBrowser ○ ○ ○

16 Media ○ ○ ○

17 Capture ○ ○ ○

18 Network Information ○ ○ ○

19 Screen Orientation ○ ○ △(Windows 8.1のみ)

20 Splashscreen ○ ○ ○

21 StatusBar ○ ○ ○

22 Test Framework ○ ○ ○

23 Vibration ○ ○ ×

24 Whitelist ○ × ×

25 Cordova WKWebView Engine × ○ ×

26 IMAPS Application Available Time Control ○ ○ ○

27 Beacon ○ ○ △(Windows 10のみ)

28 IMAPS Core ○ ○ ○

29 IMAPS Push ○ × ×

30 IMAPS Cloud Push ○ ○ ○

31 IMAPS Push Properties ○ ○ ○

32 IMAPS Zip File ○ ○ ×

33 Keyboard ○ ○ ○

34 BarcodeScanner ○ ○ ○

2.3.1 BatteryBatteryプラグインとは、スマートデバイスのバッテリーの状態を確認することができるプラグインです。

- 19 -

Page 32: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

アプリケーションは、以下の3つのイベントを受け取ることができます。

batterystatus

バッテリーの残量が変更になった場合、または、電源に接続/切断した場合に通知します。

batterycritical

バッテリーの残量が閾値よりも少なくなった場合に通知します。閾値はスマートデバイスに依存します。

batterylow

バッテリーの残量が充電が必要な閾値よりも少なくなった場合に通知します。閾値はスマートデバイスに依存します。

詳細は、Apache Cordova Documentationを参照してください。

2.3.2 CameraCameraプラグインとは、スマートデバイスのカメラを使用して写真の撮影やイメージを選択することができるプラグインです。

詳細は、Apache Cordova Documentationを参照してください。

2.3.3 CompatCompatプラグインは、下位バージョンのCordovaとの互換性を必要とするプラグインを使用する場合に必要なプラグインです。

本プラグインは、単体で使用しません。本製品が提供するプラグインでは、BarcodeScannerプラグインを追加すると自動的に追加され

ます。

2.3.4 ConsoleConsoleプラグインとは、ログ出力関数を追加するプラグインです。

詳細は、Apache Cordova Documentationを参照してください。

2.3.5 ContactsContactsプラグインとは、スマートデバイスの連絡先にアクセスするためのプラグインです。

詳細は、Apache Cordova Documentationを参照してください。

2.3.6 Crosswalk WebView EngineCrosswalk WebView Engineプラグインとは、HTML5のレンダリング/JavaScriptの実行をOSが提供するWebViewの代わりに実行する

プラグインです。

スマートデバイス間の動作差異がないことと、OSが提供するWebViewよりもパフォーマンスが良いといった特徴があります。

詳細は、https://github.com/crosswalk-project/cordova-plugin-crosswalk-webviewを参照してください。

2.3.7 DeviceDeviceプラグインとは、スマートデバイスの各種情報を取得するためのプラグインです。

詳細は、Apache Cordova Documentationを参照してください。

2.3.8 Device MotionDevice Motionプラグインとは、スマートデバイスの加速度センサーを使用するためのプラグインです。

詳細は、Apache Cordova Documentationを参照してください。

2.3.9 Device OrientationDevice Orientationプラグインとは、スマートデバイスの地磁気センサーにアクセスするためのプラグインです。

- 20 -

Page 33: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

詳細は、Apache Cordova Documentationを参照してください。

2.3.10 NotificationDialogsプラグインとは、スマートデバイスのネイティブダイアログにアクセスするためのプラグインです。

詳細は、Apache Cordova Documentationを参照してください。

2.3.11 FileFileプラグインとは、スマートデバイスのファイルを読み書きするためのプラグインです。

詳細は、Apache Cordova Documentationを参照してください。

2.3.12 File TransferFile Transferプラグインとは、ファイルをアップロード/ダウンロードするためのプラグインです。

詳細は、Apache Cordova Documentationを参照してください。

2.3.13 GeolocationGeolocationプラグインとは、スマートデバイスの位置情報を取得するためのプラグインです。

詳細は、Apache Cordova Documentationを参照してください。

2.3.14 GlobalizationGlobalizationプラグインとは、スマートデバイスの利用者が設定したロケールや言語、タイムゾーンに固有の処理をするためのプラグイ

ンです。

詳細は、Apache Cordova Documentationを参照してください。

2.3.15 InappbrowserInappbrowserプラグインとは、ブラウザの画面を開くためのプラグインです。

詳細は、Apache Cordova Documentationを参照してください。

2.3.16 MediaMediaプラグインとは、スマートデバイスのオーディオファイルを録音/再生するためのプラグインです。

詳細は、Apache Cordova Documentationを参照してください。

2.3.17 CaptureMedia Captureプラグインとは、スマートデバイスのオーディオ/イメージ/ビデオ機能にアクセスするためのプラグインです。

詳細は、Apache Cordova Documentationを参照してください。

2.3.18 Network InformationNetwork Informationプラグインとは、ネットワークの状態を取得するためのプラグインです。

詳細は、Apache Cordova Documentationを参照してください。

2.3.19 Screen OrientationScreen Orientationプラグインとは、スマートデバイスの画面の向きを固定するためのプラグインです。

本プラグインの使用方法は、https://github.com/apache/cordova-plugin-screen-orientationを参照してください。

- 21 -

Page 34: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

2.3.20 SplashscreenSplashscreenプラグインとは、アプリケーションの起動中に表示するスプラッシュスクリーンを制御するためのプラグインです。

詳細は、Apache Cordova Documentationを参照してください。

2.3.21 StatusbarStatusbarプラグインとは、ステータスバーをカスタマイズするためのプラグインです。

詳細は、Apache Cordova Documentationを参照してください。

2.3.22 Test FrameworkTest Frameworkプラグインとは、Cordovaプラグインをテストするためのフレームワークを提供するためのプラグインです。

詳細は、Apache Cordova Documentationを参照してください。

2.3.23 VibrationVibrationプラグインとは、スマートデバイスを振動させるためのプラグインです。

詳細は、Apache Cordova Documentationを参照してください。

2.3.24 WhitelistWhitelistプラグインとは、ホワイトリストによるアクセス制御をするためのプラグインです。

詳細は、Apache Cordova Documentationを参照してください。

2.3.25 Cordova WKWebView EngineCordova WKWebView Engineとは、iOSでUIWebViewのかわりに、WKWebViewを使用するためのプラグインです。

本プラグインは、iOS 9.0 SDK以降で利用できます。

詳細は、https://github.com/apache/cordova-plugin-wkwebview-engineを参照してください。

2.3.26 IMAPS Application Available Time ControlIMAPS Application Available Time Controlプラグインとは、利用可能な時間を制御するためのプラグインです。

利用時間の制御を開始するにはimaps.appmanager.initWithDefUrlメソッドを使用します。 利用時間外であることはコールバック関数で

通知されます。

注意

Windowsアプリの場合、cordova compile/build/runを--archsオプションを指定して実行してください。 詳細は、2.2.4.3.2 プロセッサアーキテクチャを参照してください。

使用例

以下の場合に、それぞれ別の処理をする使用例を示しています。

・ 利用時間の制御の開始処理で利用時間外であった場合

・ 利用時間の制御の開始処理後に利用時間外となった場合

・ 利用時間の制御の開始処理で利用不可能な日であった場合

・ 利用時間の制御の開始処理後に利用不可能な日となった場合

- 22 -

Page 35: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

function checkTime() {

imaps.appmanager.initWithDefUrl(resultHandler, errorHandler, execAtInValidTime);

}

function execAtInValidTime(result) {

var startTime = result.startTime;

var endTime = result.endTime;

var isStarted = result.isStarted;

var status = result.status;

if(isStarted == true) {

if(status == 1) {

// 開始処理後に利用時間外となった場合の処理

} else {

// 開始処理後に利用不可能な日となった場合の処理

}

} else {

if(status == 1) {

// 開始処理で利用時間外であった場合の処理

} else {

// 開始処理で利用不可能な日であった場合の処理

}

}

}

function resultHandler(result){

// 開始処理が成功した場合の処理

}

function errorHandler(error) {

// 開始処理で例外が発生した場合の処理

}

利用時間の情報を取得します。利用時間の制御の開始処理後に使用します。

function getStartTime() {

imaps.appmanager.getStartTime(resultHandler, errorHandler); // 利用時間の開始時間を取得する場合

}

function resultHandler(result){

alert("result: \r\n"+result );

}

function errorHandler(error) {

alert("Error: \r\n"+error );

}

利用時間の制御を終了します。利用時間制御の開始処理後に利用時間外になる前に、終了する場合に使用します。

function destroy() {

imaps.appmanager.destroy(resultHandler, errorHandler);

}

function resultHandler(result){

alert("result: \r\n"+result );

}

function errorHandler(error) {

alert("Error: \r\n"+error );

}

- 23 -

Page 36: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

注意

・ クライアント設定ファイルのappmgr.strictPolicyModeの値がfalseの場合は、端末がオフラインでポリシー設定ファイルが更新されな

い場合や、 クライアントの時計が間違っている場合は、設定した時間外にアプリケーションが利用可能になる場合があります。詳細

は、付録C クライアント設定ファイルを参照してください。

2.3.27 BeaconBeaconプラグインとは、Beacon発信機からの信号を受信して、その場所にあったコンテンツの表示やお知らせメッセージの表示などを

制御するためのプラグインです。 Beaconプラグインが提供する機能は以下のとおりです。

・ Beacon受信機能

・ お知らせメッセージ表示機能

詳細は、APIリファレンスを参照してください。

2.3.27.1 Beacon受信機能

Beacon発信機からの信号を受信し、受信したイベントをコールバックAPIで受け取ります。

受信するイベントは、以下のとおりです。

イベント名 説明

IMLocationManager.DIDRANGEBEACONS Beacon受信中

IMLocationManager.ENTERREGION Beacon領域に入った

IMLocationManager.STARTMONITORINGREGION Beaconモニタリングスタート

IMLocationManager.EXITREGION Beacon領域から出た

IMLocationManager.MONITORINGDIDFAILFORREGION エラーが発生した

イベントはIMLocationManager.onで設定したコールバック関数で受け取ります。

コールバック関数の引数には、受信したイベントの情報がJSONで渡されます。 イベントの情報のフォーマットは以下のとおりです。

コールバック関数の引数の内容

キー名 値

event イベント名

検出したBeaconの番号(0からの連番) 検出したBeaconの情報。イベントがIMLocationManager.DIDRANGEBEACONSの時

に設定する。

検出したBeaconの情報

キー名 値

uuid 検出したBeaconのUUID

major 検出したBeaconのMajorID

minor 検出したBeaconのMinorID

proximity 近接レベル。1(近い)-3(遠い)

accuracy 検出したBeaconまでの距離(m)

rssi 精度

2.3.27.2 お知らせメッセージ表示機能

Beacon領域に入った時と出たときにスマートデバイスの通知領域にメッセージを出力することができます。

出力するメッセージは、APIを初期化する際に指定します。

- 24 -

Page 37: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

2.3.27.3 Beaconサンプル

以下にBeaconプラグインを使用する場合の実施例を示します。

使用例

document.addEventListener('deviceready', function(){

IMLocationManager.init("00000000-4e34-1001-b000-001c4dd35806",

"fuji.com",

"ようこそ○○",

"さよならXX",

function(success){alert(success)},

function(error){alert(success)}

);

});

IMLocationManager.on(function(list){

var view = document.getElementById("view");

view.innerHTML = "[event] " + list.event + "<br>";

if(list.event == IMLocationManager.DIDRANGEBEACONS){

view.innerHTML += "[length] " + list.infos.length + "<br>";

for(var i=0; i < list.infos.length ;i++){

view.innerHTML +="[uuid]"+ list.infos[i].uuid + "<br>";

view.innerHTML +="[major]" + list.infos[i].major + "<br>";

view.innerHTML +="[minor]" + list.infos[i].minor + "<br>";

view.innerHTML +="[proximity]"+ list.infos[i].proximity + "<br>";

view.innerHTML +="[accuracy]"+ list.infos[i].accuracy + "<br>";

view.innerHTML +="[rssi]" + list.infos[i].rssi + "<br>";

}

}

});

2.3.28 IMAPS CoreIMAPS Coreプラグインとは、以下の機能を利用するためのプラグインです。

・ 認証

・ SLS

・ ログ収集

注意

Windowsアプリの場合、cordova compile/build/runを--archsオプションを指定して実行してください。 詳細は、2.2.4.3.2 プロセッサアーキテクチャを参照してください。

2.3.28.1 各機能の設定

各機能の設定は、以下のクライアント設定ファイルを編集してください。

保管先

<Cordovaプロジェクトのルート>/plugins/imaps-plugin-core/properties

ファイル

・ Android用:imaps.properties

・ iOS用:imaps.plist

・ Windows用:imaps.xml

- 25 -

Page 38: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

2.3.28.2 認証プラグインとは

認証プラグインとは、IMAPSが提供している認証機能を使ったハイブリッドアプリケーションが容易に呼び出しができるように、Cordovaプラグインの形でAPIを提供しているものです。認証プラグインが提供している機能には、以下のようなものがあります。

・ ログイン

・ ログアウト

・ ユーザー情報の登録、取得、削除

・ SLS内のデータの引き継ぎ

・ 管理情報の設定

・ パスワード変更

・ タイムアウト検知

注意

Android6.0以上の場合、API(ログイン、ユーザー情報の登録、取得、削除、SLS内のデータの引き継ぎ、パスワード変更)の実行時に「通話の発信と管理」の許可を要求されますので、許可してください。これはAPIの実行に「android.permission.READ_PHONE_STATE」のパーミッションが必要であることと、Android6.0からアプリケーションのインストール時ではなく、起動した後にパーミッションをチェックするようになったためです。1回許可すれば、以後は要求されません。詳細はAndroidの公式サイトをご覧ください。

2.3.28.2.1 ログイン

アプリケーションは、IMAPSが提供している認証機構を呼び出して、利用しているユーザーの正当性を検証できます。ログインには以

下の種類があります。

オンライン認証

IMAPSサーバが提供している認証機能をネットワーク経由で呼び出し、サーバ側で認証

オフライン認証

クライアント内部で保持しているクレデンシャルを用いて認証

使用例

利用ユーザーの正当性を検証するため、ログインメソッドを呼び出します。オンライン認証を行うためには、imaps.auth.loginOnlineメソ

ッド、オフライン認証を行うためにはimaps.auth.loginOfflineメソッドを呼び出します。

var _userId, _passwd;

function login(loginUrl, userId, passwd) {

_userId = userId;

_passwd = passwd;

var networkState = navigator.connection.type;

if (networkState == Connection.UNKNOWN || networkState == Connection.NONE){

imaps.auth.loginOffline(resultHandler, errorHandler, _userId, _passwd);

}

else{

imaps.auth.loginOnline(

resultHandler,

function(result){

if (result == "IMAPSAuthConnectError")

imaps.auth.loginOffline(resultHandler, errorHandler, _userId, _passwd);

else

console.log("Login failure:" + result);

},

loginUrl,

_userId,

_passwd);

}

}

- 26 -

Page 39: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

function resultHandler(result) {

console.log("Login success:" + result );

}

function errorHandler(error) {

console.log("Login failure:" + error );

}

オフライン認証とは、クライアントが保持しているクレデンシャルを用いて利用ユーザーの正当性を検証する認証です。IMAPSサーバ

の認証機構を利用しないため、ネットワークが利用できない状態でも認証を行うことができます。オフライン認証を行うためには、オンラ

イン認証で一度、認証を完了しておく必要があります。

ネットワーク状態を気にせずにログインを実行したい場合には、imaps.auth.loginAutoメソッドを呼びます。loginAutoメソッドは、 適な

ログイン方法をネットワーク状態に応じて選択します。

ポイント

・ オンライン認証では、接続先のサーバをクライアント設定ファイルのimapsServerAddressで設定することも可能です。詳細は、開発

者用マニュアル、付録C クライアント設定ファイルを参照してください。

・ 認証プラグインでログインすることで、認証情報を付与することができます。

注意

・ Androidの場合、ログアウトを呼び出さずにアプリケーションを終了すると、再度アプリケーションを起動した時、ユーザー情報や認

証情報が残ったままになっている場合があります。アプリケーションの終了時、または起動時にログアウトを呼び出し、ユーザー情

報を初期化してください。

2.3.28.2.2 ログアウト

アプリケーションは、ログアウトを呼び出す事でユーザー情報を初期化できます。ログアウトメソッドは内部的にはIMAPSサーバの認証

機構を呼び出さないため、ネットワークが利用不可能な状態でも呼び出す事ができます。

使用例

function logout() {

imaps.auth.logout(resultHandler, errorHandler);

}

function resultHandler(result) {

console.log("Logout success: "+result );

}

function errorHandler(error) {

console.log("Logout error: "+error );

}

2.3.28.2.3 ユーザー情報の登録、取得、削除

クライアントアプリケーションがIMAPS以外の既存の業務システムを利用して認証を行っている場合、そのままではオフライン認証や認

証モードでのSLSを利用できません。

このような独自認証を行った場合、ユーザーの情報を登録する事で、これらの機能を利用する事ができます。

使用例

function login(userId, passwd) {

// 独自認証をおこなうメソッドを呼び出します。

user.own.method.login(userId, passwd);

imaps.auth.setLoginUserInfo(resultHandler, errorHandler, userId, passwd, "Fujitsu Tarou", ["Manager", "Developer"]);

}

function resultHandler(result) {

console.log("Success: "+result );

}

function errorHandler(error) {

- 27 -

Page 40: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

console.log("Error: "+error );

}

以下のAPIを利用すると、設定したユーザー情報が取得できます。

・ imaps.auth.getUserID

・ imaps.auth.getUserName

・ imaps.auth.getUserRole

使用例

function getUserId(userId) {

imaps.auth.getUserID(resultHandler, errorHandler, userId); // ユーザーIDを取得する場合

}

function resultHandler(result) {

console.log("Get user ID success: "+result );

}

function errorHandler(error) {

console.log("Get user ID Error: "+error );

}

登録したユーザー情報とSLSのデータは、以下のAPIを利用して削除することができます。

・ imaps.auth.deleteUserInfo

使用例

function deleteUser(userId) {

imaps.auth.deleteUserInfo(resultHandler, errorHandler, userId);

}

function resultHandler(result) {

console.log("Delete user success: "+result );

}

function errorHandler(error) {

console.log("Delete user error: "+error );

}

2.3.28.2.4 SLS内のデータの引き継ぎ

IMAPSでは、クライアント内にデータをセキュアに保存するための仕組みとして、SLSを提供しています(SLSについてはSLSを参照)。SLSを認証モードで利用している場合、格納データはパスワードをキーにして保護されています。

そのためパスワードが変更された場合、格納された暗号化データを引き継ぐ(暗号化データを新しいパスワードで再暗号化する)必要

があります。以下のAPIを呼び出した場合に、SLS内のデータ引き継ぎが必要である旨のエラーが返却されます。

・ imaps.auth.loginAuto

・ imaps.auth.loginOnline

・ imaps.auth.setLoginUserInfo

データ引き継ぎが必要な場合、上記メソッドはIMAPSSlsPasswordErrorを返却します。

使用例

function login(loginUrl, userId, passwd) {

imaps.auth.loginAuto(loginResult, loginError, loginUrl, userId, passwd);

}

function loginResult(result) {

console.log("Login success: "+result );

}

function loginError(error) {

if (error == "IMAPSSlsPasswordError") {

// パスワードが異なるため、データの引き継ぎができなかった場合にエラーが発生します。

// データの引き継ぎを行うかをユーザーに問い合わせ、

// データを引き継ぐ場合は、旧パスワードをユーザーに問い合わせます。

- 28 -

Page 41: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

// データを削除する場合は、deleteDataを呼び出します。

// 処理をキャンセルする場合は、logoutを呼び出します。

}

}

// データの引き継ぎを行う場合の処理

function transData(oldpasswd) {

imaps.auth.transData(resultHandler, errorHandler, oldpasswd);

}

function resultHandler(result) {

console.log("暗号化データの引き継ぎが完了しました。");

}

function errorHandler(error) {

if (error == "IMAPSSlsPasswordError") {

// 旧パスワードが異なるため、データの引き継ぎができなかった場合に

// エラーが発生します。

// 再度、データの引き継ぎを行うかをユーザーに問い合わせます。

}

}

2.3.28.2.5 管理情報による認証

管理情報とは、IMAPSサーバがクライアントからアクセスされた場合に、APIからのアクセスである事を確認するための情報の事です。

管理情報は、システム管理者によってIMAPSサーバに設定され、ユーザーの認証情報とは別に管理されます。

IMAPSサーバにアクセスするアプリケーションは、必ずアプリケーション内で管理情報を設定します。具体的にどのような管理情報を

設定するかは、システム管理者に問い合わせてください。管理情報は、1つのアプリケーション内で一度設定します。IMAPSサーバに

アクセスするAPIを呼び出すたびに実行する必要はありません。IMAPSサーバにアクセスするAPIを呼び出す際は、認証情報を付与

してアクセスします。

使用例

// 管理情報の設定

function setManageInfo(mgrId, passwd) {

imaps.auth.setManageInfo(resultHandler, errorHandler, mgrId, passwd);

}

function resultHandler(result) {

console.log("set manage infomation success: "+result );

}

function errorHandler(error) {

console.log("Error: "+error );

}

// IMAPSサーバにアクセス

function getContent(url) {

var xmlHttp;

xmlHttp = new XMLHttpRequest();

xmlHttp.open("GET",url, false);

imaps.auth.setRequestHeader(resultHandler2, errorHandler, xmlHttp);

}

function resultHandler2(result) {

xmlHttp.send(null);

if(imaps.auth.checkResponseHeader(xmlHttp)) {

console.log("SERVER TIME OUT");

} else{

console.log(xmlHttp.responseText);

}

}

- 29 -

Page 42: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

注意

異なるプロセスから管理情報を設定した場合は、IMAPSサーバにアクセスできません。

2.3.28.2.6 パスワード変更

パスワードの変更ができます。SLSを使ったデータが存在する場合には、新しいパスワードで引き継がれます。

使用例

function changePasswd() {

url = "http://xxxx ";

oldPasswd = "tarou00";

newPasswd = "tarou0000";

imaps.auth.changePasswd(resultHandler, errorHandler, url, oldPasswd, newPasswd);

}

function resultHandler(result) {

console.log("changed password success: "+result );

}

function errorHandler(error) {

// エラーの通知内容に応じて、エラー処理を実装します。

}

ポイント

クライアント設定ファイルのimapsServerAddressで接続先のサーバを設定できます。詳細は、開発者用マニュアル、付録C クライアント設定ファイルを参照してください。

2.3.28.2.7 タイムアウト検知

クライアントアプリケーションが一定時間IMAPSサーバにアクセスしない場合、IMAPSサーバでタイムアウトを発生させる事ができます。

クライアントアプリケーションはそのアプリケーションの性質によって、必要な処理を実装できます。タイムアウトは、以下の機能が提供

されています。

・ タイムアウト監視開始 (imaps.auth.chkTimeoutStart)

・ タイムアウト検知 (imaps.auth.isTimeout)

実装例

function onDeviceReady() {

document.addEventListener("pause", onPause, false);

document.addEventListener("resume", onResume, false);

}

function onPause() {

// 呼び元で以下のタイミングを検知し、タイムアウト開始時間を更新します。

// ・画面オフ

// ・画面がバックグラウンド

imaps.auth.chkTimeoutStart(resultTimeout, errorTimeout);

}

function onResume() {

imaps.auth.isTimeout(resultTimeout, failTimeout);

}

2.3.28.3 Secure Local Storage(SLS)プラグインとは

Secure Local Storage(SLS)プラグインとは、キーバリューペアのデータを暗号化してストレージに格納、復号化して取得できるAPIを提

供するCordovaプラグインです。

ハイブリッドアプリケーションからSLSを利用する場合、認証モードと認証レスモードがあります。

- 30 -

Page 43: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

認証モードで利用する場合、SLS のAPIを利用する前に、認証プラグインを利用して認証します。認証モードおよび認証レスモードで

SLSのAPIに違いはありません。認証モードではユーザー毎に異なる暗号化キーを利用してデータを暗号化するため、よりセキュリティ

強度を高められます。

SLSのプラグインが提供している機能には、以下があります。

・ データの格納、取得、削除

・ データの全削除

・ 格納されているデータ数取得

・ キーの取得

注意

Android6.0以上の場合、APIの実行時に「通話の発信と管理」の許可を要求されますので、許可してください。これはAPIの実行に「android.permission.READ_PHONE_STATE」のパーミッションが必要であることと、Android6.0からアプリケーションのインストール時ではなく、起動した後にパーミッションをチェックするようになったためです。1回許可すれば、以後は要求されません。詳細はAndroidの公式サイトをご覧ください。

2.3.28.3.1 データの格納および取得

SLSにデータを格納、および取得できます。格納されたデータはキーおよび値ともに暗号化されて格納され、取得時にはデータは復

号化されます。格納されるデータサイズは2GBを上限に、カスタマイズできます。詳細は、C.5.10 sls.maxDatabaseSizeを参照してくださ

い。

実施例

var _key;

function setItem(value) {

_key = "test";

imaps.sls.setItem(resultHandler, errorHandler, _key, value);

}

function getItem() {

imaps.sls.getItem(resultHandler, errorHandler, _key);

}

function resultHandler(result) {

if (result == null)

console.log("not found");

else

console.log("result: "+result );

}

function errorHandler(error) {

console.log("Error: "+error );

if (error == "IMAPSSlsError") {

// エラー処理

}

// 通知されたエラーコードの内容に応じて、エラー処理を実装します。

}

キー、値ともに空白を利用できます。格納時に同じキーに関連付いた値が既に存在する場合、値は上書きされます。データの取得を

指定した場合、成功時のコールバック関数に取得した値が渡されます。また、指定したキーに対応する値が存在しない場合、成功時

のコールバック関数に値がnullとして呼び出されます。

写真などのバイナリデータを格納する場合、データを変換してテキスト化する必要があります。

実施例

var _key;

function saveData(){

_key = "ImageTest";

var data = document.getElementById(Image_png).src;

setItem(_key, JSON.stringify(data));

}

- 31 -

Page 44: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

function setItem(_key, value) {

imaps.sls.setItem(resultHandler, errorHandler, _key, value);

}

function getItem(_key) {

imaps.sls.getItem(

function(value) {

if(value != ""){

var img = new Image(500, 500);

img.src = value;

document.getElementById(Image_png).src = value;

}

},

errorHandler,

_key

);

}

2.3.28.3.2 データの削除、データ数およびキーの取得

SLSのプラグインでは、格納されたデータの削除やキーを取得できます。

使用例

function length() {

imaps.sls.length(resultHandler, errorHandler);

}

function removeItem(key) {

imaps.sls.removeItem(resultHandler, errorHandler, key);

}

function key(index) {

imaps.sls.key(resultHandler, errorHandler, index);

}

function resultHandler(result) {

console.log("Success: "+result );

}

function errorHandler(error) {

console.log("Error: "+error );

if (error == "IMAPSSlsError") {

// エラー処理

}

// 通知されたエラーコードの内容に応じて、エラー処理を実装します。

}

2.3.28.3.3 サンプル

ボタンを押下するとAPIの実行結果をアラート表示するHTMLコンテンツサンプルを以下に示します。

<html>

<head>

<script type="text/javascript" src="imaps.js "></script>

<script type="text/javascript">

// length()

function length() {

imaps.sls.length(resultHandler, errorHandler);

}

// key(index)

function key(index) {

imaps.sls.key(resultHandler, errorHandler, index);

}

// setItem(key, value)

function setItem(key, value) {

imaps.sls.setItem(resultHandler, errorHandler, key, value);

- 32 -

Page 45: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

}

// getItem(key)

function getItem(key) {

imaps.sls.getItem(resultHandler, errorHandler, key);

}

// removeItem(key)

function removeItem(key) {

imaps.sls.removeItem(resultHandler, errorHandler, key);

}

// clearItem()

function clearItem() {

imaps.sls.clear(resultHandler, errorHandler);

}

//正常時のCallBack

function resultHandler(result) {

// length(), key(index), getItem(key)含め、結果はresultに設定される.

console.log("SUCCESS: "+result);

}

//異常時のCallBack.

function errorHandler(error) {

console.log("ERROR: "+error);

}

</script>

</head>

<body>

<button onclick="length();">Click to length</button><br>

<button onclick="key(0);">Click to key</button><br>

<button onclick="setItem('key', 'value');">Click to setItem</button><br>

<button onclick="getItem('key');">Click to getItem</button><br>

<button onclick="removeItem('key');">Click to removeItem</button><br>

<button onclick="clearItem();">Click to clear</button><br>

</body>

</html>

2.3.28.4 ログ収集プラグインとは

モバイルアプリケーションの開発・運用で一番困ることは、クライアント側で問題が発生した場合の調査が難しい事があげられます。ロ

グ収集プラグインは、クライアント側にログを蓄積しておき、IMAPSサーバに送信する機能を持つCordovaプラグインです。ログ収集プ

ラグインが提供している機能には、以下のようなものがあります。

・ ログ出力とサーバへの送信

・ ログ設定の変更

2.3.28.4.1 ログ出力とサーバへの送信

以下にログ出力と送信を行う実施例を示します。

実施例

<html>

<head>

<script type="text/javascript" src="imaps.js "></script>

<script type="text/javascript">

var success = function(result) {console.log("SUCCESS: "+result);};

var fail = function(error) {console.log("ERROR: "+error);};

function logDebug(msg) {

imaps.log.d(success, fail, msg);

}

function logError(msg) {

imaps.log.e(success, fail, msg);

}

function logInfo(msg) {

imaps.log.i(successr, fail, msg);

- 33 -

Page 46: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

}

function logWarning(msg) {

imaps.log.w(success, fail, msg);

}

function logSend(id) {

imaps.log.send(success, fail, id);

}

</script>

</head>

<body>

<button onclick="logDebug('debug log');">Write as debug level</button><br>

<button onclick="logError('error log');">Write as error level</button><br>

<button onclick="logInfo('info log' );">Write as info level</button><br>

<button onclick="logWarning('warning log' );">Write as warning level</button><br>

<button onclick="logSend('test');">Send a log to IMAPS server</button><br>

</body>

</html>

注意

・ ログ送信先は、クライアント設定ファイルのimapsServerAddressで設定します。詳細は、付録C クライアント設定ファイルを参照して

ください。

・ ログAPIのsend関数を使用するには、以下のどちらかの認証情報の設定が必要です。

1. loginOnlineによる認証設定

認証機能のloginOnline関数やloginAuto関数などで認証情報を設定してからsend関数を実行してください。

2. setManageInfoによる認証設定

ユーザー情報を持たないアプリケーションでsend関数を実行する場合の認証方法です。あらかじめIMAPSサーバの管理コ

マンドでアプリケーション管理者を作成し、認証機能のsetManageInfo関数で管理者情報を設定してからsend関数を実行して

ください。アプリケーション管理者の作成方法は、"運用ガイド"の"コマンドリファレンス"を参照してください。

2.3.28.4.2 ログ設定の変更

以下にログ設定の変更を行う実施例を示します。

実施例

ログ設定の例

function changeLogSettings() {

imaps.log.setLevel(successCallback, errorCallback, 'DEBUG');

imaps.log.setMaxFileSize(successCallback, errorCallback, 20);

imaps.log.setRotateCount(successCallback, errorCallback, 5);

imaps.log.getLevel(

function(level) {

console.log(level); // 'DEBUG'

},

errorCallback

);

imaps.log.getMaxFileSize(

function(size) {

console.log(size); // 20

},

errorCallback

);

imaps.log.getRotateCount(

function(count) {

console.log(count); // 5

},

- 34 -

Page 47: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

errorCallback

);

}

参考

ログAPIの設定はクライアント設定ファイルよりも優先されます。変更した内容は、アプリの再起動や更新によって失われません。

2.3.29 IMAPS PushIMAPS Pushプラグインとは、スマートデバイス上のアプリケーションの起動状態や利用者による更新操作などに依存せずに、 サーバ

からのメッセージをリアルタイムにスマートデバイスの利用者に通知する機能です。

本プラグインでは、IMAPSプッシュが利用できます。

プッシュ通知の詳細は、6.5.1 ハイブリッドアプリケーション向けのAPIの開発を参照してください。

2.3.30 IMAPS Cloud PushIMAPS Cloud Pushプラグインとは、スマートデバイス上のアプリケーションの起動状態や利用者による更新操作などに依存せずに、 サーバからのメッセージをリアルタイムにスマートデバイスの利用者に通知する機能です。

本プラグインでは、GCM、APNs、WNSが利用できます。

プッシュ通知の詳細は、6.5.1 ハイブリッドアプリケーション向けのAPIの開発を参照してください。

注意

Windowsアプリの場合、cordova compile/build/runを--archsオプションを指定して実行してください。 詳細は、2.2.4.3.2 プロセッサアーキテクチャを参照してください。

注意

WNSの設定後にアプリケーションを修正する場合の注意事項

WNSを使用するハイブリッドアプリケーションは、Visual Studioを使用してWNSの設定をする必要があります。

Visual StudioでWNSの設定をした後に、cordova build/run/emulate/prepareコマンドを実行すると、WNSが使用できなくなります。

Visual StudioでWNSの設定を行った後に、プラグインの変更やHTML/JavaScript等、アプリケーションを修正する場合は、 アプリ

ケーションを修正した後に以下の対処をしてください。

cordova build/run/emulateを実行した場合

1. cordova platform remove windowsを実行

2. cordova platform add windowsを実行

3. cordova prepareを実行

4. Visual StudioでWNSの設定をする

cordova prepareを実行した場合

以下のファイルのパッケージ名、パッケージ表示名、発行者表示名を、Visual Studioで修正する

Windows 8.1 ストアアプリの場合

package.windows.appxmanifest

Windows 10 UWPアプリの場合

package.windows10.appxmanifest

- 35 -

Page 48: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

Windows 10 UWPアプリでWNSを使用する場合の注意事項

package.windows10.appxmanifestのスタートページの値を以下のように修正します。

変更前

ms-appx-web://.../www/index.html

変更後

www/index.html

2.3.31 IMAPS Push PropertiesIMAPS Push Propertiesプラグインは、IMAPS Push/IMAPS Cloud Pushプロパティが共通で使用する機能を持ったプラグインです。

本プラグインは、単体で使用しません。IMAPS Push/IMAPS Cloud Pushを追加すると自動的に追加されます。

2.3.32 IMAPS Zip FileIMAPS Zip Fileプラグインとは、スマートデバイス上のファイルをZIP形式で圧縮/解凍するためのプラグインです。

詳細は、APIリファレンスを参照してください。

2.3.32.1 IMAPS Zip Fileサンプル

以下にIMAPS Zip Fileプラグインを使用する場合の実施例を示します。

使用例(圧縮)

IMZipFile.zip(source, destination,

function(result) {

// 成功時の処理

}, function(error) {

// 失敗時の処理

});

使用例(解凍)

IMZipFile.unzip(source, destination,

function(result) {

// 成功時の処理

}, function(error) {

// 失敗時の処理

});

2.3.33 KeyboardKeyboardプラグインとは、スマートデバイスのキーボードの表示・非表示の制御をするためのプラグインです。

詳細は、https://github.com/driftyco/ionic-plugin-keyboardを参照してください。

2.3.34 BarcodeScannerBarcodeScannerプラグインとは、スマートデバイスのカメラでバーコードを読み取るためのプラグインです。 他のバーコードを読み取る

プラグインと比較して、読み取りスピードが速いことと認識率が高いことが特徴です。

BarcodeScannerプラグインは、一次元バーコードと二次元バーコードの両方を読み取ることができます。 詳細は、APIリファレンスを参

照してください。

- 36 -

Page 49: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

注意

Windows10 UWPアプリの場合、cordova compile/build/runを--archsオプションを指定して実行してください。 詳細は、2.2.4.3.2 プロセッサアーキテクチャを参照してください。

2.4 プラグインの開発

IMAPSが提供しているプラグインの他にも、独自のCordovaプラグイン(カスタムプラグイン)を開発して、自由にアプリケーションに取り

込めます。 開発したプラグインは、cordova pluginコマンドでCordovaプロジェクトに追加します。

プラグイン開発の詳細は、Apache Cordova Documentationを参照してください。

2.5 注意事項

ハイブリッドアプリケーション開発時の注意事項を説明します。

2.5.1 CordovaプラグインのAPI使用時の注意事項

Cordovaプラグインが提供するAPIはdevicereadyイベントが発生した後で利用できます。

Cordovaプラグインが提供するAPIを使用した初期化処理などは、devicereadyイベントのリスナーから呼び出される関数内で行ってくだ

さい。

実施例

document.addEventListener('deviceready', onDeviceReady, false);

function onDeviceReady() {

// 初期化処理

}

2.5.2 WNSを使用する場合の注意事項

WNSの設定後にアプリケーションを修正する場合の注意事項

WNSを使用するハイブリッドアプリケーションは、Visual Studioを使用してWNSの設定をする必要があります。

Visual StudioでWNSの設定をした後に、cordova build/run/emulate/prepareコマンドを実行すると、WNSが使用できなくなります。

Visual StudioでWNSの設定を行った後に、プラグインの変更やHTML/JavaScript等、アプリケーションを修正する場合は、 アプリ

ケーションを修正した後に以下の対処をしてください。

cordova build/run/emulateを実行した場合

1. cordova platform remove windowsを実行

2. cordova platform add windowsを実行

3. cordova prepareを実行

4. Visual StudioでWNSの設定をする

cordova prepareを実行した場合

以下のファイルのパッケージ名、パッケージ表示名、発行者表示名を、Visual Studioで修正する

Windows 8.1 ストアアプリの場合

package.windows.appxmanifest

Windows 10 UWPアプリの場合

package.windows10.appxmanifest

- 37 -

Page 50: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

Windows 10 UWPアプリでWNSを使用する場合の注意事項

package.windows10.appxmanifestのスタートページの値を以下のように修正します。

変更前

ms-appx-web://.../www/index.html

変更後

www/index.html

2.5.3 Windowsアプリのビルド対象プロセッサについて

Windowsアプリアプリケーションをビルドする場合、デフォルトではすべてのプロセッサ用にビルドしますが、 すべてのプロセッサ用の

ビルドをサポートしていないCordovaプラグインがあります。

Windowsアプリをパッケージングする際に--archsオプションを指定してください。

Cordovaプラグインのサポート状況は、以下のとおりです。

No. プラグイン anycpuのサポート

8.1 10

1 Camera ○ ○

2 Console ○ ○

3 Contacts ○ ○

4 Device ○ ○

5 Device Motion ○ ○

6 Device Orientation ○ ○

7 Notification ○ ○

8 File ○ ○

9 File Transfer ○ ○

10 Geolocation ○ ○

11 Globalization ○ ○

12 InAppBrowser ○ ○

13 Media ○ ○

14 Capture ○ ○

15 Network Information ○ ○

16 Splashscreen ○ ○

17 StatusBar ○ ○

18 Test Framework ○ ○

19 IMAPS Core × ×

20 IMAPS Application Available Time Control × ×

21 IMAPS Cloud Push × ×

22 Keyboard ○ ○

23 Beacon × ○

24 BarcodeScanner ○ ×

25 Screen Orientation ○ ×

- 38 -

Page 51: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

2.5.4 Visual Studioを使用した場合の注意事項

Visual Studioを使用した場合の注意事項

Visual Studioでビルドした後に、プラグインの変更やHTML/JavaScript等、アプリケーションを修正する場合は、 アプリケーションを修

正した後に以下の対処をしてください。

1. cordova platform remove windowsを実行

2. cordova platform add windowsを実行

3. cordova prepareを実行

4. Visual Studioでビルドする

2.5.5 iOSでHTTP通信する場合の注意事項

iOS 9から、httpでの通信が、デフォルトでは利用できなくなりました。

以下のどちらかの対処をしてください。

・ IMAPSサーバをHTTPSでセットアップして、HTTPSで接続してください。

・ IMAPSサーバをHTTPで運用する場合は、info.plistにNSAppTransportSecurityの設定をしてください。

設定例1(すべてのドメインでhttpアクセスを有効にする)

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">

<plist version="1.0">

<dict>

...

<key>NSAppTransportSecurity</key>

<dict>

<key>NSAllowsArbitraryLoads</key>

<true/>

</dict>

</dict>

</plist>

設定例2(特定のドメインでhttpアクセスを有効にする)

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">

<plist version="1.0">

<dict>

...

<key>NSAppTransportSecurity</key>

<dict>

<key>NSExceptionDomains</key>

<dict>

<key>ドメイン</key>

<dict>

<key>NSExceptionAllowsInsecureHTTPLoads</key>

<true/>

</dict>

</dict>

</dict>

</dict>

</plist>

- 39 -

Page 52: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

第3章 ネイティブアプリケーション

本章では、IMAPSを使用したネイティブアプリケーションの開発について説明します。

3.1 ネイティブアプリケーションの概要

ネイティブアプリケーションは、OS固有のAPIで開発したアプリケーションでスマートデバイスの特長を生かしたアプリケーション開発が

できます。IMAPSでは、Android、iOS、およびクライアントのWindowsのネイティブアプリケーション向けにAPIを提供しています。

3.2 開発の流れ

ネイティブアプリケーションの開発の流れは、次のとおりです。

1. 開発環境の準備

2. 開発/パッケージング

3. 動作確認(デバッグ)

4. 配布

3.3 Androidアプリケーションの開発

IMAPSはネイティブアプリケーション向けに、認証、SLS、ログ送信、利用時間制御、プッシュ、双方向通信サービス、パーミッションの

APIを提供しています。認証のAPIを使用する場合は、SLSのAPIについての準備も行う必要があります。また、認証、SLS、プッシュの

APIを使用する場合で、インストール先の端末がAndroid6.0以上、かつ開発ツールでAPI Levelに23以上を設定して開発するときは、

パーミッションのAPIによる処理が必要になります。

プッシュのAPIを使用する場合は第6章 プッシュ通知機能を参照してください

クライアント設定ファイルの値を調整することで、アプリケーションの動作をカスタマイズできます。詳細は、付録C クライアント設定ファ

イルを参照してください。

詳細は各プラットフォームのドキュメントを参照してください。

3.3.1 開発環境の準備

開発に必要な開発マシンと開発ツールを用意します。

開発に必要な開発マシンのOSと開発ツールは以下のとおりです。

開発マシン

以下のどちらか

・ Windows 7以降

・ Mac OS X 10.9以降

開発ツール

・ Android Studio

API Levelは19以上が必要です。

3.3.2 ネイティブアプリケーションの開発をする(Android Studio)

参考

アプリケーション開発者用のAPIリファレンスは以下に格納されています。必要に応じて参照してください。

<DVD-ROMドライブ>\apiref\index.html

- 40 -

Page 53: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

<DVD-ROMマウントディレクトリ>/apiref/index.html

1. ネイティブアプリケーションの開発環境を準備後、Android StudioでAndroid用のプロジェクトを新規作成します。

2. 以下のjarファイルをアプリケーションプロジェクトで設定している配置先に追加します。

<DVD-ROMドライブ>\development\android\libs\imaps.jar

<DVD-ROMドライブ>\development\android\libs\imrtc.jar

<DVD-ROMドライブ>\development\android\libs\imappmanager.jar

<DVD-ROMマウントディレクトリ>/development/android/libs/imaps.jar

<DVD-ROMマウントディレクトリ>/development/android/libs/imrtc.jar

<DVD-ROMマウントディレクトリ>/development/android/libs/imappmanager.jar

jarファイルの配置先は、Android Studioのデフォルトでは以下です。

<プロジェクト>/app/libs

3. soファイルを含む各フォルダーをアプリケーションプロジェクトで設定している配置先に追加します。

<DVD-ROMドライブ>\development\android\libs\armeabi

<DVD-ROMドライブ>\development\android\libs\armeabi-v7a

<DVD-ROMドライブ>\development\android\libs\mips

<DVD-ROMドライブ>\development\android\libs\x86

<DVD-ROMマウントディレクトリ>/development/android/libs/armeabi

<DVD-ROMマウントディレクトリ>/development/android/libs/armeabi-v7a

<DVD-ROMマウントディレクトリ>/development/android/libs/mips

<DVD-ROMマウントディレクトリ>/development/android/libs/x86

soファイルを含む各フォルダーは、Android Studioのデフォルトでは以下のフォルダーを作成して配置します。

<プロジェクト>/app/src/main/jniLibs

4. 開発に必要なその他のライブラリ、ファイルの準備をおこないます。双方向通信サービスの APIのみ使用する場合は不要です。

・ log4j-1.2.17.jarダウンロードし、追加してください。

・ httpmime-4.2.5.jarダウンロードし、追加してください。

・ クライアント設定ファイル(imaps.properties)をプロジェクトの/app/src/main/assets/imaps/propertiesに入れます。

クライアント設定ファイルは以下に配置されています。

<DVD-ROMドライブ>\development\conf\imaps\imaps.properties

<DVD-ROMマウントディレクトリ>/development/conf/imaps/imaps.properties

詳細は、付録C クライアント設定ファイルを参照してください。

・ android-support-v4パーミッションのAPIを使用するときは、build.gradleのdependenciesにcom.android.support:support-v4(23以上)を追加してくだ

さい。以下は設定例です。

・・・

dependencies {

・・・

compile 'com.android.support:support-v4:23.4.0'

}

5. 利用するAPIによって、必要なパーミッションをAndroidManifest.xmlに定義します。

- 41 -

Page 54: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

認証

<uses-permission android:name="android.permission.INTERNET"/>

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

SLS

<uses-permission android:name="android.permission.INTERNET"/>

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

ログ収集

<uses-permission android:name="android.permission.INTERNET"/>

利用時間制御

<uses-permission android:name="android.permission.INTERNET"/>

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

プッシュ通知

<uses-permission android:name="android.permission.INTERNET"/>

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

端末ブート時にプッシュサービスを起動する際には以下も必要です。

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

バイブレーションを鳴動させるためには以下も必要です。

<uses-permission android:name="android.permission.VIBRATE"/>

GCMを利用するためには以下も必要ですが、Android4.0.4以上の場合は"android.permission.GET_ACCOUNTS"は不要で

す。

<permission android:name="[アプリpackage名].permission.C2D_MESSAGE" android:protectionLevel="signature"/>

<uses-permission android:name="[アプリpackage名].permission.C2D_MESSAGE" />

<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/>

<uses-permission android:name="android.permission.WAKE_LOCK"/>

<uses-permission android:name="android.permission.GET_ACCOUNTS"/>

双方向通信サービス

<uses-permission android:name="android.permission.INTERNET"/>

注意

作成したプロジェクトのマニフェストファイル(AndroidManifest.xml)のpackageには、[com.fujitsu.imaps]を指定しないでください。

注意

build.gradleのcompileSdkVersionに23を指定して、認証APIの以下のメソッドを使用する場合、

・ com.fujitsu.imaps.plugin.auth.javaapi.LoginManager

- checkServerTimeout メソッド

- saveResponseAuth メソッド

- setRequestAuth メソッド

- 42 -

Page 55: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

build.gradleに以下を追加してください。

android {

.....

useLibrary 'org.apache.http.legacy' //この行を追加

.....

}

useLibraryの追加をしないと、認証APIでコンパイルエラーが発生します。

3.3.3 認証

本節では、認証APIの利用方法について説明します。

認証のAPIでは、オフライン認証を行うため、オンライン認証が成功すると認証情報をSLSに保存します。そのため、認証APIを使用す

る場合は、SLSのAPIについての準備も行う必要があります。

インストール先の端末がAndroid6.0以上、かつ開発ツールでAPI Levelに23以上を設定して開発するときは、パーミッションのAPIにつ

いての準備も行う必要があります。

3.3.3.1 認証APIIMAPSの認証APIは以下の機能を提供しています。

・ ログイン

・ ログアウト

・ 認証情報の付与

・ 管理情報の設定

・ パスワード変更

・ ユーザー情報の登録、取得、削除

・ SLS内のデータの引き継ぎ

・ タイムアウト検知

3.3.3.2 ログイン

アプリケーションは、IMAPSが提供している認証機構を呼び出して、利用しているユーザーの正当性を検証できます。ログインには以

下の種類があります。

・ IMAPSサーバが提供している認証機能をネットワーク経由で呼び出し、サーバ側で認証するオンライン認証

・ クライアント内部で保持しているクレデンシャルを用いて認証する、オフライン認証

注意

Androidの場合、ログアウトを呼び出さずにアプリケーションを終了すると、再度アプリケーションを起動したときに、ユーザー情報や認

証情報が残ったままになっている場合があります。

アプリケーション終了時、または起動時にログアウトを呼び出して、ユーザー情報を初期化してください。

使用例

オンライン認証を行うためには、com.fujitsu.imaps.plugin.auth.javaapi.LoginManager#loginOnlineメソッド、オフライン認証を行うた

めには、com.fujitsu.imaps.plugin.auth.javaapi.LoginManager#loginOfflineメソッドを呼び出します。

private void loginFunc(Context context) {

String url = "https://サーバアドレス:ポート";

String userId = "user1";

String passwd = "pass11";

new AsyncLoginTask(context, url, userId, passwd).execute();

- 43 -

Page 56: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

}

class AsyncLoginTask extends AsyncTask<String, Integer, String> {

LoginManager mLoginManager = null;

String mLoginURL = null;

String mUserId = null;

String mPasswd = null;

・・・・

public AsyncLoginTask(Context context, String loginURL, String userId, String passwd) {

mLoginManager = new LoginManager(context);

mLoginURL = loginURL;

mUserId = userId;

mPasswd = passwd;

・・・・

}

protected String doInBackground(String... params) {

try {

mLoginManager.loginOnline(mLoginURL, mUserId, mPasswd);

} catch (例外キャッチ) {

// キャッチした例外の内容に応じて、例外処理を実装します。

}

return null;

}

}

private void loginFunc(Context context) {

String userId = "user1";

String passwd = "pass11";

try {

mLoginManager = new LoginManager(context);

mLoginManager.loginOffline(userId, passwd);

} catch (例外キャッチ) {

// キャッチした例外の内容に応じて、例外処理を実装します。

}

}

オフライン認証とは、クライアントが保持しているクレデンシャルを用いて利用ユーザーの正当性を検証する認証です。IMAPSサー

バの認証機構を利用しないので、ネットワークが利用できない状態でも認証できます。オフライン認証をするには、オンライン認証

で一度は認証しておく必要があります。

ネットワーク状態を気にせずログインを実行したい場合は、com.fujitsu.imaps.plugin.auth.javaapi.LoginManager#loginAutoメソッド

を呼び出します。loginAutoメソッドは、ネットワーク状態に応じて 適なログイン方法を選択します。

ポイント

・ オンライン認証では、クライアント設定ファイルのimapsServerAddressで接続先のサーバを設定することも可能です。詳細は、開発

者用マニュアル、付録C クライアント設定ファイルを参照してください。

3.3.3.3 ログアウト

アプリケーションは、ログアウトを呼び出す事でユーザー情報を初期化できます。ログアウトメソッドは内部的にはIMAPSサーバの認証

機構を呼び出さないため、ネットワークが利用できない状態でも呼び出せます。

使用例

private void logoutFunc(Context context) {

try {

LoginManager mLoginManager = new LoginManager(context);

mLoginManager.logout();

} catch (例外キャッチ) {

- 44 -

Page 57: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

// キャッチした例外の内容に応じて、例外処理を実装します。

}

}

3.3.3.4 認証情報の付与

ログイン後、クライアントアプリケーションがIMAPSサーバ以外のサーバにアクセスする場合、認証情報を受け渡せます。この機能は

IMAPSサーバの認証機構と業務サーバとの間でSSOのような振る舞いをおこないたい場合に便利です。SSOのような振る舞いとは以

下のような動作を指します。

・ IMAPSサーバで認証していない場合、クライアントからのアクセスはエラーとなる。

・ IMAPSサーバで認証済の場合、クライアントからのアクセスは成功する

このような振る舞いを実現するためには、以下のようにします。

・ クライアントからアクセスする業務サーバ上のサーバアプリケーションに、認証モジュールを組み込む

・ クライアントアプリケーションはIMAPSで認証し、業務サーバにアクセスする際には認証情報を付与してアクセスする

使用例

import java.net.Proxy;

private void connection(Context context, String url) {

new AsyncConnectTask(context, url).execute();

}

class AsyncConnectTask extends AsyncTask <String, Integer, String> {

LoginManager mLoginManager = null;

String mURL = null;

・・・・

public AsyncConnectTask(Context context, String url) {

mLoginManager = new LoginManager(context);

mURL = url;

・・・・

}

protected String doInBackground(String... params) {

try {

URL url = new URL(mURL);

HttpURLConnection con = (HttpURLConnection) url.openConnection(Proxy.NO_PROXY);

・・・

mLoginManager.setRequestAuth(con);

con.connect();

mLoginManager.checkServerTimeout(con);

・・・

mLoginManager.saveResponseAuth(con);

・・・

} catch (IMAPSAuthTimeOutException e) {

// ログアウト処理の実装を行うことを推奨します。

} catch (例外キャッチ) {

// キャッチした例外の内容に応じて、例外処理を実装します。

}

}

3.3.3.5 管理情報の設定

管理情報とは、IMAPSサーバがクライアントからアクセスされた場合に、APIからのアクセスである事を確認するための情報です。管理

情報はシステム管理者によってIMAPSサーバに設定され、ユーザーの認証情報とは別に管理されます。

- 45 -

Page 58: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

IMAPSサーバにアクセスするアプリケーションは、必ずアプリケーション内で管理情報を設定してください。具体的にどのような管理情

報を設定するかは、システム管理者に問い合わせてください。

管理情報は、アプリケーション起動時に一度設定します。IMAPSサーバにアクセスするAPIを呼び出すたびに実行する必要はありま

せん。

使用例

LoginManager mLoginManager = new LoginManager(getApplicationContext());

mLoginManager.setManageInfo(管理ID, 管理パスワード);

注意

異なるプロセスから管理情報を設定した場合は、IMAPSサーバにアクセスできません。

3.3.3.6 パスワード変更

パスワードの変更ができます。

使用例

private void changeFunc(Context context) {

String oldPass = "oldpass";

String newPass = "newpass";

new ChangePasswordTask(context, "https://サーバアドレス:ポート",

oldPass, newPass).execute();

}

class ChangePasswordTask extends AsyncTask<String, Integer, String> {

PasswdManager mPasswdManager = null;

String mChangeURL = null;

String mOldPass = null;

String mNewPass = null;

・・・・

public ChangePasswordTask(Context context, String changeURL, String oldPass, String newPass) {

mPasswdManager = new PasswdManager(context);

mChangeURL = changeURL;

mOldPass = oldPass;

mNewPass = newPass;

・・・・

}

protected String doInBackground(String... params) {

try {

mPasswdManager. changePasswd(mChangeURL, mOldPass, mNewPass);

} catch (例外キャッチ) {

// キャッチした例外の内容に応じて、例外処理を実装します。

}

return null;

}

ポイント

クライアント設定ファイルのimapsServerAddressでも接続先のサーバを設定できます。詳細は、開発者用マニュアル、付録C クライアント設定ファイルを参照してください。

- 46 -

Page 59: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

3.3.3.7 ユーザー情報の登録、取得、削除

クライアントアプリケーションがIMAPS以外の既存の業務システムを利用して認証している場合、そのままではオフライン認証や認証モ

ードでのSLSを利用できません。

このような独自認証を行った場合、ユーザーの情報を登録すれば、これらの機能を利用できます。

使用例

try {

・・独自のログイン処理・・

URL url = new URL(ログインURL);

HttpURLConnection urlConn = (HttpURLConnection)url.openConnection();

・・・・

LoginManager mLoginManager = new LoginManager(getApplicationContext());

mLoginManager.setLoginUserInfo(userId, passwd, userName, userRole);

} catch (例外キャッチ) {

// キャッチした例外の内容に応じて、例外処理を実装します。

}

設定したユーザー情報は、com.fujitsu.imaps.plugin.auth.javaapi.UserManagerを利用する事で取得できます。

final UserManager um = UserManager.getInstance();

String userId = um.getUserID(); // ユーザーIDを取得する場合

登録したユーザー情報とSLSのデータは、com.fujitsu.imaps.plugin.auth.javaapi.LoginManagerのdeleteUserInfoを利用して削除す

ることができます。

try {

LoginManager mLoginManager = new LoginManager(getApplicationContext());

mLoginManager.deleteUserInfo(userId);

} catch (例外キャッチ) {

// キャッチした例外の内容に応じて、例外処理を実装します。

}

3.3.3.8 SLS内のデータの引き継ぎ

IMAPSでは、クライアント内にデータをセキュアに保存するための仕組みとして、SLSを提供しています。SLSを認証モードで利用して

いる場合、格納データはパスワードをキーにして保護されています。

そのためパスワードが変更された場合、格納された暗号化データを引き継ぐ(暗号化データを新しいパスワードで再暗号化する)必要

があります。

使用例

AsyncLoginTaskをオーバーライドしたクラスの処理です。

@Override

protected Boolean doInBackground(String... params) {

boolean result = true;

try {

// オンラインでのログイン

mLoginManager.loginOnline(mLoginURL, mUserId, mPasswd);

} catch (Exception e) {

exception = e;

result = false;

}

return result;

}

@Override

protected void onPostExecute(Boolean result) {

if (!result) {

if (exception instanceof IMAPSSlsPasswordException) {

// パスワードが異なるため、データの引き継ぎができなかった場合に例外が発生します。

// データの引き継ぎをおこなうかをユーザーに問い合わせます。

- 47 -

Page 60: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

} else if (exception instanceof xxxxException) {

// そのほかの例外については開発者用マニュアルを参照してください。

}

}

}

// ダイアログで、データの引き継ぎをおこなうかをユーザーに問い合わせる場合

// データを引き継ぎます

alertDialog.setPositiveButton("引き継ぎ",

new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

// データを引き継ぐ場合は、旧パスワードをユーザーに問い合わせます。

}

});

// データを削除します

alertDialog.setNeutralButton("削除",

new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

LoginManager loginManager = new LoginManager(getApplicationContext());

try {

// データを削除する場合は、deleteDataを呼び出します。

loginManager.deleteData();

} catch (例外キャッチ) {

// 例外については開発者用マニュアルを参照してください。

}

}

});

// ダイアログで、旧パスワードをユーザーに問い合わせてデータを引き継ぐ場合

alertDialog.setPositiveButton("OK",

new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

EditText editText = (EditText) inputView.findViewById(R.id.old_password_inputtext);

String oldPassword = editText.getText().toString();

try {

// 入力された旧パスワードを引数に、transDataを呼び出します。

LoginManager loginManager = new LoginManager(getApplicationContext());

loginManager.transData(oldPassword);

} catch (IMAPSSlsPasswordException e) {

// 旧パスワードが異なるため、データの引き継ぎができなかった場合に例外が発生します。

} catch (例外キャッチ) {

// そのほかの例外については開発者用マニュアルを参照してください。

}

}

});

3.3.3.9 タイムアウト検知

クライアントアプリケーションのアイドルタイムアウト時間を検知します。以下の機能があります。

・ タイムアウト監視開始

・ タイムアウト検知

使用例

public void onPause() {

TimeoutManager.getInstance(this).chkTimeoutStart();

}

public void onResume() {

if(TimeoutManager.getInstance(this).isTimeout()) {

- 48 -

Page 61: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

//タイムアウト発生時の実装

}

}

3.3.4 SLS本節では、SLSのAPIの利用方法について説明します。

インストール先の端末がAndroid6.0以上、かつ開発ツールでAPI Levelに23以上を設定して開発するときは、パーミッションのAPIにつ

いての準備も行う必要があります。

3.3.4.1 SLSのAPIネイティブアプリケーションからSLSを利用する場合、認証モードと認証レスモードがあります。認証モードで利用する場合、SLSのAPIを利用する前に、認証APIを利用して認証します。認証モードと認証レスモードでは使用するSLSのAPIが異なります。認証モードでは

ユーザー毎に異なる暗号化キーを利用してデータを暗号化するため、よりセキュリティ強度が高まります。

SLSのAPIが提供している機能には、以下のようなものがあります。

・ データの格納および取得

・ データの削除、データ数およびキーの取得

3.3.4.2 データの格納および取得

SLSにデータを格納、および取得できます。格納されたデータは、キーおよび値ともに暗号化されて格納され、取得時にはデータは復

号化されます。格納されるデータサイズは2GBを上限に、カスタマイズできます。詳細は、C.5.10 sls.maxDatabaseSizeを参照してくださ

い。以下は、認証モードの例です。

使用例

LoginInfo loginInfo = LoginData.getInstance().mLoginInfo;

if (loginInfo != null) {

if (loginInfo.getUser() != "") {

try {

DataManagerDirect dm = new DataManagerDirect(getApplicationContext(),

loginInfo.getUser(),

loginInfo.getPwd().getBytes());

dm.put("キー名", "値");

} catch (IMAPSSlsException e) {

// 例外処理.

} catch (IllegalArgumentException e) {

// 例外処理

} catch (SQLiteFullException e) {

// 例外処理

}

try {

DataManagerDirect dm = new DataManagerDirect(getApplicationContext(),

loginInfo.getUser(),

loginInfo.getPwd().getBytes());

String value = dm.get("キー名");

} catch (IMAPSSlsException e) {

// 例外処理.

} catch (IllegalArgumentException e) {

// 例外処理

}

}

}

3.3.4.3 データの削除、データ数およびキーの取得

SLSのAPIでは、格納されたデータの削除やキーを取得できます。以下は認証レスモードの例です。

- 49 -

Page 62: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

使用例

try {

DataManagerModeLessDirect dm = new DataManagerModeLessDirect(getApplicationContext());

int count = dm.getListLength();

for (int i=count-1; i >= 0; i--){

String key = dm.getKeyFromIndex(i);

dm.remove(key);

}

} catch (IMAPSSlsException e) {

// 例外処理.

}

3.3.5 ログ収集

本節では、ログ収集APIの利用方法について説明します。

3.3.5.1 ログ収集APIログ収集APIが提供している機能には、以下があります。

・ ログ出力とサーバへの送信

・ ログ設定の変更

3.3.5.2 ログ出力とサーバへの送信

以下にログ出力、ログ送信する実施例を示します。

実施例

ログ出力の例

IMAPSLogger m_logger = new IMAPSLogger(getApplicationContext());

m_logger.i("abcde");

m_logger.w("あいうえお");

m_logger.e("abcde");

m_logger.d("あいうえお");

ログ送信の例

private void sendFunc(Context context) {

String url = "https://サーバアドレス:ポート";

String userId = "user1";

String passwd = "pass11";

new SendLogTask(context, url, userId, passwd).execute();

}

class SendLogTask extends AsyncTask<String, Integer, String> {

LoginManager mLoginManager = null;

String mLoginURL = null;

String mUserId = null;

String mPasswd = null;

IMAPSLogger mLogger = null;

public SendLogTask(Context context, String loginURL, String userId, String passwd) {

mLoginManager = new LoginManager(context);

mLoginURL = loginURL;

mUserId = userId;

mPasswd = passwd;

mLogger = new IMAPSLogger(context);

:

}

- 50 -

Page 63: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

protected void doInBackground(String... params) {

try{

// 認証処理

mLoginManager.loginOnline(mLoginURL, mUserId, mPasswd);

// ログ送信処理

mLogger.send(mUserId);

}catch(Exception e){

// 例外処理

}

}

}

注意

・ ログ送信先は、クライアント設定ファイルのimapsServerAddressで設定します。詳細は、付録C クライアント設定ファイルを参照して

ください。

・ ログAPIのsendメソッドを使用するには、以下のどちらかの認証情報の設定が必要です。

1. loginOnlineによる認証設定

認証機能のloginOnlineメソッドやloginAutoメソッドなどで認証情報を設定してからsendメソッドを実行してください。

2. setManageInfoによる認証設定

ユーザー情報を持たないアプリケーションでsendメソッドを実行する場合の認証方法です。あらかじめIMAPSサーバの管理

コマンドでアプリケーション管理者を作成し、認証機能のsetManageInfoメソッドで管理者情報を設定してからsendメソッドを実

行してください。アプリケーション管理者の作成方法は、"運用ガイド"の"コマンドリファレンス"を参照してください。

3.3.5.3 ログ設定の変更

以下にログ設定の変更を行う実施例を示します。

実施例

ログ設定の例

try {

IMAPSLogger log = new IMAPSLogger(getApplicationContext());

log.setLevel(IMAPSLogLevel.DEBUG);

log.setMaxFileSize(20);

log.setRotateCount(5);

log.getLevel(); // IMAPSLogLevel.DEBUG

log.getMaxFileSize(); // 20

log.getRotateCount(); // 5

} catch (IMAPSClientCommonException e) {

// 設定ファイルの読み込みに失敗した場合

} catch (IllegalArgumentException e) {

// 指定した引数が間違っている場合

}

参考

ログAPIの設定はクライアント設定ファイルよりも優先されます。変更した内容は、アプリの再起動や更新によって失われません。

3.3.6 利用時間制御

本節では、利用時間制御APIの利用方法について説明します。

- 51 -

Page 64: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

3.3.6.1 利用時間制御API利用時間制御APIが提供している機能には、以下があります。

・ 利用時間の制御

3.3.6.2 利用時間の制御

アプリケーションの利用可能な時間を制御します。

利用時間の制御を開始するにはAppTimeManager#initメソッドを使用します。 利用時間外であることはAppTimeDelegateインターフェ

ースのexecuteAtInvalidTimeメソッドで通知されます。

使用例

以下の場合に、それぞれ別の処理をする使用例を示しています。

・ 利用時間の制御の開始処理で利用時間外であった場合

・ 利用時間の制御の開始処理後に利用時間外となった場合

・ 利用時間の制御の開始処理で利用不可能な日であった場合

・ 利用時間の制御の開始処理後に利用不可能な日となった場合

import com.fujitsu.imaps.plugin.appmanager.AppTimeManager;

import com.fujitsu.imaps.plugin.appmanager.AppTimeDelegate;

AppTimeManager appTimeManager = null;

private void checkTime() {

appTimeManager = AppTimeManager.getInstance(this

.getApplicationContext());

new CheckTimeTask(new MyAppTimeDelegate()).execute();

}

class CheckTimeTask extends AsyncTask<String, String, String> {

AppTimeDelegate appTimeDelegate = null;

CheckTimeTask(AppTimeDelegate appTimeDelegate) {

this.appTimeDelegate = appTimeDelegate;

}

protected String doInBackground(String... params) {

try {

// 利用時間の制御の開始処理

if (appTimeManager.init(appTimeDelegate)) {

return "OK";

} else {

return "OUT_OF_TIME";

}

} catch (Exception e) {

return "EXCEPTION";

}

}

protected void onPostExecute(String result) {

if (result.equals("OK")) {

// 開始処理が成功した場合の処理

} else if (result.equals("EXCEPTION")) {

// 開始処理で例外が発生した場合の処理

} else if (result.equals("OUT_OF_TIME")) {

// 開始処理で利用時間外であった処理はMyAppTimeDelegateでしているためここでは何もしない

}

- 52 -

Page 65: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

}

}

class MyAppTimeDelegate implements AppTimeDelegate {

public void executeAtInvalidTime(int result) {

try {

if (appTimeManager.isStarted()) {

if (result == AppTimeManager.OUT_OF_TIME) {

// 開始処理後に利用時間外となった場合の処理

} else {

// 開始処理後に利用不可能な日となった場合の処理

}

} else {

if (result == AppTimeManager.OUT_OF_TIME) {

// 開始処理で利用時間外であった場合の処理

} else {

// 開始処理で利用不可能な日であった場合の処理

}

}

} catch (Exception e) {

// 例外処理

}

}

}

利用時間の情報を取得します。利用時間の制御の開始処理後に使用します。

AppTimeManager appTimeManager = AppTimeManager.getInstance(this

.getApplicationContext());

try {

String startTime = appTimeManager.getStartTime(); // 利用時間の開始時間を取得する場合

} catch (Exception e) {

// 例外処理

}

利用時間の制御を終了します。利用時間制御の開始処理後に利用時間外になる前に、終了する場合に使用します。

AppTimeManager appTimeManager = AppTimeManager.getInstance(this

.getApplicationContext());

appTimeManager.destroy();

注意

・ クライアント設定ファイルのappmgr.strictPolicyModeの値がfalseの場合は、端末がオフラインでポリシー設定ファイルが更新されな

い場合や、 クライアントの時計が間違っている場合は、設定した時間外にアプリケーションが利用可能になる場合があります。 これ

を防止するためには、appmgr.strictPolicyModeの値をtrueにします。 詳細は、付録C クライアント設定ファイルを参照してください。

3.3.7 パーミッション

本節では、パーミッションAPIの利用方法について説明します。

認証、SLS、プッシュのAPIを利用する場合で、インストール先の端末がAndroid6.0以上、かつ開発ツールでAPI Levelに23以上を設

定して開発するときは、パーミッションのAPIを利用して「通話の発信と管理」を許可する必要があります。これは認証、SLS、プッシュの

APIの実行に「android.permission.READ_PHONE_STATE」のパーミッションが必要であることと、Android6.0からアプリケーションのイ

ンストール時ではなく、起動した後にパーミッションをチェックするようになったためです。詳細はAndroidの公式サイトをご覧ください。

3.3.7.1 パーミッションAPIパーミッションAPIが提供している機能には、以下があります。

・ APIに必要なパーミッションの取得とチェック

- 53 -

Page 66: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

3.3.7.2 APIに必要なパーミッションの取得とチェック

認証、SLS、プッシュのAPIに必要なパーミッションを取得し、許可されているかチェックします。

具体的には取得したパーミッションをAndroidが用意しているメソッドを使って、チェックし、必要に応じて、パーミッションの要求処理を

行います。

以下のような流れになります。

1. PermissionManager#getPermissionsメソッド(IMAPSのAPI)で認証等のAPIに必要なパーミッションを取得する。

2. ContextCompat#checkSelfPermissionメソッド(AndroidのAPI)でパーミッションの許可があるかをチェックする。

3. 許可がない場合、ActivityCompat#requestPermissionsメソッド(AndroidのAPI)でパーミッションの許可を要求する。

4. 許可要求のダイアログでの選択結果をonRequestPermissionsResultメソッドで受け取ります。

使用例

認証のAPIに必要なパーミッションをチェックするときの使用例を示しています。

public class MainActivity extends Activity {

・・・

private static final int MY_PERMISSIONS_REQUEST_CODE = 0;

@Override

protected void onCreate(Bundle savedInstanceState) {

・・・

// Android6.0以上の環境かチェック

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {

PermissionManager pm = new PermissionManager(getApplicationContext());

// パーミッションを取得するAPI

int[] apis = {PermissionManager.AUTH_API};

String[] permissions = pm.getPermissions(apis);

boolean requestPermissionFlag = false;

List<String> requestPermissionsList = new ArrayList<String>();

for(String permission : permissions) {

// PermissionManager#getPermissionsで取得したパーミッションをチェック

if(ContextCompat.checkSelfPermission(this, permission) == PackageManager.PERMISSION_DENIED) {

requestPermissionFlag = true;

requestPermissionsList.add(permission);

}

}

if(requestPermissionFlag) {

// 拒否されているパーミッションの許可を要求するダイアログを表示

ActivityCompat.requestPermissions(this, requestPermissionsList.toArray(new String[0]),

MY_PERMISSIONS_REQUEST_CODE);

}

}

}

@Override

public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {

if(requestCode == MY_PERMISSIONS_REQUEST_CODE) {

PermissionManager pm = new PermissionManager(getApplicationContext());

// 許可要求のダイアログで許可されたかを確認します

if(pm.checkApi(PermissionManager.AUTH_API, permissions, grantResults) ==

PermissionManager.API_PERMISSION_GRANTED) {

// 許可された場合の処理

} else {

// 拒否された場合の処理

// 許可要求のダイアログでの「今後は確認しない」のチェックを確認するには、

// ActivityCompat#shouldShowRequestPermissionRationaleを利用する

- 54 -

Page 67: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

}

}

}

}

注意

・ 許可要求のダイアログで拒否されたときに「今後は確認しない」がチェックされたかどうかを確認したいときは、

onRequestPermissionsResultメソッドの中で、ActivityCompat#shouldShowRequestPermissionRationaleメソッド(AndroidのAPI)を利

用します。

3.3.8 パッケージング

プログラムとして作成したクラスファイルをパッケージ化します。各プラットフォームのIDEでパッケージングを実施します。

署名なしのアプリケーションでもデバッグ環境では動作します。しかし、実際の端末で動作させる場合には署名が必要です。 詳細

は、"Android Developers"のドキュメントを参照してください。

IMAPSサーバでアプリケーションを配布する場合

IMAPSサーバでアプリケーションを配布する場合は、パッケージ化したファイルを含めた以下のようなzip形式のアーカイブファイルを

作成します。

それぞれのファイルについて説明します。以下のファイルをzipファイルのルートフォルダーに含めます。

・ アプリケーション本体

パッケージ化したアプリケーション本体です。拡張子は、apkです。

アプリケーションのバージョンと識別IDは255文字以降は無視されます。

バージョンはアプリケーションのバージョンです。

パッケージは、アプリケーションを特定するための値です。以下の値を参照します。

AndroidManifext.xmlのpackage属性

・ 説明ファイル

アプリ詳細画面でアプリケーションの説明欄に表示する文章を定義するファイルです。ファイルはUTF-8で記載します。

日本語の説明はdescription_ja.txt、英語の説明はdescription.txtに記載します。

説明文は、0文字以上4000文字以下の範囲で記載できます。

省略時は空文字になります。

- 55 -

Page 68: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

・ アイコン

IMAPSサーバによる配布画面上で利用されるアイコンです。アイコンの推奨サイズは96x96ピクセル以上で縦横の幅が同じ画像で

す。ファイルはpng形式でファイル名はicon.pngです。

省略時はデフォルトのアイコンになります。

・ そのほか

アプリケーションをインストールするための依存ファイルなどです。

注意

IMAPSサーバによる配布をするには、プラットフォームごとに以下の条件があります。丸括弧内は、主に対応が必要となる人物です。

ここで説明されている内容は、各ベンダーによって変更される可能性があります。 新の情報は、それぞれの公開情報を参照してくだ

さい。

・ (アプリケーション利用者) 配布されたアプリケーションをインストールするには、スマートデバイスの[提供元不明のアプリのインスト

ール]を許可する設定にします。

・ (システム管理者) IMAPSサーバを自己発行証明書を使用してSSLで運用している場合、ブラウザ(IMAPSサーバによる配布画面

など)でアプリケーションをダウンロードできないことがあります。その場合はHTTPで運用するか、または、認証局が発行した正式な

証明書を利用してください。

・ (システム管理者) Androidの標準ブラウザを使用しており、ネットワーク接続にプロキシを使用している場合、アプリケーションを正

常にダウンロードできないことがあります。その場合は、プロキシを不使用でIMAPSサーバに接続するように端末のネットワーク設

定を変更してください。

・ (システム管理者) Android版Chromeブラウザでアプリケーションをダウンロードする場合、セキュリティ上の理由で確認メッセージ

が表示されます。ファイル名を確認し、問題なければ[OK]ボタンをタップすれば、アプリケーションをダウンロードできます。

3.3.9 デバッグ

詳細は、"Android Developers"のドキュメントを参照してください。

3.3.10 配布

開発したアプリケーションを配布する方法は、"運用ガイド"の"IMAPSクライアントアプリケーションの配布"を参照してください。

3.4 iOSアプリケーションの開発

IMAPSはネイティブアプリケーション向けに、認証、SLS、ログ送信、プッシュ、 双方向通信サービスのAPIを提供しています。認証の

APIを使用する場合は、SLSのAPIについての準備も行う必要があります。

プッシュのAPIを使用する場合は第6章 プッシュ通知機能を参照してください。

Cordovaフレームワークは、以下に配置されています。Cordova.frameworkを開発マシンにコピーし、プロジェクトに追加します。

<DVD-ROMドライブ>\development\ios\frameworks\Cordova.framework

<DVD-ROMマウントディレクトリ>/development/ios/frameworks/Cordova.framework

クライアント設定ファイルの値を調整することで、アプリケーションの動作をカスタマイズできます。詳細は、付録C クライアント設定ファ

イルを参照してください。

詳細は、プラットフォームのドキュメントを参照してください。

3.4.1 開発環境の準備

開発に必要な開発マシンと開発ツールを用意します。

開発に必要な開発マシンのOSと開発ツールは以下のとおりです。

- 56 -

Page 69: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

開発マシン

Mac OS X 10.10.4以降

開発ツール

Xcode 7.x

3.4.2 ネイティブアプリケーションの開発をする(Objective-C)

参考

アプリケーション開発者用のAPIリファレンスは以下に格納されています。必要に応じて参照してください。

<DVD-ROMドライブ>\apiref\index.html

<DVD-ROMマウントディレクトリ>/apiref/index.html

1. 以下に格納されているネイティブアプリケーションの部品のフレームワークを、開発端末上に取得します。

<DVD-ROMドライブ>\development\ios\frameworks\IMAPSCore.framework

<DVD-ROMドライブ>\development\ios\frameworks\IMAPSAppManager.framework

<DVD-ROMドライブ>\development\ios\frameworks\ZipArchive.framework

<DVD-ROMマウントディレクトリ>/development/ios/frameworks/IMAPSCore.framework

<DVD-ROMマウントディレクトリ>/development/ios/frameworks/IMAPSAppManager.framework

<DVD-ROMマウントディレクトリ>/development/ios/frameworks/ZipArchive.framework

2. Mac OS XのXcodeでプロジェクトを作成します。

3. 作成したプロジェクトに、取得したフレームワーク(IMAPSCore.framework、IMAPSAppManager.framework、

ZipArchive.framework)をインポートします。

4. クライアント設定ファイル(imaps.plist)を作成したプロジェクトに追加します。

クライアント設定ファイルは以下に配置されています。

<DVD-ROMドライブ>\development\conf\imaps\imaps.plist

<DVD-ROMマウントディレクトリ>/development/conf/imaps/imaps.plist

詳細は、付録C クライアント設定ファイルを参照してください。

5. 次のフレームワークおよびライブラリを、プロジェクトに追加します。

No. 名称 分類

1 AddressBook.framework システム提供フレームワーク

2 AddressBookUI.framework システム提供フレームワーク

3 AssetsLibrary.framework システム提供フレームワーク

4 AudioToolbox.framework システム提供フレームワーク

5 AVFoundation.framework システム提供フレームワーク

6 Cordova.framework IMAPS提供フレームワーク

7 CoreData.framework システム提供フレームワーク

8 CoreLocation.framework システム提供フレームワーク

9 CoreMedia.framework システム提供フレームワーク

10 CoreMotion.framework システム提供フレームワーク

11 ImageIO.framework システム提供フレームワーク

- 57 -

Page 70: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

No. 名称 分類

12 IMAPSAppManager.framework IMAPS提供フレームワーク

13 IMAPSCore.framework IMAPS提供フレームワーク

14 MobileCoreServices.framework システム提供フレームワーク

15 Security.framework システム提供フレームワーク

16 SystemConfiguration.framework システム提供フレームワーク

17 JavaScriptCore.framework システム提供フレームワーク

18 libc++.tbd システムライブラリ

19 libxml2.tbd システムライブラリ

20 libz.tbd システムライブラリ

21 libsqlite3.tbd システムライブラリ

22 ZipArchive.framework IMAPS提供フレームワーク

6. 以下に格納されているデータベース定義を、開発端末上に取得し、プロジェクトに取り込みます。

<DVD-ROMドライブ>\development\ios\frameworks\Model.xcdatamodel

<DVD-ROMマウントディレクトリ>/development/ios/frameworks/Model.xcdatamodel

注意

XcodeでApplication Files内に資産を入れる場合、ファイル追加のダイアログで[Create groups]を選択してください。

IMAPSCore.frameworkを利用する場合、Xcodeの「Build Settings」内にある「Other Linker Flags」に「-ObjC」を指定してください。

3.4.3 ネイティブアプリケーションの開発をする(Swift)

参考

アプリケーション開発者用のAPIリファレンスは以下に格納されています。必要に応じて参照してください。

<DVD-ROMドライブ>\apiref\index.html

<DVD-ROMマウントディレクトリ>/apiref/index.html

Xcodeでプロジェクトを作成し、IMAPSが提供するIMAPSCore.frameworkフレームワークをインポート後、Swiftで呼び出す手順を説

明します。

1. 以下に格納されているネイティブアプリケーションの部品のフレームワークを、開発端末上に取得します。

<DVD-ROMドライブ>\development\ios\frameworks\IMAPSCore.framework

<DVD-ROMドライブ>\development\ios\frameworks\IMAPSAppManager.framework

<DVD-ROMドライブ>\development\ios\frameworks\ZipArchive.framework

<DVD-ROMマウントディレクトリ>/development/ios/frameworks/IMAPSCore.framework

<DVD-ROMマウントディレクトリ>/development/ios/frameworks/IMAPSAppManager.framework

<DVD-ROMマウントディレクトリ>/development/ios/frameworks/ZipArchive.framework

2. Mac OS XのXcodeでプロジェクトを作成します。

3. 作成したプロジェクトに、取得したフレームワーク(IMAPSCore.framework、IMAPSAppManager.framework、

ZipArchive.framework)をインポートします。

- 58 -

Page 71: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

4. クライアント設定ファイル(imaps.plist)を作成したプロジェクトに追加します。

クライアント設定ファイルは以下に配置されています。

<DVD-ROMドライブ>\development\conf\imaps\imaps.plist

<DVD-ROMマウントディレクトリ>/development/conf/imaps/imaps.plist

詳細は、付録C クライアント設定ファイルを参照してください。

5. 次のフレームワークおよびライブラリを、プロジェクトに追加します。

No. 名称 分類

1 AddressBook.framework システム提供フレームワーク

2 AddressBookUI.framework システム提供フレームワーク

3 AssetsLibrary.framework システム提供フレームワーク

4 AudioToolbox.framework システム提供フレームワーク

5 AVFoundation.framework システム提供フレームワーク

6 Cordova.framework IMAPS提供フレームワーク

7 CoreData.framework システム提供フレームワーク

8 CoreLocation.framework システム提供フレームワーク

9 CoreMedia.framework システム提供フレームワーク

10 CoreMotion.framework システム提供フレームワーク

11 ImageIO.framework システム提供フレームワーク

12 IMAPSAppManager.framework IMAPS提供フレームワーク

13 IMAPSCore.framework IMAPS提供フレームワーク

14 MobileCoreServices.framework システム提供フレームワーク

15 Security.framework システム提供フレームワーク

16 SystemConfiguration.framework システム提供フレームワーク

17 JavaScriptCore.framework システム提供フレームワーク

18 libc++.tbd システムライブラリ

19 libxml2.tbd システムライブラリ

20 libz.tbd システムライブラリ

21 libsqlite3.tbd システムライブラリ

22 ZipArchive.framework IMAPS提供フレームワーク

6. 以下に格納されているデータベース定義を、開発端末上に取得し、プロジェクトに取り込みます。

<DVD-ROMドライブ>\development\ios\frameworks\Model.xcdatamodel

<DVD-ROMマウントディレクトリ>/development/ios/frameworks/Model.xcdatamodel

注意

XcodeでApplication Files内に資産を入れる場合、ファイル追加のダイアログで[Create groups]を選択してください。

IMAPSCore.frameworkを利用する場合、Xcodeの「Build Settings」内にある「Other Linker Flags」に「-ObjC」を指定してください。

7. IMAPSが提供しているAPIをインポートするため、Bridging-Header.hを作成します。

ファイル名は、[プロジェクト名-Bridging-Header.h]とします。

[プロジェクト名]部分は、任意で変更できます。

- 59 -

Page 72: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

8. [プロジェクト名-Bridging-Header.h]に必要なライブラリを記載します。

#import <IMAPSCore/IMAUserManager.h>

9. Bridging-Header.hを読み込みます。

[Build Settings] > [Swift compiler - Code Generation] > [Objective-C Gridging Header]に、作成した Bridging-Header.hを指定

します。

$(SRCROOT)/プロジェクト名/プロジェクト名-Bridging-Header.h

3.4.4 認証

本節では、認証APIの利用方法について説明します。

認証のAPIでは、オフライン認証を行うため、オンライン認証が成功すると認証情報をSLSに保存します。そのため、認証APIを使用す

る場合は、SLSのAPIについての準備も行う必要があります。

3.4.4.1 認証APIIMAPSの認証APIは以下の機能を提供しています。

・ ログイン

・ ログアウト

・ 認証情報の付与

・ 管理情報の設定

・ パスワード変更

・ ユーザー情報の登録、取得、削除

・ SLS内のデータの引き継ぎ

・ タイムアウト検知

3.4.4.2 ログイン

アプリケーションは、IMAPSが提供している認証機構を呼び出して、利用しているユーザーの正当性を検証できます。ログインには以

下の種類があります。

・ IMAPSサーバが提供している認証機能をネットワーク経由で呼び出し、サーバ側で認証するオンライン認証

・ クライアント内部で保持しているクレデンシャルを用いて認証する、オフライン認証

使用例

オンライン認証は、IMALoginManagerのloginOnlineメソッド、オフライン認証はloginOfflineメソッドを呼び出します。実行結果は

IMALoginDelegateで通知されます。

- (void)func {

IMALoginManager *loginManager = [[IMALoginManager alloc] init:self];

[loginManager loginOnline:@"https:// サーバアドレス:ポート/"userId:@"userid" passwd:@"password"];

}

- (void)func {

IMALoginManager *loginManager = [[IMALoginManager alloc] init:self];

[loginManager loginOffline:@"userid" passwd:@"password"];

}

- 60 -

Page 73: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

ポイント

・ オンライン認証では、クライアント設定ファイルのimapsServerAddressで接続先のサーバを設定することも可能です。詳細は、開発

者用マニュアル、付録C クライアント設定ファイルを参照してください。

3.4.4.3 ログアウト

アプリケーションは、ログアウトを呼び出す事でユーザー情報を初期化できます。ログアウトメソッドは内部的にはIMAPSサーバの認証

機構を呼び出さないため、ネットワークが利用できない状態でも呼び出せます。

使用例

- (void)func {

IMALoginManager *loginManager = [[IMALoginManager alloc] init];

NSError *anError = nil;

BOOL result = [loginManager logout:&anError];

if(result == NO) {

// それぞれのエラーの実装.

}

}

3.4.4.4 認証情報の付与

ログイン後、クライアントアプリケーションがIMAPSサーバ以外のサーバにアクセスする場合、認証情報を受け渡せます。この機能は

IMAPSサーバの認証機構と業務サーバとの間でSSOのような振る舞いをおこないたい場合に便利です。SSOのような振る舞いとは以

下のような動作を指します。

・ IMAPSサーバで認証していない場合、クライアントからのアクセスはエラーとなる。

・ IMAPSサーバで認証済の場合、クライアントからのアクセスは成功する

このような振る舞いを実現するためには、以下のようにします。

・ クライアントからアクセスする業務サーバ上のサーバアプリケーションに、認証モジュールを組み込む

・ クライアントアプリケーションはIMAPSで認証し、業務サーバにアクセスする際には認証情報を付与してアクセスする

使用例

- (void)func {

NSURL *url = [NSURL URLWithString:接続先URL];

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];

[request setHTTPMethod:@"GET"];

IMALoginManager *loginManager = [[IMALoginManager alloc] init];

NSError *anError = nil;

BOOL result = [loginManager setRequestAuth:request error:&anError];

if(result == NO) {

// それぞれのエラーの実装.

}

[NSURLConnection connectionWithRequest:request delegate:self];

[loginManager setRequestAuth:request error:&anError];

}

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response

{

IMALoginManager *loginManager = [[IMALoginManager alloc] init];

NSError *anError = nil;

BOOL result = [loginManager checkServerTimeout:response error:&error];

if(result == NO) {

// それぞれのエラーの実装.

} else {

result = [loginManager saveResponseAuth:response error:&error];

if(result == NO) {

// それぞれのエラーの実装.

- 61 -

Page 74: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

}

}

}

3.4.4.5 管理情報の設定

管理情報とは、IMAPSサーバがクライアントからアクセスされた場合に、APIからのアクセスである事を確認するための情報です。管理

情報はシステム管理者によってIMAPSサーバに設定され、ユーザーの認証情報とは別に管理されます。

IMAPSサーバにアクセスするアプリケーションは、必ずアプリケーション内で管理情報を設定してください。具体的にどのような管理情

報を設定するかは、システム管理者に問い合わせてください。

管理情報は、アプリケーション起動時に一度設定します。IMAPSサーバにアクセスするAPIを呼び出すたびに実行する必要はありま

せん。

使用例

- (void)func {

IMALoginManager *loginManager = [[IMALoginManager alloc] init];

NSError *anError = nil;

BOOL result = [loginManager setManageInfo:@"adminid" passwd:@"adminpass" error:&anError];

if(result == NO) {

// それぞれのエラーの実装.

}

}

注意

異なるプロセスから管理情報を設定した場合は、IMAPSサーバにアクセスできません。

3.4.4.6 パスワード変更

パスワードの変更ができます。

使用例

- (void)func {

IMAPasswdManager *passwdManager = [[IMAPasswdManager alloc] init:self];

[passwdManager changePasswd:@"https:// サーバアドレス:ポート/"oldPassword:@"oldpwd" newPassword:@"newpwd"];

}

ポイント

クライアント設定ファイルのimapsServerAddressでも接続先のサーバを設定できます。詳細は、開発者用マニュアル、付録C クライアント設定ファイルを参照してください。

3.4.4.7 ユーザー情報の登録、取得、削除

クライアントアプリケーションがIMAPS以外の既存の業務システムを利用して認証している場合、そのままではオフライン認証や認証モ

ードでのSLSを利用できません。

このような独自認証を行った場合、ユーザーの情報を登録すれば、これらの機能を利用できます。

使用例

- (void)func {

IMALoginManager *loginManager = [[IMALoginManager alloc] init];

NSError *anError = nil;

BOOL result = [loginManager setLoginUserInfo:@"userid" passwd:@"password" userName:@"fujitsu tarou" roleNames:

[NSArray arrayWithObjects:@"administrator", @"guest", nil] error:&anError];

if(result == NO) {

// それぞれのエラーの実装.

- 62 -

Page 75: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

}

}

設定したユーザー情報は、IMAUserManagerを利用する事で取得する事ができます。

IMAUserManager *userManager = [IMAUserManager sharedInstance];

NSString *userId = [userManager getUserId]; // ユーザーIDを取得する場合s

登録したユーザー情報とSLSのデータはIMALoginManagerのdeleteUserInfoを利用して削除できます。

- (void)func {

IMALoginManager *loginManager = [[IMALoginManager alloc] init];

NSError *anError = nil;

BOOL result = [loginManager deleteUserInfo:userId error:&anError];

if(result == NO) {

// それぞれのエラーの実装.

}

}

3.4.4.8 SLS内のデータの引き継ぎ

IMAPSでは、クライアント内にデータをセキュアに保存するための仕組みとして、SLSを提供しています。SLSを認証モードで利用して

いる場合、格納データはパスワードをキーにして保護されています。

そのためパスワードが変更された場合、格納された暗号化データを引き継ぐ(暗号化データを新しいパスワードで再暗号化する)必要

があります。

使用例

IMALoginManager *loginManager;

- (void)func1

{

loginManager = [[IMALoginManager alloc] init:self];

[loginManager loginOnline:@"https:// サーバアドレス:ポート/"userId:@"userid"

passwd:@"password"];

// この後、ログイン結果は、IMALoginDelegateプロトコルのdidLoginFinishedメソッドで通知されます。

// IMALoginManagerのinitで自分自身をdelegateとして指定しています。

// 詳細はIMALoginManagerクラスを参照してください。

}

- (void) didLoginFinished:(NSError *)anError

{

NSString *message = nil;

if(anError == nil) {

message = @"LOGIN DONE";

} else {

if([anError.domain isEqualToString:IMAAuthErrorDomain]) {

switch (anError.code) {

case AuthLoginFailed:

message = @"LOGIN FAILED";

break;

case AuthAlreadyLogin:

message = @"ALREADY LOGIN";

break;

// それぞれのエラーの実装.

default:

message = @"SYSTEM ERROR";

break;

}

} else if([anError.domain isEqualToString:IMASlsErrorDomain]) {

switch (anError.code) {

case SlsOfflinePasswordError:

message = @"OFFLINE LOGIN FAILED";

- 63 -

Page 76: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

break;

case SlsPasswordError:

{

message = @"NEED TAKES OVER";

// SLSデータの引き継ぎが必要.

// データを引き継ぐ場合は、旧パスワードを使用してtransDataを呼び出します.

// データを削除する場合は、deleteDataを呼び出します.

break;

}

// それぞれのエラーの実装.

default:

message = @"SYSTEM ERROR";

break;

}

} else {

message = @"SYSTEM ERROR";

}

NSLog(message);

}

}

// ダイアログで、データ引き継ぎをおこなうかをユーザーに問い合わせる場合

- (void)func2

{

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"title"

message:@"データ引き継ぎか削除かの問い合わせ"

delegate:self

cancelButtonTitle:nil

otherButtonTitles: @"削除", @"引き継ぎ", nil];

[alert show];

}

// ダイアログでデータ引き継ぎか削除が選択された時の処理の切り分けを行う

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex

{

NSError *anError = nil;

BOOL result = NO;

if (buttonIndex == 0) {

// 削除が選択された場合は、deleteDataを呼び出します。

result = [loginManager deleteData:&anError];

if (!result) {

// それぞれのエラーの実装.

}

} else if (buttonIndex == 1) {

// データ引き継ぎが選択された場合は、入力された旧パスワードを引数に、transDataを呼び出します。

// UITextFieldから旧パスワードを取得

NSString *oldPassword = _oldPassword.text;

result = [loginManager transData:oldPassword error:&anError];

if(!result) {

// それぞれのエラーの実装.

}

}

}

3.4.4.9 タイムアウト検知

クライアントアプリケーションのアイドルタイムアウト時間を検知します。以下の機能があります。

・ タイムアウト監視開始

・ タイムアウト検知

- 64 -

Page 77: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

使用例

- (void)applicationDidEnterBackground:(UIApplication *)application {

[[IMATimeoutManager sharedInstance] chkTimeoutStart];

}

- (void)applicationWillEnterForeground:(UIApplication *)application {

if ([[IMATimeoutManager sharedInstance] isTimeout] == true) {

// タイムアウト発生時の実装.

}

}

3.4.5 SLS本節では、SLSのAPIの利用方法について説明します。

インストール先の端末がAndroid6.0以上、かつ開発ツールでAPI Levelに23以上を設定して開発するときは、パーミッションのAPIにつ

いての準備も行う必要があります。

3.4.5.1 SLSのAPIネイティブアプリケーションからSLSを利用する場合、認証モードと認証レスモードがあります。認証モードで利用する場合、SLSのAPIを利用する前に、認証APIを利用して認証します。認証モードと認証レスモードでは使用するSLSのAPIが異なります。認証モードでは

ユーザー毎に異なる暗号化キーを利用してデータを暗号化するため、よりセキュリティ強度が高まります。

SLSのAPIが提供している機能には、以下のようなものがあります。

・ データの格納および取得

・ データの削除、データ数およびキーの取得

3.4.5.2 データの格納および取得

SLSにデータを格納、および取得できます。格納されたデータは、キーおよび値ともに暗号化されて格納され、取得時にはデータは復

号化されます。格納されるデータサイズは2GBを上限に、カスタマイズできます。詳細は、C.5.10 sls.maxDatabaseSizeを参照してくださ

い。以下は、認証モードの例です。

使用例

- (void)func

{

NSError *anError = nil;

IMALoginInfo *loginInfo = [[IMALoginData sharedInstance] loginInfo];

if (loginInfo != nil) {

if (![[loginInfo userId] isEqualToString:@""]) {

NSData *pwdByte = [[loginInfo pwd] dataUsingEncoding:NSUTF8StringEncoding];

IMADataManagerDirect *manager = [[IMADataManagerDirect alloc] init:[loginInfo userId]

pwdByte:pwdByte

error:&anError];

BOOL ret = [manager put:@"key" value:@"value" error:&anError];

if (ret == YES) {

// 成功

} else {

// 失敗

}

NSString *value = [manager get:@"key" error:&anError];

if (value != nil) {

// 成功

} else {

// 失敗

}

}

- 65 -

Page 78: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

}

}

3.4.5.3 データの削除、データ数およびキーの取得

SLSのAPIでは、格納されたデータの削除やキーを取得できます。以下は認証レスモードの例です。

使用例

- (void)func

{

NSError *anError = nil;

IMADataManagerModeLessDirect *manager = [[IMADataManagerModeLessDirect alloc] init];

NSNumber *count = [manager getListLength:&anError];

if (count == nil) {

// それぞれのエラーの実装.

}

int intCount = [count intValue];

for(int i = intCount-1; i >= 0; i--) {

NSString *key = [manager getKeyFromIndex:i error:&anError];

if (key == nil) {

// それぞれのエラーの実装.

}

BOOL ret = [manager remove:key error:&anError];

if (ret == NO) {

// それぞれのエラーの実装

}

}

}

3.4.6 ログ収集

本節では、ログ収集APIの利用方法について説明します。

3.4.6.1 ログ収集APIログ収集APIが提供している機能には、以下があります。

・ ログ出力とサーバへの送信

・ ログ設定の変更

3.4.6.2 ログ出力とサーバへの送信

以下にログ出力、ログ送信する実施例を示します。

実施例

ログ出力の例

[IMALogger i:@"abcde"];

[IMALogger w:@"あいうえお"];

[IMALogger e:@"abcde"];

[IMALogger d:@"あいうえお"];

ログ送信の例

#import <IMAPSCore/IMALoginManager.h>

#import <IMAPSCore/IMALogger.h>

- (void) sendFunc

{

- 66 -

Page 79: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

NSString *url = @"https://サーバアドレス:ポート";

NSString *userId = @"user1";

NSString *passwd = @"pass11";

// 認証処理

IMALoginManager *loginManager = [[IMALoginManager alloc] init:self];

[loginManager loginOnline:url userId:userId passwd:passwd];

}

- (void) didLoginFinished:(NSError *)anError

{

if (anError == nil) {

// ログ送信処理

[IMALogger send:@"user1"];

}

}

注意

・ ログ送信先は、クライアント設定ファイルのimapsServerAddressで設定します。詳細は、付録C クライアント設定ファイルを参照して

ください。

・ ログAPIのsendメソッドを使用するには、以下のどちらかの認証情報の設定が必要です。

1. loginOnlineによる認証設定

認証機能のloginOnlineメソッドやloginAutoメソッドなどで認証情報を設定してからsendメソッドを実行してください。

2. setManageInfoによる認証設定

ユーザー情報を持たないアプリケーションでsendメソッドを実行する場合の認証方法です。あらかじめIMAPSサーバの管理

コマンドでアプリケーション管理者を作成し、認証機能のsetManageInfoメソッドで管理者情報を設定してからsendメソッドを実

行してください。アプリケーション管理者の作成方法は、"運用ガイド"の"コマンドリファレンス"を参照してください。

3.4.6.3 ログ設定の変更

以下にログ設定の変更を行う実施例を示します。

実施例

ログ設定の例

NSError *anError = nil;

BOOL ret = NO;

ret = [IMALogger setLevel:LEVEL_DEBUG error:&anError];

if(ret){

[IMALogger getLevel]; // LEVEL_DEBUG

} else {

if (anError.code == IllegalArgumentError) {

// 指定した引数が間違っている場合

}

}

ret = [IMALogger setMaxFileSize:20 error:&anError];

if(ret){

[IMALogger getMaxFileSize]; // 20

} else {

if (anError.code == IllegalArgumentError) {

// 指定した引数が間違っている場合

}

}

ret = [IMALogger setRotateCount:5 error:&anError];

if(ret){

[IMALogger getRotateCount]; // 5

- 67 -

Page 80: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

} else {

if (anError.code == IllegalArgumentError) {

// 指定した引数が間違っている場合

}

}

参考

ログAPIの設定はクライアント設定ファイルよりも優先されます。変更した内容は、アプリの再起動や更新によって失われません。

3.4.7 利用時間制御

本節では、利用時間制御APIの利用方法について説明します。

3.4.7.1 利用時間制御API利用時間制御APIが提供している機能には、以下があります。

・ 利用時間の制御

3.4.7.2 利用時間の制御

アプリケーションの利用可能な時間を制御します。

利用時間の制御を開始するにはAppTimeManagerのinitメソッドを使用します。 利用時間外であることはIMAAppTimeDelegateに通知

されます。

使用例

以下の場合に、それぞれ別の処理をする使用例を示しています。

・ 利用時間の制御の開始処理で利用時間外であった場合

・ 利用時間の制御の開始処理後に利用時間外となった場合

・ 利用時間の制御の開始処理で利用不可能な日であった場合

・ 利用時間の制御の開始処理後に利用不可能な日となった場合

- (void)func {

self.manager = [IMAAppTimeManager sharedInstance];

[manager init:self];

}

-(void)executeAtInvalidTime:(NSInteger)result

{

BOOL isStart = [_manager isStarted];

if (isStart) {

switch (result) {

case OutOfTime:

// 開始処理後に利用時間外となった場合の処理

break;

case OutOfDay:

// 開始処理後に利用不可能な日となった場合の処理

break;

}

}else{

switch (result) {

case OutOfTime:

// 開始処理で利用時間外であった場合の処理

break;

case OutOfDay:

// 開始処理で利用不可能な日であった場合の処理

- 68 -

Page 81: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

break;

}

}

}

-(void)resultCallback:(NSInteger)result error:(NSError *)error

{

switch (result) {

case InitTimerError:

// 開始処理で例外が発生した場合の処理

break;

case InitTimerSuccess:

// 開始処理が成功した場合の処理

break;

}

}

利用時間の情報を取得します。利用時間の制御の開始処理後に使用します。

IMAAppTimeManager *manager = [IMAAppTimeManager sharedInstance];

NSError *error = nil;

NSString *startTime = [manager getStartTime:&error]; // 利用時間の開始時間を取得する場合

if (error) {

// 例外処理

}

利用時間の制御を終了します。利用時間制御の開始処理後に利用時間外になる前に、終了する場合に使用します。

IMAAppTimeManager *manager = [IMAAppTimeManager sharedInstance];

[manager destory];

注意

・ クライアント設定ファイルのappmgr.strictPolicyModeの値がfalseの場合は、端末がオフラインでポリシー設定ファイルが更新されな

い場合や、 クライアントの時計が間違っている場合は、設定した時間外にアプリケーションが利用可能になる場合があります。 これ

を防止するためには、appmgr.strictPolicyModeの値をtrueにします。詳細は、付録C クライアント設定ファイルを参照してください。

3.4.8 パッケージング

プログラムとして作成したクラスファイルをパッケージ化します。各プラットフォームのIDEでパッケージングを実施します。

iOSの場合、パッケージングするために証明書のインストールおよびプロビジョニングファイルが必要です。

詳細は、"Apple Developer"のドキュメントを参照してください。

IMAPSサーバでアプリケーションを配布する場合

IMAPSサーバでアプリケーションを配布する場合は、パッケージ化したファイルを含めた以下のようなzip形式のアーカイブファイルを

作成します。

- 69 -

Page 82: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

それぞれのファイルについて説明します。以下のファイルをzipファイルのルートフォルダーに含めます。

・ アプリケーション本体

パッケージ化したアプリケーション本体です。拡張子は、ipaです。

アプリケーションのバージョンと識別IDは255文字以降は無視されます。

バージョンはアプリケーションのバージョンです。

パッケージは、アプリケーションを特定するための値です。以下の値を参照します。

Info.plistのCFBundleIdentifier

・ 説明ファイル

アプリ詳細画面でアプリケーションの説明欄に表示する文章を定義するファイルです。ファイルはUTF-8で記載します。

日本語の説明はdescription_ja.txt、英語の説明はdescription.txtに記載します。

説明文は、0文字以上4000文字以下の範囲で記載できます。

省略時は空文字になります。

・ アイコン

IMAPSサーバによる配布画面上で利用されるアイコンです。アイコンの推奨サイズは96x96ピクセル以上で縦横の幅が同じ画像で

す。ファイルはpng形式でファイル名はicon.pngです。

省略時はデフォルトのアイコンになります。

・ そのほか

アプリケーションをインストールするための依存ファイルなどです

注意

IMAPSサーバによる配布をするには、プラットフォームごとに以下の条件があります。丸括弧内は、主に対応が必要となる人物です。

ここで説明されている内容は、各ベンダーによって変更される可能性があります。 新の情報は、それぞれの公開情報を参照してくだ

さい。

・ (アプリケーション開発者) Apple社とのiOS Developer Enterprise Program契約が必要です。アプリケーション作成時に、この契約

によって入手できる適切なプロビジョニングプロファイルを使用してください。

・ (システム管理者) iOS7.1から、SSL(HTTPS)が前提となります。IMAPSサーバをSSLで運用してください。

- 70 -

Page 83: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

3.4.9 デバッグ

詳細は、"Apple Developer"のドキュメントを参照してください。

3.4.10 配布

開発したアプリケーションを配布する方法は、"運用ガイド"の"IMAPSクライアントアプリケーションの配布"を参照してください。

3.5 Windowsアプリケーションの開発

IMAPSはネイティブアプリケーション向けに、認証、SLS、ログ送信、双方向通信サービスのAPIを提供しています。認証のAPIを使用

する場合は、SLSのAPIについての準備も行う必要があります。

プッシュのAPIを使用する場合は第6章 プッシュ通知機能を参照してください

クライアント設定ファイルの値を調整することで、アプリケーションの動作をカスタマイズできます。詳細は、付録C クライアント設定ファ

イルを参照してください。

詳細はドキュメントを参照してください。

3.5.1 開発環境の準備

開発に必要な開発マシンと開発ツールを用意します。

開発に必要な開発マシンのOSと開発ツールは以下のとおりです。

開発マシン

Windows 8.1(64 bit)以降(Windows RTは除く)

開発ツール

・ Visual Studio 2013以降(Windows 8.1 ストアアプリを開発する場合)

・ Visual Studio 2015以降(Windows 10 UWPアプリを開発する場合)

開発するWindowsアプリをビルドするために必要なライブラリを選択して、Visual Studioをインストールしてください。

3.5.2 ネイティブアプリケーションの開発をする(Visual Studio)

参考

アプリケーション開発者用のAPIリファレンスは以下に格納されています。必要に応じて参照してください。

<DVD-ROMドライブ>\apiref\index.html

<DVD-ROMマウントディレクトリ>/apiref/index.html

1. ネイティブアプリケーションの開発環境を準備後、Visual StudioでWindows用のプロジェクトを作成し、次のライブラリをアプリケー

ションプロジェクトの参照設定に追加します。

<DVD-ROMドライブ>\development\windows\components\ImapsNativeLibrary.dll

<DVD-ROMドライブ>\development\windows\components\ImapsAppManagerNativeLibrary.dll

<DVD-ROMマウントディレクトリ>/development/windows/components/ImapsNativeLibrary.dll

<DVD-ROMマウントディレクトリ>/development/windows/components/ImapsAppManagerNativeLibrary.dll

2. 開発に必要なその他のライブラリ、ファイルを準備します。

・ SQLite

Visual StudioにSQLiteがインストールされていない場合は、以下の手順でインストールしてください。

- Windows 8.1 ストアアプリを開発する場合

- 71 -

Page 84: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

SQLite for Windows Runtime(Windows 8.1)をインストールします。

[ツール] > [拡張機能と更新プログラム]から[SQLite]を検索してインストールしてください。SQLiteのインストール後、参照

設定の[Windwos 8.1] > [拡張]から[SQLite for Windows Runtime(Windows 8.1)]を選択し、追加してください。

- Windows 10 UWPアプリを開発する場合

SQLite for Universal Windows Platformをインストールします。

[ツール] > [拡張機能と更新プログラム]から[SQLite]を検索してインストールしてください。SQLiteのインストール後、参照

設定の[Universal Windows] > [拡張]から[SQLite for Universal Windows Platform]を選択し、追加してください。

SQLiteのインストール/参照の設定手順詳細は、Windows デベロッパーセンターのドキュメントを参照してください。

・ クライアント設定ファイル(imaps.xml)付録C クライアント設定ファイルを参照してください。

3. サーバとSSL通信を行う場合は、アプリケーションと一緒に証明書をインストールできます。

1. 接続先サーバのサーバ証明書を入手します。

2. 取得したサーバ証明書をプロジェクト内に格納し、Visual Studioでファイルを選択して、[プロジェクト]メニューから[プロジェク

トに含める]を選択します。

3. 証明書の拡張機能を使って選択条件を設定します。package.appxmanifestを編集するか、Visual Studioのマニフェスト デザ

イナーを利用して、証明書の宣言を行います。

証明書の設定手順の詳細は、Windows デベロッパーセンターのドキュメントを参照してください。

4. 利用するAPIによって、必要な機能の設定をpackage.appxmanifestに設定します。ネットワーク機能を利用するために、以下に示

す機能を適切な組み合わせで設定します。

■ Visual Studioのマニフェスト デザイナーを使用して設定する場合

認証

インターネット(クライアント)

インターネット(クライアントとサーバー)

プライベートネットワーク(クライアントとサーバー)

ログ収集

インターネット(クライアント)

インターネット(クライアントとサーバー)

プライベートネットワーク(クライアントとサーバー)

利用時間制御

インターネット(クライアント)

インターネット(クライアントとサーバー)

プライベートネットワーク(クライアントとサーバー)

■ package.appxmanifestを直接編集する場合

認証

<Capability Name="internetClient" />

<Capability Name="internetClientServer" />

<Capability Name="privateNetworkClientServer" />

ログ収集

<Capability Name="internetClient" />

<Capability Name="internetClientServer" />

- 72 -

Page 85: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

<Capability Name="privateNetworkClientServer" />

利用時間制御

<Capability Name="internetClient" />

<Capability Name="internetClientServer" />

<Capability Name="privateNetworkClientServer" />

注意

・ 作成したプロジェクトは「Any CPU」でのビルドはできません。対象のプラットフォーム(x86/x64/ARM)を指定してビルドしてく

ださい。

3.5.3 認証

本節では、認証APIの利用方法について説明します。

認証のAPIでは、オフライン認証を行うため、オンライン認証が成功すると認証情報をSLSに保存します。そのため、認証APIを使用す

る場合は、SLSのAPIについての準備も行う必要があります。

3.5.3.1 認証APIIMAPSの認証APIは以下の機能を提供しています。

・ ログイン

・ ログアウト

・ 認証情報の付与

・ 管理情報の設定

・ パスワード変更

・ ユーザー情報の登録、取得、削除

・ SLS内のデータの引き継ぎ

・ タイムアウト検知

3.5.3.2 ログイン

アプリケーションは、IMAPSが提供している認証機構を呼び出して、利用しているユーザーの正当性を検証できます。ログインには以

下の種類があります。

・ IMAPSサーバが提供している認証機能をネットワーク経由で呼び出し、サーバ側で認証するオンライン認証

・ クライアント内部で保持しているクレデンシャルを用いて認証する、オフライン認証

使用例

オンライン認証を行うためには、Com.Fujitsu.Imaps.Plugin.Auth.LoginManager#loginOnlineメソッド、オフライン認証を行うために

は、Com.Fujitsu.Imaps.Plugin.Auth.LoginManager#loginOfflineメソッドを呼び出します。

private async void loginFunc() {

string url = "https://サーバアドレス:ポート";

string userId = "user1";

string passwd = "pass11";

try

{

LoginManager lm = new LoginManager();

await lm.loginOnline(url, userId, passwd);

}

catch (例外キャッチ)

- 73 -

Page 86: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

{

// キャッチした例外の内容に応じて、例外処理を実装します。

}

}

private void loginFunc() {

string userId = "user1";

string passwd = "pass11";

try

{

LoginManager lm = new LoginManager();

lm.loginOffline(userId, passwd);

}

catch (例外キャッチ)

{

// キャッチした例外の内容に応じて、例外処理を実装します。

}

}

ポイント

・ オンライン認証では、クライアント設定ファイルのimapsServerAddressで接続先のサーバを設定することも可能です。詳細は、開発

者用マニュアル、付録C クライアント設定ファイルを参照してください。

3.5.3.3 ログアウト

アプリケーションは、ログアウトを呼び出す事でユーザー情報を初期化できます。ログアウトメソッドは内部的にはIMAPSサーバの認証

機構を呼び出さないため、ネットワークが利用できない状態でも呼び出せます。

使用例

private void logoutFunc() {

try

{

LoginManager lm = new LoginManager();

lm.logout();

}

catch (例外キャッチ)

{

// キャッチした例外の内容に応じて、例外処理を実装します。

}

}

3.5.3.4 認証情報の付与

ログイン後、クライアントアプリケーションがIMAPSサーバ以外のサーバにアクセスする場合、認証情報を受け渡せます。この機能は

IMAPSサーバの認証機構と業務サーバとの間でSSOのような振る舞いをおこないたい場合に便利です。SSOのような振る舞いとは以

下のような動作を指します。

・ IMAPSサーバで認証していない場合、クライアントからのアクセスはエラーとなる。

・ IMAPSサーバで認証済の場合、クライアントからのアクセスは成功する

このような振る舞いを実現するためには、以下のようにします。

・ クライアントからアクセスする業務サーバ上のサーバアプリケーションに、認証モジュールを組み込む

・ クライアントアプリケーションはIMAPSで認証し、業務サーバにアクセスする際には認証情報を付与してアクセスする

使用例

using Windows.Web.Http;

using Windows.Web.Http.Filters;

- 74 -

Page 87: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

private async void connectionFunc() {

string url = "https://サーバアドレス:ポート";

HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, new Uri(url));

try

{

LoginManager lm = new LoginManager();

lm.setRequestAuth(request);

HttpBaseProtocolFilter hbpf = new HttpBaseProtocolFilter();

hbpf.AllowUI = false; // ユーザー資格情報の入力を求めるプロンプトを表示しない.

HttpClient httpClient = new HttpClient(hbpf);

HttpResponseMessage response = await httpClient.SendRequestAsync(request);

lm.checkServerTimeout(response);

}

catch (IMAPSAuthTimeOutException e)

{

// ログアウト処理の実装を行うことを推奨します。

}

catch (例外キャッチ)

{

// キャッチした例外の内容に応じて、例外処理を実装します。

}

}

3.5.3.5 管理情報の設定

管理情報とは、IMAPSサーバがクライアントからアクセスされた場合に、APIからのアクセスである事を確認するための情報です。管理

情報はシステム管理者によってIMAPSサーバに設定され、ユーザーの認証情報とは別に管理されます。

IMAPSサーバにアクセスするアプリケーションは、必ずアプリケーション内で管理情報を設定してください。具体的にどのような管理情

報を設定するかは、システム管理者に問い合わせてください。

管理情報は、アプリケーション起動時に一度設定します。IMAPSサーバにアクセスするAPIを呼び出すたびに実行する必要はありま

せん。

使用例

LoginManager lm = new LoginManager();

lm.setManageInfo(管理ID, 管理パスワード);

注意

異なるプロセスから管理情報を設定した場合は、IMAPSサーバにアクセスできません。

3.5.3.6 パスワード変更

パスワードの変更ができます。

使用例

private async void changePwdFunc() {

string url = "https://サーバアドレス:ポート";

string oldPasswd = "oldpass";

string newPasswd = "newpass";

try

{

PasswdManager pm = new PasswdManager();

await pm.changePasswd(url, oldPasswd, newPasswd);

}

catch (例外キャッチ)

- 75 -

Page 88: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

{

// キャッチした例外の内容に応じて、例外処理を実装します。

}

}

ポイント

クライアント設定ファイルのimapsServerAddressでも接続先のサーバを設定できます。詳細は、開発者用マニュアル、付録C クライアント設定ファイルを参照してください。

3.5.3.7 ユーザー情報の登録、取得、削除

クライアントアプリケーションがIMAPS以外の既存の業務システムを利用して認証している場合、そのままではオフライン認証や認証モ

ードでのSLSを利用できません。

このような独自認証を行った場合、ユーザーの情報を登録すれば、これらの機能を利用できます。

使用例

string userId = "user1";

string passwd = "pass11";

string userName = "name1";

string[] userRole = null;

try

{

LoginManager lm = new LoginManager();

lm.setLoginUserInfo(userId, passwd, userName, userRole);

}

catch (例外キャッチ)

{

// キャッチした例外の内容に応じて、例外処理を実装します。

}

設定したユーザー情報は、Com.Fujitsu.Imaps.Pulgin.Auth.UserManagerを利用する事で取得できます。

UserManager um = UserManager.getInstance();

string userId = um.userId; // ユーザーIDを取得する場合

登録したユーザー情報とSLSのデータは、Com.Fujitsu.Imaps.Pulgin.Auth.LoginManagerのdeleteUserInfoを利用して削除できま

す。

try

{

LoginManager lm = new LoginManager();

lm.deleteUserInfo(userId);

}

catch (例外キャッチ)

{

// キャッチした例外の内容に応じて、例外処理を実装します。

}

3.5.3.8 SLS内のデータの引き継ぎ

IMAPSでは、クライアント内にデータをセキュアに保存するための仕組みとして、SLSを提供しています。SLSを認証モードで利用して

いる場合、格納データはパスワードをキーにして保護されています。

そのためパスワードが変更された場合、格納された暗号化データを引き継ぐ(暗号化データを新しいパスワードで再暗号化する)必要

があります。

使用例

private async void loginFunc() {

string url = "https://サーバアドレス:ポート";

- 76 -

Page 89: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

string userId = "user1";

string passwd = "pass11";

try

{

LoginManager lm = new LoginManager();

await lm.loginOnline(url, userId, passwd);

}

catch (IMAPSSlsPasswordException spe)

{

// パスワードが異なるため、データの引き継ぎができなかった場合に例外が発生します。

// データの引き継ぎをおこなうかをユーザーに問い合わせます。

}

catch (例外キャッチ)

{

// キャッチした例外の内容に応じて、例外処理を実装します。

}

}

// データを引き継ぎます

private void transFunc(string oldPasswd) {

try

{

LoginManager lm = new LoginManager();

lm.transData(oldPasswd);

}

catch (IMAPSSlsPasswordException spe)

{

// パスワードが異なるため、データの引き継ぎができなかった場合に例外が発生します。

// データの引き継ぎをおこなうかをユーザーに問い合わせます。

}

catch (例外キャッチ)

{

// キャッチした例外の内容に応じて、例外処理を実装します。

}

}

// データを削除します

private void deleteFunc() {

try

{

LoginManager lm = new LoginManager();

lm.deleteData();

}

catch (例外キャッチ)

{

// キャッチした例外の内容に応じて、例外処理を実装します。

}

}

3.5.3.9 タイムアウト検知

クライアントアプリケーションのアイドルタイムアウト時間を検知します。以下の機能があります。

・ タイムアウト監視開始

・ タイムアウト検知

使用例

private void onPause()

{

TimeoutManager.getInstance().chkTimeoutStart();

}

private void onResume()

- 77 -

Page 90: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

{

if(TimeoutManager.getInstance().isTimeout())

{

//タイムアウト発生時の実装

}

}

3.5.4 SLS本節では、SLSのAPIの利用方法について説明します。

インストール先の端末がAndroid6.0以上、かつ開発ツールでAPI Levelに23以上を設定して開発するときは、パーミッションのAPIにつ

いての準備も行う必要があります。

3.5.4.1 SLSのAPIネイティブアプリケーションからSLSを利用する場合、認証モードと認証レスモードがあります。認証モードで利用する場合、SLSのAPIを利用する前に、認証APIを利用して認証します。認証モードと認証レスモードでは使用するSLSのAPIが異なります。認証モードでは

ユーザー毎に異なる暗号化キーを利用してデータを暗号化するため、よりセキュリティ強度が高まります。

SLSのAPIが提供している機能には、以下のようなものがあります。

・ データの格納および取得

・ データの削除、データ数およびキーの取得

3.5.4.2 データの格納および取得

SLSにデータを格納、および取得できます。格納されたデータは、キーおよび値ともに暗号化されて格納され、取得時にはデータは復

号化されます。格納されるデータサイズは2GBを上限に、カスタマイズできます。詳細は、C.5.10 sls.maxDatabaseSizeを参照してくださ

い。以下は、認証モードの例です。

使用例

LoginInfo loginInfo = LoginData.getInstance().mLoginInfo;

if (loginInfo.UserId != null) {

try

{

DataManagerDirect dm = new DataManagerDirect(loginInfo.UserId,

Encoding.UTF8.GetBytes(loginInfo.Pwd));

dm.put("キー名", "値");

}

catch (IMAPSSlsException e)

{

// 例外処理

}

catch (IMAPSSlsKeySizeOverException e)

{

// 例外処理

}

catch (IMAPSSlsDbSizeOverException e)

{

// 例外処理

}

try

{

DataManagerDirect dm = new DataManagerDirect(loginInfo.UserId,

Encoding.UTF8.GetBytes(loginInfo.Pwd));

string value = dm.get("キー名");

}

catch (IMAPSSlsException e)

{

// 例外処理

- 78 -

Page 91: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

}

catch (IMAPSSlsKeySizeOverException e)

{

// 例外処理

}

}

3.5.4.3 データの削除、データ数およびキーの取得

SLSのAPIでは、格納されたデータの削除やキーを取得できます。以下は認証レスモードの例です。

使用例

try

{

DataManagerModeLessDirect dm = new DataManagerModeLessDirect();

int count = dm.getListLength(true);

for (int i=count-1; i >= 0; i--)

{

string key = dm.getKeyFromIndex(i);

dm.remove(key);

}

}

catch (IMAPSSlsException e)

{

// 例外処理

}

3.5.5 ログ収集

本節では、ログ収集APIの利用方法について説明します。

3.5.5.1 ログ収集APIログ収集APIが提供している機能には、以下があります。

・ ログ出力とサーバへの送信

・ ログ設定の変更

3.5.5.2 ログ出力とサーバへの送信

以下にログ出力、ログ送信する実施例を示します。

実施例

ログ出力の例

IMAPSLogger m_logger = new IMAPSLogger();

m_logger.info("abcde");

m_logger.warn("あいうえお");

m_logger.error("abcde");

m_logger.debug("あいうえお");

ログ送信の例

public async Task sendFunc()

{

string url = "https://サーバアドレス:ポート";

string userId = "user1";

string passwd = "pass11";

- 79 -

Page 92: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

try

{

// 認証処理

LoginManager loginManager = new LoginManager();

await loginManager.loginOnline(url, userId, passwd);

// ログ送信処理

IMAPSLogger m_logger = new IMAPSLogger();

await m_logger.send(userId);

}

catch(Exception e)

{

// 例外処理

}

}

注意

・ ログ送信先は、クライアント設定ファイルのimapsServerAddressで設定します。詳細は、付録C クライアント設定ファイルを参照して

ください。

・ ログAPIのsendメソッドを使用するには、以下のどちらかの認証情報の設定が必要です。

1. loginOnlineによる認証設定

認証機能のloginOnlineメソッドやloginAutoメソッドなどで認証情報を設定してからsendメソッドを実行してください。

2. setManageInfoによる認証設定

ユーザー情報を持たないアプリケーションでsendメソッドを実行する場合の認証方法です。あらかじめIMAPSサーバの管理

コマンドでアプリケーション管理者を作成し、認証機能のsetManageInfoメソッドで管理者情報を設定してからsendメソッドを実

行してください。アプリケーション管理者の作成方法は、"運用ガイド"の"コマンドリファレンス"を参照してください。

3.5.5.3 ログ設定の変更

以下にログ設定の変更を行う実施例を示します。

実施例

ログ設定の例

IMAPSLogger log = new IMAPSLogger();

try {

log.setLevel(IMAPSLogLevel.DEBUG);

log.setMaxFileSize(20);

log.setRotateCount(5);

log.getLevel(); // IMAPSLogLevel.DEBUG

log.getMaxFileSize(); // 20

log.getRotateCount(); // 5

} catch (IMAPSClientCommonException e) {

// 設定ファイルの読み込みに失敗した場合

} catch (ArgumentException e) {

// 指定した引数が間違っている場合

}

参考

ログAPIの設定はクライアント設定ファイルよりも優先されます。変更した内容は、アプリの再起動や更新によって失われません。

3.5.6 利用時間制御

本節では、利用時間制御APIの利用方法について説明します。

- 80 -

Page 93: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

3.5.6.1 利用時間制御API利用時間制御APIが提供している機能には、以下があります。

・ 利用時間の制御

3.5.6.2 利用時間の制御

アプリケーションの利用可能な時間を制御します。

利用時間の制御を開始するにはAppTimeManagerのInitメソッドを使用します。 利用時間外であることはAppTimeDelegateに通知され

ます。

使用例

以下の場合に、それぞれ別の処理をする使用例を示しています。

・ 利用時間の制御の開始処理で利用時間外であった場合

・ 利用時間の制御の開始処理後に利用時間外となった場合

・ 利用時間の制御の開始処理で利用不可能な日であった場合

・ 利用時間の制御の開始処理後に利用不可能な日となった場合

using Com.Fujitsu.Imaps.Plugin.AppManager;

using Com.Fujitsu.Imaps.Plugin.AppManager.Exceptions;

private void Func()

{

AppTimeManager appTimeManager = AppTimeManager.Instance;

appTimeManager.Init(this);

}

void AppTimeDelegate.ExecuteAtInvalidTime(int result)

{

AppTimeManager appTimeManager = AppTimeManager.Instance;

Boolean isStart = appTimeManager.IsStarted();

if (isStart)

{

if (AppTimeManager.OUT_OF_TIME == result)

{

// 開始処理後に利用時間外となった場合の処理

}

else

{

// 開始処理後に利用不可能な日となった場合の処理

}

}

else

{

if (AppTimeManager.OUT_OF_TIME == result)

{

// 開始処理で利用時間外であった場合の処理

}

else

{

// 開始処理で利用不可能な日であった場合の処理

}

}

}

void AppTimeDelegate.ResultCallback(string result)

- 81 -

Page 94: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

{

if (result == AppTimeManager.RESULT_NETWORK_ERROR || result == AppTimeManager.RESULT_SYSTEM_ERROR || result ==

AppTimeManager.RESULT_ILLEGAL_USAGE_ERROR)

{

// 開始処理で例外が発生した場合の処理

}

else if (result == AppTimeManager.RESULT_OK)

{

// 開始処理が成功した場合の処理

}

}

利用時間の情報を取得します。利用時間の制御の開始処理後に使用します。

AppTimeManager appTimeManager = AppTimeManager.Instance;

try

{

string startTime = appTimeManager.GetStartTime(); // 利用時間の開始時間を取得する場合

}

catch(Exception)

{

//例外処理

}

利用時間の制御を終了します。利用時間制御の開始処理後に利用時間外になる前に、終了する場合に使用します。

AppTimeManager appTimeManager = AppTimeManager.Instance;

appTimeManager.Destroy();

注意

・ クライアント設定ファイルのappmgr.strictPolicyModeの値がfalseの場合は、端末がオフラインでポリシー設定ファイルが更新されな

い場合や、 クライアントの時計が間違っている場合は、設定した時間外にアプリケーションが利用可能になる場合があります。 これ

を防止するためには、appmgr.strictPolicyModeの値をtrueにします。詳細は、付録C クライアント設定ファイルを参照してください。

3.5.7 パッケージング

プログラムとして作成したクラスファイルをパッケージ化します。各プラットフォームのIDEでパッケージングを実施します。

Windowsの場合、アプリケーションに署名が必要です。

詳細は、"Windows デベロッパー センター"のドキュメントを参照してください。

注意

パッケージング作成のウィザードにて、「Any CPU」でのパッケージングはできません。対象のプラットフォーム(x86/x64/ARM)を指定してパッケージングしてください。

IMAPSサーバでアプリケーションを配布する場合

IMAPSサーバでアプリケーションを配布する場合は、パッケージ化したファイルを含めた以下のようなzip形式のアーカイブファイルを

作成します。

- 82 -

Page 95: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

それぞれのファイルについて説明します。以下のファイルをzipファイルのルートフォルダーに含めます。

・ アプリケーション本体

パッケージ化したアプリケーション本体です。拡張子は、appxです。

アプリケーションのバージョンと識別IDは255文字以降は無視されます。

バージョンはアプリケーションのバージョンです。

パッケージは、アプリケーションを特定するための値です。以下の値を参照します。

Package.appxmanifestのIdentity要素のName属性

・ 説明ファイル

アプリ詳細画面でアプリケーションの説明欄に表示する文章を定義するファイルです。ファイルはUTF-8で記載します。

日本語の説明はdescription_ja.txt、英語の説明はdescription.txtに記載します。

説明文は、0文字以上4000文字以下の範囲で記載できます。

略時は空文字になります。

・ アイコン

IMAPSサーバによる配布画面上で利用されるアイコンです。アイコンの推奨サイズは96x96ピクセル以上で縦横の幅が同じ画像で

す。ファイルはpng形式でファイル名はicon.pngです。

省略時はデフォルトのアイコンになります。

・ そのほか

アプリケーションをインストールするための依存ファイルなどです。Windowsアプリの場合は、依存関係にあるファイルもアプリケー

ション本体との位置関係を維持したままzipファイルに含めます。

注意

IMAPSサーバによる配布をするには、プラットフォームごとに以下の条件があります。丸括弧内は、主に対応が必要となる人物です。

ここで説明されている内容は、各ベンダーによって変更される可能性があります。 新の情報は、それぞれの公開情報を参照してくだ

さい。

(システム管理者) Microsoft社とのサイドローディング契約が必要です。

また、以下のインストール条件があります。

・ (アプリケーション開発者) アプリケーションを信頼できるルート証明書にチェーンされた証明書を使って署名する。

・ (アプリケーション利用者) インストール先のスマートデバイスをActive Directoryドメインに追加するか、インストール時に開発者ライ

センス認証を行う。

- 83 -

Page 96: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

・ (アプリケーション利用者) インストール先のスマートデバイスのグループポリシー[信頼できるすべてのアプリのインストールを許可

する]を有効にする。

アプリケーション利用者の操作は、アプリケーション作成時に生成されるAdd-AppDevPackage.ps1ファイルを利用することでも実行でき

ます。

以下のように実行します。

・ (システム管理者) あらかじめこのファイルと、そのほかのアプリケーションのインストールに必要なファイルをzip形式のアーカイブ

に含めてIMAPSサーバに登録します。

・ (アプリケーション利用者) zipファイルをダウンロード・展開し、Add-AppDevPackage.ps1ファイルを右クリックして、[PowerShellで実

行]を選択します。

・ (アプリケーション利用者) 画面に表示される質問に答えることでインストールできます。

※正式なインストール手順はマイクロソフト社のドキュメントを参照してください。

http://technet.microsoft.com/ja-jp/windows/jj874388.aspx

3.5.8 デバッグ

詳細は、"Windows デベロッパー センター"のドキュメントを参照してください。

3.5.9 配布

開発したアプリケーションを配布する方法は、"運用ガイド"の"IMAPSクライアントアプリケーションの配布"を参照してください。

3.6 注意事項

ネイティブアプリケーション開発時の注意事項を説明します。

3.6.1 iOSでHTTP通信する場合の注意事項

iOS 9から、httpでの通信が、デフォルトでは利用できなくなりました。

以下のどちらかの対処をしてください。

・ IMAPSサーバをHTTPSでセットアップして、HTTPSで接続してください。

・ IMAPSサーバをHTTPで運用する場合は、info.plistにNSAppTransportSecurityの設定をしてください。

設定例1(すべてのドメインでhttpアクセスを有効にする)

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">

<plist version="1.0">

<dict>

...

<key>NSAppTransportSecurity</key>

<dict>

<key>NSAllowsArbitraryLoads</key>

<true/>

</dict>

</dict>

</plist>

設定例2(特定のドメインでhttpアクセスを有効にする)

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">

<plist version="1.0">

<dict>

...

<key>NSAppTransportSecurity</key>

- 84 -

Page 97: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

<dict>

<key>NSExceptionDomains</key>

<dict>

<key>ドメイン</key>

<dict>

<key>NSExceptionAllowsInsecureHTTPLoads</key>

<true/>

</dict>

</dict>

</dict>

</dict>

</plist>

- 85 -

Page 98: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

第4章 Webアプリケーション

本章では、Interstage Application ServerのJava EE、Java EE 6によるWebアプリケーションの開発について説明します。

4.1 Webアプリケーションの概要

Webアプリケーションは、PCと同様にWebブラウザ上で動作します。

PCの場合と同様、HTML5やJavaScriptといったWeb技術を用いて開発します。

4.2 開発の流れ

Webアプリケーションの開発の流れは、次のとおりです。

1. 開発環境の準備

2. 開発/パッケージング

3. 動作確認(デバッグ)

4. 配布

4.3 開発環境の準備

Interstage Studioなどの開発ツールを準備します。

4.4 開発

Webアプリケーション開発の詳細は以下のマニュアルを参照してください。

・ Interstage Application Server Java EE運用ガイドの「Java EEアプリケーションの開発」

・ Interstage Application Server Java EE運用ガイド(Java EE 6編)の「Java EEアプリケーションの開発」

4.4.1 認証

認証機能を組み込む場合は"運用ガイド"、および第8章 認証を参照してください。

4.4.2 双方向通信サービス

双方向通信サービスが利用できます。詳細は、第7章 双方向通信サービスを利用したアプリケーションを参照してください。

4.4.3 jQuery MobilejQuery Mobileを利用することができます。詳細は、付録G jQuery Mobileを参照してください。

4.5 パッケージング

プログラムとして作成したクラスファイルをパッケージ化します。Java EE規約に準じた方法でパッケージ化してください。

4.6 デバッグ

Webアプリケーションは、アプリケーションのデバッグ情報・デバッガ・スレッドダンプ・Javaメソッドトレースを利用してデバッグします。デ

バッグの詳細は以下のマニュアルを参照してください。

・ Interstage Application Server Java EE運用ガイドの"Java EEアプリケーションの開発"

・ Interstage Application Server Java EE運用ガイド(Java EE 6編)の"Java EEアプリケーションの開発"

- 86 -

Page 99: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

4.7 配備・配備解除

開発したJavaアプリケーションは、管理コンソールやコマンドを利用してJavaアプリケーション実行環境へ配備・配備解除します。配備・

配備解除の詳細は以下のマニュアルを参照してください。

・ Interstage Application Server Java EE運用ガイドの「Java EEアプリケーションの運用」

・ Interstage Application Server Java EE運用ガイド(Java EE 6編)の「Java EEアプリケーションの運用」

- 87 -

Page 100: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

第5章 サーバアプリケーション

サーバアプリケーションとは、業務サーバで動作するアプリケーション(業務アプリケーション)のことです。

本章では、IMAPSにおけるサーバアプリケーションについて説明します。

5.1 サーバアプリケーションの概要

クライアントから送信されるデータを収集、蓄積、分析、活用したり、永続的に管理するためにサーバ上のアプリケーションが必要で

す。いろいろなデータが集まってくることから、高信頼でセキュアな環境が必要です。

また、クライアント上で実現するのが難しい業務ロジックを実行する基盤として、高性能な環境が必要です。

そのため、IMAPSでは、サーバアプリケーションの実行基盤としてInterstage Application Server を提供します。サーバアプリケーション

開発の詳細は以下のマニュアルを参照してください。

・ Interstage Application Server Java EE運用ガイド

・ Interstage Application Server Java EE運用ガイド(Java EE 6編)

5.2 認証の組み込み

サーバアプリケーションに認証機能を組み込む方法を説明します。

以下の作業を行います。

・ 第8章 認証で開発したクラスをコマンドで設定(imadmin auth set)、インポート(imadmin auth import)する

コマンドの詳細は"運用ガイド"の"コマンドリファレンス"を参照してください。

- 88 -

Page 101: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

第6章 プッシュ通知機能

本章では、Interstage Mobile Application Serverが提供するプッシュ通知機能を利用したアプリケーションの開発を説明します。

注意

プッシュ通知機能は、Android、iOS、Windowsに対応しています。

6.1 動作概要

プッシュ通知機能の動作概要は次のとおりです。

・ IMAPSサーバ

メッセージ送信、登録IDを管理します。

・ プッシュ基盤サーバ

IMAPSプッシュIDに対して、メッセージを送信します。

・ 業務アプリ

プッシュ通知機能を利用してメッセージを送信します。

・ クライアントアプリケーション

プッシュ通知を受け取ります。プッシュメッセージが受信可能な単位は、「ネイティブアプリケーション」、「ハイブリッドアプリケーショ

ン」です。

・ GCM, APNs, WNS, IMAPSプッシュ

GCMはGoogle, APNsはApple, WNSはMicrosoftが提供するプッシュサービスです。IMAPSプッシュはIMAPSが提供するプッシュ

サービスです。

GCM, APNs, WNSからスマートデバイスが受信するまでの間にプロキシが存在する場合、メッセージを受信できません。(未サポー

ト)

IMAPSサーバからGCM, APNs, WNSへ送信するまでの間にプロキシが存在する場合、プッシュプロパティファイル(impush.properties)の設定が必要です。詳細は"運用ガイド"の"プッシュプロパティファイル(impush.properties)"を参照してください。

- 89 -

Page 102: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

IMAPSプッシュはイントラネットのみサポートします。

・ 蓄積メッセージ

IMAPSプッシュを使用時に、端末が未接続のため届かなかったメッセージを管理します。

・ 登録ID

プッシュ通知先を示すIDです。GCMのregistrationID、APNsのデバイストークン、WNSのチャネルURI、IMAPSプッシュのIMAPSプッシュIDを指します。

・ 拡張データ

登録IDを識別するために指定する任意のデータです。従業員ID、会員IDなどを想定しています。

サーバ側のアプリケーションは、以下の機能を利用できます。

・ メッセージの送信

送信先として登録ID、または拡張データを指定し、メッセージを送信できます。

・ 送信状態の確認

蓄積メッセージ参照機能による未達メッセージの確認ができます。(IMAPSプッシュだけ)

・ 登録IDの管理

登録IDの一覧取得、情報取得、削除、検索、登録、更新ができます。

スマート端末側のアプリケーションは初期化を行うことで、メッセージを受信できます。

・ 初期化

プッシュ通信サービスへのバインド、初期設定を行います。これにより受信を開始します。コールバック関数を実装し登録すること

で、メッセージ受信時に追加で処理を行うことができます。

・ メッセージ受信

メッセージを受信すると、プッシュ通知機能がメッセージを表示します。さらに、初期化時にコールバック関数を登録した場合は、コ

ールバック関数が呼び出されます。

6.2 受信したメッセージの表示

受信したプッシュメッセージは通知領域(Android:通知バー/iOS:通知センター/Windows:通知領域)に表示されます。

ネイティブアプリケーションのプッシュメッセージ受信の方式と受信(表示)の切り替え方法を以下に示します。

方式 受信ON/OFF 表示ON/OFF 備考

IMAPSプッシュ 可能 未サポート 受信ON/OFFは、PushManagerクラスの関数を呼び出すことで切り替えられます。

接続OFF時に発行されたプッシュメッセージは、サーバ側に一定期間保管され、

再度接続ON時に受信できます。

表示ON/OFFの切り替えはできません。

GCM 一部動作

(Android4.1以降は端末の

通知設定が優

先)

可能 Android4.1以降は、端末の通知設定により受信ON/OFFの切り替えができます。

それ以前のOSでは、受信ONだけです。

表示ON/OFFの切り替えは、プッシュクライアント設定ファイル(push.properties)で指定します。

APNs 不可 可能 システム(OS)側で制御するため、受信ON/OFFの切り替えはできません。

表示ON/OFFの切り替えは、端末の設定(通知センター)で指定します。

表示OFFの間のプッシュメッセージは破棄されます。

WNS 不可 可能 システム(OS)側で制御するため、受信ON/OFFの切り替えはできません。

表示ON/OFFの切り替えは、プッシュクライアント設定ファイル(push.xml) で指

定します。

- 90 -

Page 103: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

6.2.1 IMAPSプッシュ

IMAPSプッシュでは、IMAPSサーバ側で指定したPayloadのフォーマットに従い、プッシュ部品がその内容を表示します。Payloadはプ

ッシュクライアント設定ファイルでも設定できます。

Payloadのフォーマット

受信されるPayloadはJSON形式です。

Payload仕様

Payloadでサポートするタグ情報は以下のとおりです。

タグ 意味 設

概要

title

通知領域に表示する

タイトル部

指定しない場合、push.NotificationAppNameで示されたリソースの定義値を表示す

る。

指定する場合は、アプリにバンドルしたリソースの定義値とする。

指定された定義値がアプリ内にみつからない場合は、指定内容をそのまま表示する。

空文字の場合は空文字が表示される。

ticker

通知バーに表示する

メッセージ部

指定しない場合、プッシュクライアントが保持しているティッカー定義文(※)を表示す

る。

指定する場合は、アプリにバンドルしたリソースの定義値とする。

指定された定義値がアプリ内にみつからない場合は、指定内容をそのまま表示する。

空文字の場合は空文字が表示される。

message通知領域に表示する

メッセージ部

指定しない場合や空文字を指定した場合は、通知バーに表示されない。

指定する場合は、アプリにバンドルしたリソースの定義値とする。

指定された定義値がアプリ内にみつからない場合は、指定内容をそのまま表示する。

message_arg

メッセージに渡す引数 任

messageに%sを指定した場合に、書式指定子の代わりに表示する変数文字列値を指

定する。messageに書式指定子があり、message_argを省略した場合は、書式指定子

がそのままメッセージ部に表示される。空文字を指定した場合は、空文字に置き換わ

る。

action通知領域のタップ時の

アクション

指定しない場合、通知領域のタップ時に、通知を消去する。指定した場合、かつ、

push.NotificationMainClassNameに有効値が指定されている場合は、通知を消去し、

指定されたアクションを行う。

sound

通知音 任

指定しない場合、かつ、push.RingtoneUriに有効値が指定されていない場合は、音

を再生しない。

指定する場合は、TYPE_ALARM/TYPE_NOTIFICATION/TYPE_RINGTONEのいずれかを指定するが、3種以外が指定されていた場合は、端末の通知音

(TYPE_NOTIFICATION)を再生する

いずれの場合も、繰り返しは行わず1度だけ再生する。また、マナーモード時は再生

しない。

led_color

イルミネーション色 任

指定しない場合、または定義値がない場合は、イルミネーションは発光しない。

指定する場合は、アプリにバンドルしたリソースの定義値とする。

リソースでARGB(ffff0000など)を定義する。

ただし、実際の発光については、端末に依存する。

それぞれの設定値は以下の通り。

・ LED_COLOR_BLUE : #ff0000ff

・ LED_COLOR_GREEN : #ff00ff00

・ LED_COLOR_RED : #ffff0000

led_pattern

イルミネーションパター

指定しない場合、または定義値がない場合は、イルミネーションは発光しない。

指定する場合は、アプリにバンドルしたリソースの定義値とする。

リソースでパターンを定義する。(OnTime,OffTimeの順)ただし、実際の発光につい

ては、端末に依存する。

- 91 -

Page 104: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

タグ 意味 設

概要

それぞれの設定値は以下の通り。

・ LED_PATTERN01 : 500, 2000

・ LED_PATTERN02 : 500, 500

vib

バイブレーション 任

指定しない、または定義値がない場合は、振動しない。

指定する場合は、アプリにバンドルしたリソースの定義値とする。

それぞれの設定値は以下の通り。

・ VIB_PATTERN_01 : 0,500

・ VIB_PATTERN_02 : 0,200,300,700

※ティッカー定義文:(日本語)「メッセージを受信しました。」 (英語)「Received the Message.」

Payloadの指定例

{

"title":"TITLE",

"ticker":"TICKER",

"message":"MES_01",

"action":"http://jp.fujitsu.com/",

"sound":"TYPE_ALARM",

"led_color":"RED",

"led_pattern":"LP_01",

"vib":"VP_01"

}

アプリケーションにバンドルしたリソース

Value_ja/String.xml

<string name="TITLE">タイトル</string>

<string name="TICKER">メッセージがあります</string>

<string name="MES_01">次のサイトを確認してください。</string>

<string name="RED">#ffff0000</string>

<string name="LP_01">500,2000</string><!-— on:500ms, off:2000ms -->

<string name="VP_01">3000,1000,2000,5000,3000,1000</string>

<!-- 3秒後に1秒間の振動、2秒後に5秒間の振動、3秒後に1秒間の振動 -->

プッシュクライアント設定ファイルで指定する場合は以下のとおりです。

・ 音

push.RingtoneUri = souduri

・ LED

push.LedSet = true

push.LedOntime = 500

push.LedOfftime = 500

・ バイブレーション

push.VibPattern = 1000,1000,1000,1000,1000,1000

鳴動する場合は、次の優先度となります。

プッシュクライアント設定ファイルでの指定(push.RingtoneUri) > payloadで指定

6.2.2 GCMプッシュ部品で受信したメッセージを通知バーに表示します。(android.app.Notification) IMAPSプッシュのメッセージ表示と同様の表

示になります。

- 92 -

Page 105: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

Payloadのフォーマット

受信されるPayloadはJSON形式です。

Payload仕様

Payloadでサポートするタグ情報は以下のとおりです。

タグ 意味 設

概要

data GCMの固定Payloadのタグ

title

通知領域に表示

するタイトル部

指定しない場合、push.NotificationAppNameで示されたリソースの定義値を

表示する。

指定する場合は、アプリにバンドルしたリソースの定義値とする。

指定された定義値がアプリ内にみつからない場合は、指定内容をそのまま

表示する。空文字の場合は空文字が表示される。

ticker

通知バーに表示

するメッセージ部

指定しない場合、プッシュクライアントが保持しているティッカー定義文(※)を表示する。

指定する場合は、アプリにバンドルしたリソースの定義値とする。

指定された定義値がアプリ内にみつからない場合は、指定内容をそのまま

表示する。空文字の場合は空文字が表示される。

message

通知領域に表示

するメッセージ部

指定しない場合や空文字を指定した場合は、通知バーに表示されない。

指定する場合は、アプリにバンドルしたリソースの定義値とする。

指定された定義値がアプリ内にみつからない場合は、指定内容をそのまま

表示する。

message_arg

メッセージに渡す

引数

messageに%sを指定した場合に、書式指定子の代わりに表示する変数文字

列値を指定する。

messageに書式指定子があり、message_argを省略した場合は、書式指定子

がそのままメッセージ部に表示される。

空文字を指定した場合は、空文字に置き換わる。

action通知領域のタッ

プ時のアクション

指定しない場合、通知領域のタップ時に、通知を消去する。

指定した場合、かつ、push.NotificationMainClassNameに有効値が指定され

ている場合は、通知を消去し、指定されたアクションを行う。

sound

通知音 任

指定しない場合、かつ、push.RingtoneUriに有効値が指定されていない場合

は、音を再生しない。

指定する場合は、TYPE_ALARM/TYPE_NOTIFICATION/

TYPE_RINGTONEのいずれかを指定するが、3種以外が指定されていた場

合は、端末の通知音(TYPE_NOTIFICATION)を再生する

いずれの場合も、繰り返しは行わず1度だけ再生する。また、マナーモード時

は再生しない。

led_color

イルミネーション

指定しない場合、または定義値がない場合は、イルミネーションは発光しな

い。

指定する場合は、アプリにバンドルしたリソースの定義値とする。

リソースでARGB(ffff0000など)を定義する。

ただし、実際の発光については、端末に依存する。

led_pattern

イルミネーション

パターン

指定しない場合、または定義値がない場合は、イルミネーションは発光しな

い。

指定する場合は、アプリにバンドルしたリソースの定義値とする。

リソースでパターンを定義する。(OnTime,OffTimeの順)

ただし、実際の発光については、端末に依存する。

vibバイブレーション 任

指定しない、または定義値がない場合は、振動しない。

指定する場合は、アプリにバンドルしたリソースの定義値とする。

registration_ids registrationID 任

空にするか、または指定しない

- 93 -

Page 106: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

※ティッカー定義文:(日本語)「メッセージを受信しました。」 (英語)「Received the Message.」そのほかのGCM固有のタグについては、GCMの公式サイトを確認してください。

6.2.3 APNsAPNsによって受信したメッセージは、システム(OS)によって通知センターに表示されます。

アプリケーションがフォアグラウンドの場合は、ダイアログ形式で表示されます。このダイアログのキャンセル機能のボタン名は、アプリ

ケーションに含まれる下記のローカライズファイルに定義された文字列になります。(下記例の場合、「キャンセル」となります)

xx.lproj/FJPHandlerLib.strings

"But_01" = "キャンセル"

Payloadのフォーマット

受信されるPayloadはJSON形式です。

Payload仕様

Payloadでサポートするタグ情報は以下のとおりです。

タグ 意味 設定 概要

aps APNsの固定Payloadのタグ

alert 通知センターに表示するメ

ッセージ情報

※1 alertのタグ

body通知センターに表示するメ

ッセージ部

任意 指定しない場合、バナーまたはダイアログに表示されない。

loc-key

通知センターに表示するメ

ッセージ部

任意 指定しない場合、バナーまたはダイアログに表示されない。

指定する場合は、アプリにバンドルしたリソースの定義値とする。

指定された定義値がアプリ内にみつからない場合は、指定内容

をそのまま表示する。

loc-args

loc-keyに渡す引数 任意 loc-keyに%@指定子や%n$@指定子を指定した場合に、書式指

定子の代わりに表示する変数文字列を配列で指定する。

例)

message_arg":["test","test2"]

launch-image

起動画面 任意 指定しない場合は、アプリのUILaunchImageFileキーに指定され

ている画像かDefault.pngを使用する。

指定する場合は、アプリにバンドルされているイメージファイル名

を指定する。

action-loc-keyボタンのローカライズ文字

任意 指定しない場合、バンドルしていないリソースの定義値を指定し

た場合は「起動」が表示される。

指定する場合は、アプリにバンドルしたリソースの定義値とする。

badge バッジ 任意 数値型で数値を指定するとアイコンにバッジが表示される。

指定しない場合や上記を満たさない指定の場合は何も表示され

ない(0の位)。

sound 通知音 任意 アプリにバンドルされているサウンドファイル名を指定する。サポ

ートするファイルは、aiff、wav、またはcafファイルとする。それ以

外を指定した場合は、端末の通知音に設定されている音を再生

する。省略時は無音である。

いずれの場合も、繰り返しは行わず1度だけ再生する。また、マ

ナーモード時は再生しない。

category カテゴリ指定 任意 iOS8から追加された、通知アクションのカテゴリを指定する。

- 94 -

Page 107: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

タグ 意味 設定 概要

action 通知領域のタップ時のアク

ション

任意 指定しない場合、通知領域のタップ時に、通知を消去する。

指定した場合は、通知を消去し、指定されたアクションを行う。

指定方法は6.3 受信したメッセージからのアクションを参照のこ

と。

※1:alertタグに指定できる型は文字列とJSON構造のいずれかを指定可能である

Payloadの指定例

{

"aps":"{

"alert":"{

"loc-key":"MES_01",

"action-loc-key":"BUT_01"

}",

"badge”:1,

"sound":"notify.aiff"

}",

"action":http://jp.fujitsu.com/

}

アプリケーションにバンドルしたリソース

ja.lproj/Localizable.strings

"MES_01" = "次のサイトを確認してください。"

"BUT_01" = "確認"

ja.lproj/FJPHandlerLib.string

"But_01" = "キャンセル"

iOS8端末でアプリがフォアグラウンドの場合に、APNsプッシュ通知を受信し、かつ、その通知にカテゴリが追加されていた場合は、ア

プリで設定されたカテゴリ情報に従った通知ダイアログを表示できます。

・ イルミネーション

以下の端末設定がされている場合で、かつ、端末がロックおよびスリープ状態の場合にライトが発光する。

[設定] > [一般] > [アクシビリティ] > [LEDフラッシュ通知:ON]端末設定に依存しており、アプリ毎やPush通知毎の変更は不可能。

・ バイブレーション

端末設定において、バイブレーション有りが設定されている場合だけ動作する。

マナーモード時も振動する。

[設定] > [サウンド] > [バイブレーション]端末設定に依存しており、アプリ毎やPush通知毎の変更は不可能。

6.2.4 WNSWNSから受信したメッセージは端末アプリケーション側のプッシュ部品で受信し、通知領域に表示されます。

本機能は直接通知方式を採用しているためプッシュ部品側で受信メッセージの解析を行います。

Payloadのフォーマット

受信されるPayloadはxml形式です。

Payload仕様

Payloadでサポートするタグ情報は以下のとおりです。

要素 意味 設

概要

wns 必

WNS Payloadであることを示す要素

- 95 -

Page 108: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

要素 意味 設

概要

toast トースト通知 任

Microsoftが取り決めたWNSのtoast要素が指定されます。toast要素は1つの

み指定可能とする。

badge バッジ通知 任

Microsoftが取り決めたWNSのbadge要素が指定されます。badge要素は1つ

のみ指定可能とする。

tile タイル通知 任

Microsoftが取り決めたWNSのtile要素が指定されます。tile要素は1つのみ

指定可能とする。

注意

toast、badge、tile要素の詳細は、Microsoftの公式サイト(https://msdn.microsoft.com/en-us/library/windows/apps/br212853.aspx)を参照

してください。

表6.1 toast要素詳細

要素 属性 設

概要

toast - - トースト通知を示す要素。

- launch 任

トースト通知をクリックしたときに関連するアプリケーションに

渡される文字列。特定URLへのアクセスや、メール送信等

を行う際に指定する文字列。

例:http(s)://xxx.abc.jp、mailto:[email protected]

duration 任

トースト通知が表示される時間を示す文字列。long(25秒)も

しくはshort(7秒)を指定する。デフォルトはlongである。

visual - - トースト通知の表示形式を示す要素。

- version 任

トースト通知のXMLスキーマのバージョン。

lang 任

ロケールを示す文字列。

addImageQuery 任

trueの場合、現在の倍率、コントラスト設定、ロケール情報が

image要素のURIへのクエリパラメータに自動的に追加され

る。falseの場合はクエリパラメータが追加されない。デフォル

トはfalseである。

例えば、http://www.abc.xyz」がimage要素のsrc属性に指定

された場合、実際には「http://www.abc.xyz?ms-scale=80&ms-contrast=standard&ms-lang=en-US」のように

Webサーバに要求される。

baseUri 任

ベースになるURIを示す文字列。baseUriで指定した文字列

は、各image要素のURIから省略できる。デフォルトは「ms-appx:///」例えば、baseUriで「http:」を設定すると、各image要素のURIでは「http://www.abc.xyz」でなく「//www.abc.xyz」 と指定で

きる。

branding 任

未使用。

binding - - トースト通知のテンプレートと表示内容を関連付けている要

素。

- template 必

トースト通知で使用するテンプレート。

- 96 -

Page 109: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

要素 属性 設

概要

fallback 任

template属性で指定したテンプレートが見つからない場合に

指定するテンプレート。

lang 任

ロケールを示す文字列。

addImageQuery 任

trueの場合、現在の倍率、コントラスト設定、ロケール情報が

image要素のURIへのクエリパラメータに自動的に追加され

る。falseの場合はクエリパラメータが追加されない。デフォル

トはfalseである。

例えば、http://www.abc.xyz」がimage要素のsrc属性に指定

された場合、実際には「http://www.abc.xyz?ms-scale=80&ms-contrast=standard&ms-lang=en-US」のように

Webサーバに要求される。

baseUri 任

ベースになるURIを示す文字列。baseUriで指定した文字列

は、各image要素のURIから省略できる。デフォルトは「ms-appx:///」例えば、baseUriで「http:」を設定すると、各image要素のURIでは「http://www.abc.xyz」でなく「//www.abc.xyz」 と指定で

きる。

branding 任

未使用。

image - - トースト通知のテンプレートで使用されるイメージ要素。

- id 必

image要素に付与するID。1から順に指定する。templateで

指定したテンプレートに応じて各IDの画像が配置される。

src 必

イメージを示すURI文字列。

alt 任

イメージの説明。

addImageQuery 任

trueの場合、現在の倍率、コントラスト設定、ロケール情報が

image要素のURIへのクエリパラメータに自動的に追加され

る。falseの場合はクエリパラメータが追加されない。デフォル

トはfalseである。

例えば、http://www.abc.xyz」がimage要素のsrc属性に指定

された場合、実際には「http://www.abc.xyz?ms-scale=80&ms-contrast=standard&ms-lang=en-US」のように

Webサーバに要求される。

text - - トースト通知のテンプレートで使用されるテキスト要素。

- id 必

text要素に付与するID。1から順に指定する。templateで指

定したテンプレートに応じて各IDの画像が配置される。

lang 任

ロケールを示す文字列。

audio - - トースト通知に伴うサウンド表現に関する要素。

- src 任

通知音データのURI。

loop 任

trueの場合は通知音の鳴動を繰り返す。falseの場合は繰り

返さない。デフォルトはfalse。

silent 任

trueの場合は通知音をミュートする。falseの場合はミュートし

ない。デフォルトはfalse。

- 97 -

Page 110: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

要素 属性 設

概要

commands - - commandを束ねる要素。

- scenario 任

通知の実行目的を表わす。

command - - commands要素のsenario属性と関連づいた命令を表す要

素。

- id 任

commands要素のsenario属性と関連づいた文字列を指定す

る。

指定パターンは以下の通り。

・scenarioがalarmの場合 は、 snoozeまたはdismissを指定す

る。

・scenarioがincomingCallの場合は、video、voice、declineのいずれかを指定する。

arguments 任

連携アプリに渡す引数文字列。

表6.2 badge要素詳細

要素 属性 設

概要

badge - - バッジ通知を示す要素。

- value 必

バッジに表示する数値("1"、"2"等)またはグリフ("activity"、"playing"等) 。また、Windows8.1では100以上を指定した場

合バッジには「99+」と表示される。一方、Windows10では100以上でも省略せずにバッジ表示されるが「9999」が上限であ

る。

version 任

バッジ通知のXMLスキーマのバージョン。

表6.3 tile要素詳細

要素 属性 設

概要

tile - - タイル通知を示す要素。

visual - - タイル通知の表示形式を示す要素。

- version 任

タイル通知のXMLスキーマのバージョン

lang 任

ロケールを示す文字列。

addImageQuery 任

trueの場合、現在の倍率、コントラスト設定、ロケール情報が

image要素のURIへのクエリパラメータに自動的に追加され

る。falseの場合はクエリパラメータが追加されない。デフォル

トはfalseである。

例えば、http://www.abc.xyz」がimage要素のsrc属性に指定

された場合、実際には「http://www.abc.xyz?ms-scale=80&ms-contrast=standard&ms-lang=en-US」のように

Webサーバに要求される。

baseUri 任

ベースになるURIを示す文字列。baseUriで指定した文字列

は、各image要素のURIから省略できる。デフォルトは「ms-appx:///」例えば、baseUriで「http:」を設定すると、各image要素のURIでは「http://www.abc.xyz」でなく「//www.abc.xyz」 と指定で

きる。

- 98 -

Page 111: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

要素 属性 設

概要

branding 任

アプリの商標を指定する場合は、「none」「logo」「name」のい

ずれかを指定する。

contentId 任

通知するコンテンツを一意に識別するために送信者側で定

義する文字列。

binding - - タイル通知のテンプレートと表示内容を関連付けている要

素。

- template 必

タイル通知で使用するテンプレート。

fallback 任

template属性で指定したテンプレートが見つからない場合に

指定するテンプレート。

lang 任

ロケールを示す文字列。

addImageQuery 任

trueの場合、現在の倍率、コントラスト設定、ロケール情報が

image要素のURIへのクエリパラメータに自動的に追加され

る。falseの場合はクエリパラメータが追加されない。デフォル

トはfalseである。

例えば、http://www.abc.xyz」がimage要素のsrc属性に指定

された場合、実際には「http://www.abc.xyz?ms-scale=80&ms-contrast=standard&ms-lang=en-US」のように

Webサーバに要求される。

baseUri 任

ベースになるURIを示す文字列。baseUriで指定した文字列

は、各image要素のURIから省略できる。デフォルトは「ms-appx:///」例えば、baseUriで「http:」を設定すると、各image要素のURIでは「http://www.abc.xyz」でなく「//www.abc.xyz」 と指定で

きる。

branding 任

アプリの商標を指定する場合は、「none」「logo」「name」のい

ずれかを指定する。

contentId 任

通知するコンテンツを一意に識別するために送信者側で定

義する文字列。

image - - タイル通知のテンプレートで使用するイメージ要素。

- id 必

image要素に付与するID。1から順に指定する。templateで指

定したテンプレートに応じて各IDの画像が配置される。

src 必

イメージを示すURI文字列。

alt 任

イメージの説明。

addImageQuery 任

trueの場合、現在の倍率、コントラスト設定、ロケール情報が

image要素のURIへのクエリパラメータに自動的に追加され

る。falseの場合はクエリパラメータが追加されない。デフォル

トはfalseである。

例えば、http://www.abc.xyz」がimage要素のsrc属性に指定

された場合、実際には「http://www.abc.xyz?ms-scale=80&ms-contrast=standard&ms-lang=en-US」のように

Webサーバに要求される。

text - - タイル通知のテンプレートで使用するテキスト要素。

- id 必

text要素に付与するID。1から順に指定する。templateで指定

したテンプレートに応じて各IDの画像が配置される。

- 99 -

Page 112: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

要素 属性 設

概要

lang 任

ロケール文字列。

Payloadの指定例

<?xml version=”1.0” encoding=”utf-8”?>

<wns>

<toast launch=”http://www.fujitsu.com/jp/”>

<visual>

<binding template=”ToastText04”>

<text id=”1”>Sample Messsage</text>

</binding>

</visual>

</toast>

</wns>

6.3 受信したメッセージからのアクション

通知領域(Android:通知バー/iOS:通知センター/Windows:通知領域)に表示されたメッセージをタップすると、一連のアクションが行え

ます。

actionタグでアプリを開く操作を行うために、以下のオプションをサポートします。

注意

Windowsでのアクション指定は、トースト通知のみサポートされているため、タイル通知、バッジ通知でのアクション指定はできません。

アクション フォーマット 備考

自アプリケーション起動

Androidの場合、action値に半角スペースまたは、指定したカスタ

ムURLスキームに対応した連携アプリが存在しない場合に自ア

プリケーションが起動します。連携アプリが存在しない場合の規

定動作については、・連携アプリが存在しない場合の既定動作

についてを参照してください。

iOS、Windowsの場合、action指定の有無に関係なく自アプリケ

ーションが起動します。

メール送信画面起動action="mailto:TOアドレス?subject=件名&body=本文&cc=CCア

ドレス&bcc=BCCアドレス"mailtoスキーマをサポートしているメー

ルアプリだけ起動可能。

ブラウザ起動 action="http(https):から始まるサイトのURL"

連携アプリ起動 各連携アプリに依存します。

連携アプリを起動するには、カスタムURLスキームを利用します。

また、URLにクエリ文字列を指定することにより、パラメータの受

け渡しも可能です。

連携アプリが存在しない場合の規定動作については、・連携アプ

リが存在しない場合の既定動作について、連携アプリ側で必要

となる設定及び、URL・クエリ文字列の取得については、・連携ア

プリ側で必要となる設定及び、URL・クエリ文字列取得について

を参照してください。

外部からの起動を許容している他の

アプリケーション

iOS8からは、カテゴリを指定して、通知ダイアログに以下に示す"action1"、"action2"のような選択肢を設けることができます。

- 100 -

Page 113: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

・連携アプリが存在しない場合の既定動作について

指定されたカスタムURLスキームに対応する連携アプリが存在しない場合の動作は、OSごとに以下のようになります。

OS 動作

Android 自アプリケーションが起動します。

iOS 自アプリケーションが起動します。

Windows 「ストアでアプリを探す」のダイアログが表示されます。

・連携アプリ側で必要となる設定及び、URL・クエリ文字列取得について

Android

カスタムURLスキームの定義をします。AndroidManifest.xmlで、アクションから起動するActivityに以下のような記述を追加します。

(以下の例では、URLスキームを「fjp」、ホストを「sample」として設定しています。)

<intent-filter>

<action android:name="任意" />

<category android:name="android.intent.category.DEFAULT" />

<data android:scheme="fjp" android:host="sample" />

</intent-filter>

URL・クエリ文字列を受け取る場合は、アクションから起動するActivityに以下のような記述を追加します。(以下の例では、受け取

るURLを「fjp://sample?param1=abc」としています。)

Intent intent = this.getIntent();

// fjp://sample?param1=abcを取得

Uri uri = intent.getData();

// abcを取得

String param1 = intent.getStringExtra("param1");

iOS

カスタムURLスキームの定義をします。Targetを開き、InfoタブのURL Types欄を展開しURL Schemesに任意のURLスキームを入

力します。

- 101 -

Page 114: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

注意

・ iOS9でURLスキームを定義する場合は、info.plistに配列型のLSApplicationQueriesSchemesを記述し、配列要素として、使用

するURLスキームを設定してください。info.plistに設定が無い場合、エラーとなってしまいます。

・ 定義したURLスキームがAppleが提供するアプリケーションにも定義されている場合、Appleのアプリケーションが優先して起動

されます。また、Apple以外のアプリケーションに同一のURLスキームが定義されている場合、どちらが起動されるかは保証され

ないため、必ず固有のURLスキームを指定するようにしてください。

URL・クエリ文字列を受け取る場合は、AppDelegate.mを開き、以下のメソッドを実装します。

-(BOOL)application:(UIApplication*)application openURL:(NSURL*)url

sourceApplication:(NSString*)sourceApplication annotation:(id)annotation

{

// URLを文字列で取得

NSString *strUrl = [url absoluteString];

// クエリ文字列取得

NSString *query = [url query];

return YES;

}

注意

iOS9では、上記メソッドは非推奨となりましたので、iOS9で実装する場合は、以下のメソッドを実装してください。

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options

{

// URLを文字列で取得

NSString *strUrl = [url absoluteString];

// クエリ文字列取得

NSString *query = [url query];

return YES;

}

Windows

カスタムURLスキームの定義をします。Package.appxmanifestを開き、宣言タブの使用可能な宣言で「プロトコル」を追加し、プロパ

ティの名前欄に任意のURLスキームを定義します。

URL・クエリ文字列を受け取る場合は、App.xaml.csを開き、以下のメソッドを実装します。

protected override void OnActivated(IActivatedEventArgs args)

{

// 起動処理の実装(実装内容はアプリケーションに依存するため省略)

// アクションから起動された場合true

if (args.Kind == ActivationKind.Protocol)

{

// URL・クエリ文字列を受け取る

ProtocolActivatedEventArgs ar = args as ProtocolActivatedEventArgs;

// URLの取得

Uri uri = ar.Uri;

// クエリ文字列の取得

string query = uri.Query;

}

Window.Current.Activate();

}

- 102 -

Page 115: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

6.4 API

6.4.1 サーバ側のAPIサーバ側のAPIの概要を以下に示します。サーバ側のAPIはWeb APIで、送受信のデータ形式はJSONです。詳細は付録A プッシュ

Web APIを参照してください。

API名 メソッド 機能パス

(Web API名)意味

登録ID情報の取得 POST regID 登録ID情報を取得。

登録IDの一覧取得 POST regIDs 登録IDの一覧を取得。

登録IDの検索 POST findRegID 拡張データを検索条件として、登録IDを検索。

登録IDの削除 POST delRegIDs 指定した登録IDを削除。

IMAPSプッシュIDの更

POST fjpRegID IMAPSプッシュIDを更新。

APNsのデバイストーク

ン登録、更新

POST apnsRegID APNsのデバイストークン、アプリケーション名、サンドボックスを登

録、または更新。

WNSのチャネルURI登録、更新

POST wnsRegID WNSのチャネルURI、アプリケーション名の情報を登録、または更

新。

GCMのregistrationID登録、更新

POST gcmRegID GCMのregistrationID、GCMのアプリケーション名の情報を登録、ま

たは更新。

メッセージ送信 POST notify 指定した宛先に対して、メッセージを送信。

共通メッセージの送信 POST notifyCommon 指定した宛先に対して、共通のメッセージを送信。

蓄積メッセージ参照 GET refSvrMsg サーバに蓄積しているメッセージを参照。

メッセージ情報の取得 POST getMsgByMsgID

メッセージIDが示すメッセージ情報を取得します。

メッセージ情報の取得 POST getMsgByRegID

登録IDが示すメッセージ情報を取得します。

既読件数の取得 POST readCount 送信済のメッセージの総件数と既読件数を取得します。

プッシュWeb APIは、アプリケーション管理者によるアクセス制御を使用します。

そのため、プッシュWeb APIを使用するアプリケーションは、HTTPヘッダにIMAPS-Authorizationキーの設定が必要です。IMAPSとし

て認証する/しないの動作に連動して、プッシュの認証も動作します。

IMAPS-Authorizationキーには、以下の内容を設定します。IMAPS-Authorizationキーに指定するユーザーID、パスワードは、adminusercreateコマンドで作成したユーザーを指定します。

IMAPS-Authorization: Basic ユーザー ID:パスワード

下線部はBase64でエンコードしてください。

HTTPリクエストのURLの形式は以下のとおりです。

http(s)://<IMAPSサーバ>:<ポート番号>/pushidmng/機能パス

<IMAPSサーバ>

IMAPSサーバのFQDNまたはIPアドレス。

<ポート番号>

プッシュアプリで使用するApacheのリスナーポート。

「IMAPSサーバ用パラメタ(imsetup_srv.properties)」のIM_AHS_PUSH_PORTの値。

- 103 -

Page 116: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

<機能パス>

Web API名。

アプリケーション管理者によるアクセス制御は、"運用ガイド"の"アプリケーション管理者によるアクセス制御"を参照してください。

6.4.2 クライアント側のAPIクライアント側のAPIの概要を以下に示します。ハイブリッドアプリケーション向けのJavaScriptと、それぞれのクライアントOS向けのネイ

ティブ言語のAPIを提供します。

JavaScript APIの概要を以下に示します。

Namespace メソッド名 意味

FJPHandler init プッシュハンドラを利用するための初期設定を行う。

Android向けのAPIの概要を以下に示します。

クラス名 メソッド名 意味

PushManager init プッシュハンドラを利用するための初期設定(登録IDの払出しとプッシュ基盤サー

バへの接続)を行い、プッシュ通知を受信できる状態にする。

PushManager initAtomic プッシュハンドラを利用するための初期設定(登録IDの払出しだけ)を行う。プッシ

ュ通知を受信できない状態。

PushManager bind PUSH通信サービスにバインドする。これにより、APIが利用できるようになる。

PushManager notifyMessageRead メッセージIDを引数に指定し、IMAPSサーバへメッセージを確認したことを通知す

る。

PushManager getFailedMsgIDList 通信エラーによりアプリ領域に保存したメッセージIDの一覧を取得する。

GcmRegister register SENDER IDでGCMのregistrationIDを要求し、IMAPSサーバに登録。IMAPSサ

ーバ登録後に、再度、本APIを実行した場合は、GCMのregistrationID要求は行

う、IMAPSサーバへの登録はregistrationIDが変更されるまでは行わない。

なお、すでにIMAPSサーバ登録後のためGCMのregistrationID要求だけ行った

場合でも、要求に成功した場合はPushReceiver:callbackにID登録状態であること

が通知される。

GcmRegister notifyMessageRead メッセージIDを引数に指定し、IMAPSサーバへメッセージを確認したことを通知す

る。

GcmRegister getFailedMsgIDList 通信エラーによりアプリ領域に保存したメッセージIDの一覧を取得する。

PushManager生成時に、引数としてPushReceiverを指定します。

メッセージ(エラーメッセージを含む)を受信したい場合は、以下のメソッドをオーバーライドしてください。

クラス名 メソッド名 意味

PushReceiver Callback PushManagerからの通知を受信。

PushMangerのbindメソッドで、引数としてPushServiceを指定します。

プッシュ通知されたメッセージを個別処理したい場合は、以下のメソッドをオーバーライドしてください。

クラス名 メソッド名 意味

PushService notifyMessage プッシュ通知されたメッセージを、Androidの通知領域に表示。

iOS向けのクラス、APIの概要を以下に示します。

クラス名 メソッド名 意味

FJPApplication - アプリ全体で共有する情報を保持。アプリケーションのエントリポイント

UIApplicationMain()の引数として指定。

FJPAppDelegate - 本クラスを親としてDelegateクラスを作成。

- 104 -

Page 117: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

クラス名 メソッド名 意味

FJPAppDelegateの派

生クラス

RegisterForRemoteNotificationTypes

APNsにリモート通知を要求する処理を記述。

FJPMessageReadManager

notifyMessageRead メッセージIDを引数に指定し、IMAPSサーバへメッセージを確認したことを通知す

る。

FJPMessageReadManager

getFailedMsgIDList 通信エラーによりアプリ領域に保存したメッセージIDの一覧を取得する。

FJPNotifyDelegateの

派生クラス

didNotifyMessageRead

既読通知処理が完了した場合に呼び出す関数。

Windows向けのAPIの概要を以下に示します。

クラス名 メソッド名 意味

WNSRegister init WNSから取得したチャネルURIをIMAPSサーバに登録します。

WNSから返されるチャネルURIが変更されることがありうるので、

WNSを利用する場合は、アプリ起動の度に本APIを必ず呼び出

してください。

また、本APIを呼び出す場合は、UIスレッド上から呼び出してくだ

さい。

WNSRegister setPushReceiver 本クラスからの通知を受け取るクラスを設定します。

WNSRegister notifyMessageRead メッセージIDを引数に指定し、IMAPSサーバへメッセージを確認

したことを通知する。

WNSRegister getFailedMsgIDList 通信エラーによりアプリ領域に保存したメッセージIDの一覧を取

得する。

WNSRegister getMessageID トースト通知をタップ後、アプリ起動時に渡される情報からメッセ

ージIDを取得する。

6.5 クライアントのアプリケーションの開発

6.5.1 ハイブリッドアプリケーション向けのAPIの開発

ハイブリッドアプリケーション向けのAPIはJavaScriptで提供します。

1.マニフェストファイルの修正と、プッシュクライアント設定ファイルの設定

以下を行います。

・ IMAPSプッシュ

6.5.2 IMAPSプッシュ通知を利用するネイティブアプリケーションの開発の1.マニフェストファイルの修正、2. プッシュクライアント設

定ファイルの作成を実施します。

・ GCM

6.5.3 GCMプッシュ通知を利用するネイティブアプリケーションの開発のGCMプッシュ通知を利用するネイティブアプリケーション

を開発するための事前準備、1. マニフェストファイルの修正、2. プッシュクライアント設定ファイルの作成を実施します。

・ APNs

6.5.4 APNsプッシュ通知を利用するネイティブアプリケーションの開発のAPNsプッシュ通知を利用するネイティブアプリケーション

を開発するための事前準備、1. プッシュクライアント設定ファイルの作成、および2. プッシュクライアント設定ファイル設定、プッシュ

ハンドラ初期化処理の作成の項番1を実施します。

2. プッシュクライアント設定ファイル設定、プッシュハンドラ初期化処理の作成の項番2を、以下のように実施します。

- 105 -

Page 118: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

@interface AppDelegate : FJPCDVAppDelegate

2. プッシュクライアント設定ファイル設定、プッシュハンドラ初期化処理の作成の項番4を、以下のように実施します。

//@interface MainViewController: CDVViewController

@interface MainViewController : FJPCDVViewController

・ WNS

6.5.5 WNSプッシュ通知を利用するネイティブアプリケーションの開発のWNSを利用するネイティブアプリケーションを開発するた

めの事前準備、1. マニフェストファイルの修正、および2. プッシュクライアント設定ファイルの作成を実施します。

注意

WNSを使用するハイブリッドアプリケーションは、Visual Studioを使用してWNSの設定とビルドを行う必要があります。詳細は、2.5.2WNSを使用する場合の注意事項を参照してください。

保管先

<Cordovaプロジェクトのルート>/plugins/imaps-plugin-push-properties

ファイル

・ IMAPSプッシュ/GCM用:push.properties

・ APNs用:push.plist

・ WNS用:push.xml

2.プッシュハンドラ初期化処理の作成

FJPHandler.initメソッドを呼び出すと初期化され、メッセージの受信を開始します。

以下に使用例を示します。

var jsonText = '{"ext_data":"Extension String"}';

FJPHandler.init("FJ", // プッシュの種類を指定 FJ:IMAPSプッシュ

JSON.parse(jsonText ), // 初期化時に使用する値を設定。

function(result) {

// プッシュを受信可能な状態になった後の処理

},

function(result) {

// エラー発生時のコールバック

}

);

各プッシュ方式固有の動作、設定は次のとおりです。

観点 IMAPSプッシュ

(Android)GCM

(Android)APNs(iOS)

WNS(Windows)

init()のoptionsに渡す情報

拡張データ 拡張データ

SENDER_ID(注1)拡張データ 拡張データ

setNotificationMode()

動作する 一部動作する

(Android4.1以降は端末

の通知設定が優先)

動作しない

(端末設定の「通知セン

ター」で設定)

動作する

プッシュを利用す

るための事前設定

AndroidManifest.xmlに、ネイティブAPIと同様

の記述が必要(注2)

AndroidManifest.xmlに、ネイティブAPIと同様

の記述が必要(注3)

ネイティブ層の修正が必

Package.appxmanifestに機能の追加が必要

errorCallback IMAPSサーバとの通信

エラーが返される

IMAPSサーバとの通信

エラーが返される

JavaScript層にエラーを

返せないので、ネイティ

ブ層の作り込みが必須

(注4)

IMAPSサーバとの通信

エラーが返される

- 106 -

Page 119: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

注1)GCMプッシュの際のSENDER IDです。6.4.2 クライアント側のAPI のAPIのGcmRegister.register()に渡すものと同じです。 以下の

ように指定します。

JSON{"sender_id":"(GCMの開発者コンソールから入手したSENDER IDの値)"}

注2)"IMAPSプッシュ通知を利用するネイティブアプリケーションの開発"の1.マニフェストファイルの修正を参照してください。

注3)"GCMプッシュ通知を利用するネイティブアプリケーションの開発"の1. マニフェストファイルの修正を参照してください。

注4)iOSの場合、デバイストークン生成時のエラーやIMAPSサーバとの通信エラーは、FJPAppDelegateを継承したサブクラスの

[UIAppliationDelegate application:didFailToRegisterForRemoteNotificationWithError:]にコールバックされるため、このインタフェース

をオーバライドしてエラー処理の実装が必要です。

ハイブリッドアプリケーションでログ出力を行う場合、6.5.6 ログ出力のカスタマイズを参照してください。

認証の設定は、6.5.7 認証クラスの定義を参照してください。

拡張データを指定する場合は、6.5.8 拡張データの指定を参照してください。

既読通知機能の利用を行う場合、6.5.13 既読通知機能の利用を参照してください。

受信したメッセージ情報を受け取る場合、ネイティブ層の実装が必要です。6.5.9 IMAPSプッシュの処理結果受け取り、6.5.10 GCMプ

ッシュの処理結果受け取り、6.5.11 APNsプッシュの処理結果受け取り、6.5.12 WNSプッシュの処理結果受け取りを参照してください。

注意

ダウンロード方法により読み込み専用ファイルとなる場合があります。プロジェクト読み込み時にファイルの書き込み権限が必要となる

ので、その際は権限の付与など必要な対処をしてください。

6.5.2 IMAPSプッシュ通知を利用するネイティブアプリケーションの開発

IMAPSプッシュ通知を利用するネイティブアプリケーション向けのAPIはJavaで提供します。

IMAPS向けのネイティブアプリケーションの開発環境を準備後、以下のファイルをコピーします。開発環境は、 3.3.1 開発環境の準備

を参照してください。

<DVD-ROMドライブ>\development\android\push\native

<DVD-ROMマウントディレクトリ>/development/android/push/native

上記ディレクトリから開発用端末に資産をコピーし、Moduleとしてインポートします。次に、インポートしたModuleを参照Moduleとして設

定します。

IMAPSプッシュ通知を利用するネイティブアプリケーションの開発には、以下の作業が必要です。

1. マニフェストファイルの修正

2. プッシュクライアント設定ファイルの作成

3. プッシュクライアント設定ファイル設定、プッシュハンドラ初期化処理の作成

4. build.gradle ファイルの修正

1.マニフェストファイルの修正

・ Wi-Fi機能の状態を参照(WiFi MACアドレスを利用)するために、以下のパーミッションを設定します。

android.permission.ACCESS_WIFI_STATE

・ IMEIを取得するために、以下のパーミッションを設定します。IMEI(International Mobile Equipment Identifier)は、端末識別番号で

す。

android.permission.READ_PHONE_STATE

注意

インストール先の端末がAndroid6.0以上の場合、パーミッションの確認が必要です。詳細は3.3.7 パーミッションを参照してくださ

い。

・ ネットワークの接続/切断状態を取得するため、以下のパーミッションを設定します。

- 107 -

Page 120: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

android.permission.ACCESS_NETWORK_STATE

・ プッシュ受信用のサービスをアプリケーション起動時および端末起動時に自動起動するには、以下の指定が必要です。

- 端末の起動が完了したことをサービスが受け取れるように、以下のパーミッションを指定します。

android.permission.RECEIVE_BOOT_COMPLETED

- レシーバーがインテントを受け取れるようにインテントフィルターと以下のパーミッションを指定します。

action android:name="android.intent.action.BOOT_COMPLETED

・ サービスとして、com.fujitsu.imaps.push.PushServiceクラス、または、その派生クラスを指定します。

・ レシーバーとして、com.fujitsu.imaps.push.BootReceiverを指定します。

...

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission

android:name="android.permission.READ_PHONE_STATE" /><uses-permission

android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission

android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

<application ...>

<activity ...>

...

</activity>

<service android:name="com.fujitsu.xxx.push.PushService" /> <receiver

android:name="com.fujitsu.imaps.push.BootReceiver"> <intent-filter> <action

android:name="android.intent.action.BOOT_COMPLETED"/> </intent-filter> </receiver>

2. プッシュクライアント設定ファイルの作成

プッシュハンドラに渡すパラメータを、プッシュクライアント設定ファイル(push.properties)に設定します。プッシュクライアント設定ファイ

ルについては、付録D プッシュクライアント設定ファイルを参照してください。

3. プッシュクライアント設定ファイル設定、プッシュハンドラ初期化処理の作成

プッシュクライアント設定ファイル情報は、プッシュハンドラを利用する前に設定してください。

以下はプッシュクライアント設定ファイルの設定例です。

// プッシュサーバとの接続先をプッシュクライアント設定ファイルに設定する

push.ServerAddress = https://example.com/

push.SelfCertificate = true

以下はプッシュ通知を受信できる状態にする場合のプッシュハンドラ初期化処理例です。

public class Sample {

// プッシュ部品のインスタンス

private static PushManager mPushManager = null;

// プッシュ部品から通知を受け取るためのコールバッククラスの宣言

private class MyReceiver extends PushReceiver{

@Override

public void callback(int result, Bundle data) {

// ここに通知されます

if(result == PushDefine.RESULT_REG_SERVER_SUCCESS) { // 初期化完了

}

}

}

public void executeSample() {

// プッシュハンドラの初期化

mPushManager = new PushManager(context, new MyReceiver());

pm.bind(PushService.class);

- 108 -

Page 121: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

try {

pm.init();

} catch (PushException e) {

e.printStackTrace();

}

}

}

以下はプッシュ通知を受信できる状態にしない場合(登録ID払出だけ)のプッシュハンドラ初期化処理例です。任意のタイミングでプ

ッシュ基盤サーバとの接続がおこなえます。

public class Sample {

// プッシュ部品のインスタンス

private static PushManager mPushManager = null;

// プッシュ部品から通知を受け取るためのコールバッククラスの宣言

private class MyReceiver extends PushReceiver{

@Override

public void callback(int result, Bundle data) {

// ここに通知されます

if(result == PushDefine.RESULT_REG_SERVER_SUCCESS) { // 初期化完了

// プッシュ基盤サーバと接続

mPushManager.connect();

}

}

}

public void executeSample() {

// プッシュハンドラの初期化

mPushManager = new PushManager(context, new MyReceiver());

pm.bind(PushService.class);

try {

pm.initAtomic();

} catch (PushException e) {

e.printStackTrace();

}

}

}

4.build.gradle ファイルの修正

・ プッシュクライアント設定ファイルを参照するために、defaultConfigのapplicationIdにパッケージ名を設定します。以下は、設定例で

す。

android {

・・・

defualtConfig {

applicationId 'com.sample.app'

}

}

注意

ビルドを行うGradle version によっては、上記設定が行われていない場合、プッシュクライアント設定ファイルの参照に失敗し、実行

時にエラーとなる場合があります。

ログ出力を行う場合、6.5.6 ログ出力のカスタマイズを参照してください。

認証の設定は、6.5.7 認証クラスの定義を参照してください。

- 109 -

Page 122: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

拡張データを指定する場合は、6.5.8 拡張データの指定の指定を参照してください。

エラー通知受け取りを行う場合、6.5.9 IMAPSプッシュの処理結果受け取りを参照してください。

既読通知機能の利用を行う場合、6.5.13 既読通知機能の利用を参照してください。

注意

ダウンロード方法により読み込み専用ファイルになる場合がありますが、プロジェクト読み込み時にファイルの書き込み権限が必要とな

りますので、その際は権限の付与など必要な対処を実施してください。

注意

build.gradleのcompileSdkVersionに23を指定して、プッシュ通知のAPIの以下のメソッドを使用する場合、

・ com.fujitsu.imaps.push.customize.PushExtAuth

- setRequestAuth メソッド

- saveResponseAuth メソッド

build.gradleに以下を追加してください。

android {

.....

useLibrary 'org.apache.http.legacy' //この行を追加

.....

}

useLibraryの追加をしないと、認証APIでコンパイルエラーが発生します。

6.5.3 GCMプッシュ通知を利用するネイティブアプリケーションの開発

GCMプッシュ通知を利用するネイティブアプリケーションを開発するための事前準備

GCMプッシュ通知を利用するネイティブアプリケーションを開発するための事前準備として以下を行います。

1. Google Developers Consoleでプロジェクトを作成します。

2. 作成したプロジェクトを選択し、GCMを有効にします。

3. API Keyを作成します。

4. GCM対応のAndroidアプリを開発します。

注) GoogleCloudMessaging.register()に渡すSENDER_IDは、作成したプロジェクトの「Project Number」を指定します。

5. API keyをプッシュサーバに登録します。

詳細は、Google Developers Consoleを参照してください。

GCMプッシュ通知を利用するネイティブアプリケーションの開発

GCMプッシュ通知を利用するネイティブアプリケーション向けのAPIはJavaで提供します。IMAPSプッシュ通知を利用するネイティブア

プリケーション向けのAPIと同様に準備します。

GCMプッシュ通知を利用するネイティブアプリケーションの開発には、以下の作業が必要です。

1. 作成したプロジェクトの参照設定で、MavenリポジトリからGoogle Play Servicesのライブラリ(rev.17以降)を指定します。

2. マニフェストファイルを修正します。

3. プッシュクライアント設定ファイルを作成します。

4. プッシュクライアント設定ファイルを設定し、プッシュハンドラ初期化処理を作成します。

5. Google Play開発者サービスのインストールをします。

- 110 -

Page 123: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

6. build.gradle ファイルの修正

1. マニフェストファイルの修正

・ Wi-Fi機能の状態を参照(WiFi MACアドレスを利用)するため、以下のパーミッションを設定します。

android.permission.ACCESS_WIFI_STATE

・ IMEIを取得するため、以下のパーミッションを設定します。IMEI(International Mobile Equipment Identifier)は、端末識別番号で

す。

android.permission.READ_PHONE_STATE

注意

インストール先の端末がAndroid6.0以上の場合、パーミッションの確認が必要です。詳細は3.3.7 パーミッションを参照してくださ

い。

・ GCMからメッセージを受信するため、以下のパーミッションを設定します。ここで指定したアプリケーションだけが GCM メッセージ

を受信できます。[package]部分は作成したアプリのパッケージ名に置き換えます。Android 4.1 以上 (SdkVersion 16 ) をターゲット

としている場合は必須ではありません。

<permission android:name="[package].permission.C2D_MESSAGE"android:protectionLevel="signature" />

<uses-permission android:name="[package].permission.C2D_MESSAGE" />

<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />

・ メッセージを受信したらスリープを解除するため、以下のパーミッションを設定します。

<uses-permission android:name="android.permission.WAKE_LOCK"/>

・ インターネットに接続するため、以下のパーミッションを設定します。

<uses-permission android:name="android.permission.INTERNET"/>

・ Android4.0.4未満で動作させる場合は、Googleアカウントを取得するため、以下のパーミッションを指定します。

<uses-permission android:name="android.permission.GET_ACCOUNTS"/>

・ サービスとして、com.fujitsu.imaps.push.gcm.GcmIntentServiceを指定します。

・ レシーバーとして、com.fujitsu.imaps.push.gcm.GcmBroadcastReceiverを指定します。

...

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission

android:name="android.permission.READ_PHONE_STATE" />

<permission android:name="[package].permission.C2D_MESSAGE" android:protectionLevel="signature" /><uses-permission

android:name="[package].permission.C2D_MESSAGE" /><uses-permission

android:name="com.google.android.c2dm.permission.RECEIVE" /><uses-permission

android:name="android.permission.WAKE_LOCK" /><uses-permission android:name="android.permission.INTERNET" /><uses-

permission android:name="android.permission.GET_ACCOUNTS" />

<application ...>

...

<receiver android:name="com.fujitsu.imaps.push.gcm.GcmBroadcastReceiver"

android:permission="com.google.android.c2dm.permission.SEND" > <intent-filter> <action

android:name="com.google.android.c2dm.intent.RECEIVE" /> <category android:name="[packge]" /> </

intent-filter> </receiver>

<meta-data android:name="com.google.android.gms.version" android:value="@integer/

google_play_services_version" /> <service android:name="com.fujitsu.imaps.push.gcm.GcmIntentService" />

</application>

...

- 111 -

Page 124: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

2. プッシュクライアント設定ファイルの作成

プッシュハンドラに渡すパラメータを、プッシュクライアント設定ファイル(push.properties)に設定します。プッシュクライアント設定ファイ

ルについては、付録D プッシュクライアント設定ファイルを参照してください。

3. プッシュクライアント設定ファイル設定、プッシュハンドラ初期化処理の作成

プッシュクライアント設定ファイル情報は、プッシュハンドラを利用する前に設定します。

以下はプッシュクライアント設定ファイルの設定例です。

// プッシュサーバとの接続先をプッシュクライアント設定ファイルに設定する

push.ServerAddress=https://example.com/push/

push.SelfCertificate = true

push.gcm.SenderID=1234567890 // SENDER_IDは、Googleの開発者向けのWebサイトで入手

以下はプッシュハンドラ初期化処理の例です。

// com.fujitsu.imaps.push.gcm.GcmRegisterによるプッシュハンドラの初期化

GcmRegister gcm = GcmRegister.getInstance(Activity.this);

gcm.register();

4.Google Play開発者サービスのインストール

GCMプッシュ通知を受信するためには、Google Play開発者サービス(4.4.52以降)が必要です。Google Play開発者サービスがインスト

ールされていない場合、プッシュハンドラ初期化処理が失敗し、GCMのプッシュ通知を受信できません。Google Play開発者サービス

はGoogle Playから入手できます。

注意

Google Play開発者サービスは、開発したアプリケーションを実行するAndroidへインストールする必要があります。

5.build.gradle ファイルの修正

・ プッシュクライアント設定ファイルを参照するために、defaultConfigのapplicationIdにパッケージ名を設定します。以下は、設定例で

す。

android {

・・・

defualtConfig {

applicationId 'com.sample.app'

}

}

注意

ビルドを行うGradle version によっては、上記設定が行われていない場合、プッシュクライアント設定ファイルの参照に失敗し、実行

時にエラーとなる場合があります。

ログ出力を行う場合、6.5.6 ログ出力のカスタマイズを参照してください。

認証の設定は、6.5.7 認証クラスの定義を参照してください。

拡張データを指定する場合は、6.5.8 拡張データの指定の指定を参照してください。

エラー通知受け取りを行う場合、6.5.10 GCMプッシュの処理結果受け取りを参照してください。

既読通知機能の利用を行う場合、6.5.13 既読通知機能の利用を参照してください。

- 112 -

Page 125: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

参考

GCMプッシュハンドラ初期化処理(GcmRegister.register)は、GCMとの通信とIMAPSサーバとの通信を伴います。そのため、開発中に

以下の環境でGCMプッシュの動作を確認したい場合、 開発中の動作確認用の定義であるpush.ServerConnectRetryCountおよび

push.ServerConnectRetryWaitを設定すると、クライアントアプリケーション開発時におけるRegistrationID登録が容易に確認できます。

・ IMAPSサーバがイントラネットに配置されており、イントラネット内WiFiで接続する環境

・ イントラネット内からGCMへのアクセスが(ファイアウォールなどで)遮断される環境

以下の方法で設定します。

<手順>

1. プッシュクライアント設定ファイルのpush.ServerConnectRetryCountおよびpush.ServerConnectRetryWaitに任意の値を指定しま

す。

2. Android端末のWiFiを無効にし、クライアントアプリケーションから、GCMプッシュハンドラ初期化処理(GcmRegister.register)を実

行します。

3. Android端末のWiFiを有効にします。

手順1の設定に従い、GCMから取得したregistrationIDがIMAPSサーバに登録されます。

注意

push.ServerConnectRetryCountおよびpush.ServerConnectRetryWaitは開発中の動作確認用として提供しています。運用向け環境で

は指定しないでください。

注意

build.gradleのcompileSdkVersionに23を指定して、プッシュ通知のAPIの以下のメソッドを使用する場合、

・ com.fujitsu.imaps.push.customize.PushExtAuth

- setRequestAuth メソッド

- saveResponseAuth メソッド

build.gradleに以下を追加してください。

android {

.....

useLibrary 'org.apache.http.legacy' //この行を追加

.....

}

useLibraryの追加をしないと、認証APIでコンパイルエラーが発生します。

6.5.4 APNsプッシュ通知を利用するネイティブアプリケーションの開発

APNsプッシュ通知を利用するネイティブアプリケーションを開発するための事前準備

APNsプッシュ通知を利用するネイティブアプリケーションを開発するための事前準備として以下を行います。

1. Mac OSXのキーチェーンサービス上でCSRを作成します。

2. iOS Develper Centerに、APNsを利用するアプリ情報を登録します。

3. APNsを利用するためのSSL証明書を発行します。

4. APNsを利用するためのプロビジョニングファイルを作成します。

- 113 -

Page 126: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

5. APNsを利用するために発行したSSL証明書をダウンロードし、Mac OSXのキーチェーンサービス上で作成したCSRの秘密鍵と

共にPKCS#12形式の証明書を作成します。

6. プロビジョニングファイルをXcodeに取り込み、iOSアプリをビルドします。

7. PKCS#12をプッシュサーバに登録します。

詳細は、iOS Develoepr Center内を参照してください。

APNsプッシュ通知を利用するネイティブアプリケーション向けのAPIはObjective-Cで提供します。

IMAPS向けのネイティブアプリケーションの開発環境を準備後、以下からzipファイルを取得し、Mac上で展開してください。

<DVD-ROMドライブ>\development\ios\push\FJPHandlerLib.1.0.zip

<DVD-ROMマウントディレクトリ>/development/ios/push/FJPHandlerLib.1.0.zip

APNsプッシュ通知を利用するネイティブアプリケーションの開発には、以下の作業が必要です。

・ プッシュクライアント設定ファイルの作成

・ プッシュクライアント設定ファイル設定、プッシュハンドラ初期化処理の作成

1. プッシュクライアント設定ファイルの作成

プッシュハンドラに渡すパラメータを、プッシュクライアント設定ファイル(push.plist)に設定します。プッシュクライアント設定ファイルにつ

いては、付録D プッシュクライアント設定ファイルを参照してください。

2. プッシュクライアント設定ファイル設定、プッシュハンドラ初期化処理の作成

プッシュクライアント設定ファイル情報は、プッシュハンドラを利用する前に設定します。

以下はプッシュハンドラ初期化処理の例です。

1. main.mのmain関数で、ネイティブ層で利用するUIApplicationクラスをプッシュハンドラのクラスに変更します。

return UIApplicationMain(argc, argv,NSStringFromClass([FJPApplication class]),

NSStringFromClass([XXXAppDelegate class]));

2. XXXAppDelegateクラスの親クラスをプッシュハンドラに変更します。

@interface XXXAppDelegate : FJPAppDelegate

...

3. XXXAppDelegateクラスの初回起動時(application:didFinishLaunchingWithOptions:)などで、APNsにリモート通知を要求します。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{

[super application:(UIApplication *)application

didFinishLaunchingWithOptions:(NSDictionary *)launchOptions];

// APNsにリモート通知を要求

UIUserNotificationSettings* notificationSettings =

[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound

| UIUserNotificationTypeAlert

| UIUserNotificationTypeBadge)

categories:nil];

[[UIApplication sharedApplication] registerUserNotificationSettings:notificationSettings];

[[UIApplication sharedApplication] registerForRemoteNotifications];

注) [UIAppliaction registerForRemoteNotificationType:]を呼び出すとAPNsに対してデバイストークンが要求され、IMAPSサーバ

にデバイストークンが登録されます。APNsから返されるデバイストークンが変更される可能性があるため、プッシュ機能の利用の

際は定期的に呼び出してください。

4. XXXViewControllerクラスの親クラスをプッシュ部品に変更します。

- 114 -

Page 127: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

//@interface XXXViewController : UIViewController

@interface XXXViewController : FJPViewController

UIViewController以外の画面で構成されているユーザーアプリケーションにおいても、フォアグラウンド時のAPNsプッシュ通知の

ダイアログ表示を可能にする場合は、以下のように変更します。

XXXViewController.h(ヘッダファイル側)】

// FJPViewControllerProtocolを実装します。

//@interface XXXViewController : UINavigationViewController

@interface XXXViewController : UINavigationViewController<FJPViewControllerProtocol>…

【XXXViewController.m(実装ファイル側】

//実装例(ダイアログを表示させる場合)

- (BOOL)isShowOnForeground

{

return YES;

}

isShowOnForeground関数を実装し、 前面時のプッシュ通知でダイアログを表示させる場合はYESを返します。

注) isShowOnForeground関数が実装されていない場合、また、FJPViewControllerProtocolが実装されていない場合は、 前面

時にプッシュ通知されてもダイアログは表示されません。

ログ出力を行う場合、6.5.6 ログ出力のカスタマイズを参照してください。

認証の設定は、6.5.7 認証クラスの定義を参照してください。

拡張データを指定する場合は、6.5.8 拡張データの指定の指定を参照してください。

エラー通知受け取りを行う場合、6.5.11 APNsプッシュの処理結果受け取りを参照してください。

既読通知機能の利用を行う場合、6.5.13 既読通知機能の利用を参照してください。

参考

APNsプッシュハンドラ初期化処理(FJPAppDelegate)では、APNsとの通信とIMAPSサーバとの通信を伴います。そのため、開発中に

以下の環境でAPNsプッシュの動作確認を行いたい場合、[モバイルデータ通信]と[WiFi]をONにしておくことで可能となります。

・ IMAPSサーバがイントラネットに配置されており、イントラネット内WiFiで接続する環境

・ さらに、イントラネット内からAPNsへのアクセスが(ファイアウォールなどで)遮断される環境

6.5.5 WNSプッシュ通知を利用するネイティブアプリケーションの開発

WNSを利用するネイティブアプリケーションを開発するための事前準備

WNSプッシュ通知を利用するネイティブアプリケーションを開発するための事前準備として以下を行います。

1. Windowsデベロッパーセンターの「ダッシュボード」で、アプリの作成をします。

2. 「サービス」>>「プッシュ通知」>>「Windows プッシュ通知サービス(WNS)と Microsoft Azure Mobile Services」セクション内の「Liveサービスサイト」で「パッケージSID」、「クライアントシークレット」、「アプリケーションID」を取得します。

3. Visual Studio の「プロジェクト」メニューの「ストア」>>「アプリケーションをストアと関連付ける」を行いアプリをビルドします。

4. 2.で取得したパッケージSIDとクライアントシークレットをIMAPSサーバに登録します

詳細は、Windowsデベロッパーセンター内を参照してください。

WNSを利用するネイティブアプリケーションの開発

WNSプッシュ通知を利用するネイティブアプリケーション向けのAPIはC#で提供します。

- 115 -

Page 128: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

IMAPS向けのネイティブアプリケーションの開発環境を準備後、以下のファイルをコピーしてください。

<DVD-ROMドライブ>\development\windows\push\Com.Fujitsu.Imaps.Push.winmd

<DVD-ROMマウントディレクトリ>/development/windows/push/Com.Fujitsu.Imaps.Push.winmd

このCom.Fujitsu.Imaps.Push.winmdファイルは、参照ライブラリとして設定してください。

6.5.7 認証クラスの定義や6.5.6 ログ出力のカスタマイズを行う場合は、同じディレクトリにあるImapsPushEx.dllファイルも参照ライブラリ

に追加してください。

WNSプッシュ通知を利用するネイティブアプリケーションの開発には、以下の作業が必要です。

・ マニフェストファイルの修正

・ プッシュクライアント設定ファイルの作成

・ プッシュクライアント設定ファイル設定、プッシュハンドラ初期化処理の作成

・ App.xamlファイルの修正

1. マニフェストファイルの修正

・ トースト通知機能を利用するため [アプリケーション]タブでトースト対応を[はい]に設定します。

Windows 8.1ストアアプリを開発する場合のみ、この設定を行ってください。

・ インターネット機能を利用するために、[機能]タブで[インターネット(クライアント)]を設定します。

・ バックグラウンドタスクでプッシュ通知を利用するために、[宣言]タブで使用可能な宣言として[バックグラウンドタスク]を追加し、プ

ロパティで[プッシュ通知]を選択、エントリポイントに[Com.Fujitsu.Imaps.Push.WNS.WNSBackgroundTask]を設定します。

・ トースト通知でアラーム機能を利用するために、「アラーム」を追加します。

ま た 、 ア ラ ー ム 機 能 を 利 用 し て よ い か を ユ ー ザ に 確 認 す る 必 要 が あ る た め 、 プ ッ シ ュ 受 信 を 行 う 前 に 、

AlarmApplicationManager.RequestAccessAsync()を実行し、ユーザに確認をするようにしてください。

Windows 8.1 ストアアプリを開発する場合

Package.appxmanifestを選択し、[表示] > [コード]からマニフェストファイルを開きます。

Extensionsタグの子要素として、以下を追加してください。

<m2:Extension Category=”windows.alarm" />

Windows 10 UWPアプリを開発する場合

[宣言]タブで使用可能な宣言として[アラーム]を追加してください。

・ トースト通知で着信機能を利用するために、「ロック画面」を追加します。

Windows 8.1 ストアアプリを開発する場合

Package.appxmanifestを選択し、[表示] > [コード]からマニフェストファイルを開きます。

Extensionsタグの子要素として、以下を追加してください。

<m2:Extension Category=”windows.lockScreenCall" />

Windows 10 UWPアプリを開発する場合

[宣言]タブで使用可能な宣言として[ロック画面]を追加してください。

2. プッシュクライアント設定ファイルの作成

プッシュハンドラに渡すパラメータを、プッシュクライアント設定ファイル(push.xml)に設定します。プッシュクライアント設定ファイルにつ

いては、付録D プッシュクライアント設定ファイルを参照してください。

3. プッシュクライアント設定ファイル設定、プッシュハンドラ初期化処理の作成

プッシュクライアント設定ファイル情報は、プッシュハンドラを利用する前に設定してください。

以下はプッシュクライアント設定ファイルの設定例です。

- 116 -

Page 129: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

// プッシュサーバとの接続先をプッシュクライアント設定ファイルに設定する

<push.ServerAddress>https://example.com/</push.ServerAddress>

<push.SelfCertificate>true</push.SelfCertificate>

以下はプッシュ通知を受信できる状態にする場合のプッシュハンドラ初期化処理例です。

namespace Sample

{

// プッシュ部品から通知を受け取るためのコールバッククラスの宣言

class MyReceiver : PushReceive

{

public void callback(int result, IDictionary<string, object> data)

{

// ここに通知されます

if(result == PushDefine.RESULT_REG_SERVER_WNS_SUCCESS) { // 初期化完了

}

}

}

public void executeSample()

{

// プッシュハンドラの初期化

WNSRegister register = WNSRegister.getInstance(new WNSPushReceiver(this));

register.init();

}

}

ログ出力を行う場合、6.5.6 ログ出力のカスタマイズを参照してください。

認証の設定は、6.5.7 認証クラスの定義を参照してください。

拡張データを指定する場合は、6.5.8 拡張データの指定の指定を参照してください。

エラー通知受け取りを行う場合、6.5.12 WNSプッシュの処理結果受け取りを参照してください。

既読通知機能の利用を行う場合、6.5.13 既読通知機能の利用を参照してください。

4. App.xamlファイルの修正

ネイティブアプリケーションでトースト通知からのアクション機能を使用する場合は、App.xaml内のOnLaunchedメソッドからWNSToastActionクラスのactionメソッドを呼び出す必要があります。

以下は実装例です。

例:App.xaml.cs

protected override void OnLaunched(LaunchActivatedEventArgs e)

{

・・・

WNSToastAction.action(e.Arguments, e.Kind);

}

6.5.6 ログ出力のカスタマイズ

プッシュ通知機能のログは、デフォルトでは標準出力にログを出力しています。

そのため、アプリケーション開発時にはプラットフォーム固有の開発環境で参照できますが、運用環境では障害時調査のためにログを

ファイルに記録しておく事を推奨します。

ログ出力APIを使用することで、ログファイルが永続化されるだけでなく、ログ送信の対象となりサーバ側で収集できます。

出力されたログファイルを送信する場合は、 Android版は3.3.5.2 ログ出力とサーバへの送信、 iOS版は3.4.6.2 ログ出力とサーバへの

送信、 Windows版は3.5.5.2 ログ出力とサーバへの送信、 ハイブリッドアプリケーションは2.3.28.4.1 ログ出力とサーバへの送信 のsendメソッドを参照してください。

IMAPSではログをファイル出力するクラスを提供しています。

- 117 -

Page 130: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

プッシュのログをIMAPSが提供しているクラスに変更するための手順を以下に示します。本節に記述されている事項は、ネイティブア

プリケーションおよびハイブリッドアプリケーションの両方に適用可能です。ログクラスの定義が未設定の場合や、誤ったログクラスを設

定するなどの定義値誤りの場合は、ログは標準出力に出力されます。

Android

以下のように、プッシュクライアント設定ファイルにログクラスを設定します。

// ログクラスを設定

push.LogClassName=com.fujitsu.imaps.plugin.push.PushLogImpl

iOS

以下のように、グローバル変数"fjpLogger"にFJPExLoggerImplクラスのインスタンスを設定します。

#import <IMAPSPush/FJPExLoggerImpl.h>

// ログ拡張クラスのインスタンスをグローバル変数に設定

// ※プッシュ部品クラスからも参照するため下記変数名で設定すること

id<FJPLogger> fjpLogger;

@implementation AppDelegate

@synthesize window;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

// 親クラスの同名関数の実行

[super application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions];

// (省略)

// 親クラスの同名関数の実行後、グローバル変数に代入

fjpLogger = [[FJPExLoggerImpl alloc] init];

return YES;

}

Windows

以下のように、プッシュクライアント設定ファイルに拡張したログクラスを設定します。

// 拡張したログクラスの名前空間を設定

<push.LogClassNameSpace>ImapsPushEx</push.LogClassNameSpace>

// 拡張したログクラスを設定

<push.LogClassName>Com.Fujitsu.Imaps.PushEx.PushLogImpl</push.LogClassName>

注意

・ ハイブリッドアプリでのログ出力クラスの指定方法について

ハイブリッドアプリのJSプロジェクトでは、DLLの参照ができないためDLL参照用の「クラスライブラリ」プロジェクトを作成し、JSプ

ロジェクトから参照させるよう設定してください。

・ バックグラウンドタスク実行時のログ出力について

バックグラウンド実行を許可しておりアプリケーションが起動していない場合、プッシュ受信制御はバックグラウンドタスクにて行

われます。

バックグラウンドタスクの実行は、アプリケーションが起動していない状態で実行されます。そのためバックグラウンドタスク実行

中に発生したエラーはプッシュ部品側のログ出力クラスまたは、アプリケーション側で拡張したログ出力クラスからアプリケーシ

ョンに返却できません。

そのためバックグラウンドタスク実行時に発生したエラー内容の確認が必要な場合は、プッシュクライアント設定ファイルにログ

出力用のファイル名を指定してください。

プッシュクライアント設定ファイルについては、付録D プッシュクライアント設定ファイルを参照してください。

- 118 -

Page 131: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

例:<Push.BackGroundTaskErrorLogFileName>Error.log</Push.BackGroundTaskErrorLogFileName>

プッシュクライアント設定ファイルにログ出力用のファイル名が指定されている場合は、指定されたファイル名でログ出力用ファ

イルを作成し以下のフォルダに格納します。

「C:\Users\{ユーザ名}\AppData\Local\Packages\{パッケージファミリ名}\LocalState」

初期設定ファイルにログ出力用のファイル名が指定されていない場合は、ログ出力用ファイルは出力されません。

プッシュのログは、以下のように出力されます。

1. Androidの場合: プッシュログ

2. iOSの場合: プラグインログ

3. Windowsの場合: プラグインログ

詳細は"運用ガイド"の"IMAPSクライアントアプリケーションのログによる保守"を参照してください。

6.5.7 認証クラスの定義

プッシュ通知を利用するハイブリッドアプリケーション/ネイティブアプリケーションは、登録IDをIMAPSサーバに 登録するためにIMAPS認証が必要です。その認証状態を渡すために認証クラスの 定義が必要です。認証クラスの定義が未設定の場合や、誤ったクラスを設

定するなどの定義値誤りの場合は 認証エラーになります。

認証クラスの定義では、以下の作業を行います。

1. 利用する認証方式にあわせた認証情報の設定

2. 認証クラスの組み込み

1.利用する認証方式にあわせた認証情報の設定

利用する認証方式にあわせて、以下のどちらかの認証情報を設定します。

[Android][iOS][Windows]のハイブリッドアプリケーションおよびネイティブアプリケーション開発において、プッシュハンドラの初期化を

行う前に、認証情報の設定します。

(1)オンライン認証(loginOnlineによる認証設定)

プッシュハンドラの初期化を行う前に、アプリケーションからオンライン認証の認証情報を設定します。

なお、オンライン認証の方法は、 Android版は3.3.3.2 ログイン、 iOS版は3.4.4.2 ログイン、 Windows版は3.5.3.2 ログイン、 ハイブリ

ッドアプリケーションは2.3.28.2.1 ログイン のオンライン認証の説明を参照してください。

(2)管理情報認証(setManageInfoによる認証設定)

あらかじめIMAPSサーバの管理コマンドでアプリケーション管理者を作成します。

プッシュハンドラの初期化を行う前に、アプリケーションから管理情報の認証情報を設定します。

なお、管理情報認証の方法については、 Android版は3.3.3.5 管理情報の設定、 iOS版は3.4.4.5 管理情報の設定、 Windows版は3.5.3.5 管理情報の設定、 ハイブリッドアプリケーションは2.3.28.2.5 管理情報による認証 の説明を参照してください。

2.認証クラスの組み込み

Android

以下のように、プッシュクライアント設定ファイルに認証クラスを設定します。

// 認証クラスを設定

push.AuthClassName=com.fujitsu.imaps.plugin.push.PushExtAuthImpl

iOS

以下のように、グローバル変数"fjpExAuth"にFJPExAuthImplクラスのインスタンスを設定します。

#import <IMAPSPush/FJPExAuthImpl.h>

// 認証拡張クラスのインスタンスをグローバル変数に設定

- 119 -

Page 132: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

// ※プッシュ部品クラスからも参照するため下記変数名で設定すること

id<FJPExAuth> fjpExAuth;

@implementation AppDelegate

@synthesize window;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

// 親クラスの同名関数の実行

[super application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions];

// (省略)

// 親クラスの同名関数の実行後、グローバル変数に代入

fjpExAuth = [[FJPExAuthImpl alloc] init];

return YES;

}

Windows

管理情報認証を行う場合、以下のように、プッシュクライアント設定ファイルに認証クラスを設定します (オンライン認証を用いる場

合は、認証クラスの設定は不要です)。

// 認証クラスの名前空間を設定

lt;push.AuthClassNameSpace>ImapsPushEx</push.AuthClassNameSpace>

// 認証クラスを設定

<push.AuthClassName>Com.Fujitsu.Imaps.PushEx.PushExtAuthImpl</push.AuthClassName>

注意

・ ハイブリッドアプリでの認証クラスの指定方法について

ハイブリッドアプリのJSプロジェクトでは、DLLの参照ができないためDLL参照用の「クラスライブラリ」プロジェクトを作成し、JSプ

ロジェクトから参照させるよう設定してください。

6.5.8 拡張データの指定

端末に結びついた登録IDの拡張データを更新します。プッシュクライアント設定ファイル(push.properties)にあらかじめ設定した値より

も、本処理で設定した値が優先されます。

Android - IMAPSプッシュ

PushManager.init()を呼び出す前に、PushPropertiesインスタンスに拡張データを設定します。

PushManager pm = new PushManager(context);

...

Properties props = PushProperties.getInstance(this);props.setProperty(PushDefine. KEY_EXTENSION_DATA, "xxxx");

try {pm.init(); // init()実行時にIMAPSサーバと通信を行なうので、

} catch (PushException e) { //拡張データを変更する場合もinit()を呼び出す必要があります。

e.printStackTrace();

}

Android - GCM

GcmRegister.register()/register(String)を呼び出す前に、PushPropertiesインスタンスに拡張データを設定してください。

GcmRegister gcm = GcmRegister gcm = GcmRegister.getInstance(this);

...

Properties props = PushProperties.getInstance(this);props.setProperty(PushDefine. KEY_EXTENSION_DATA,

"xxxx");gcm.register(); // regist()実行時にIMAPSサーバと通信を行なうので、//拡張データを変更する場合もregist()を呼

- 120 -

Page 133: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

び出す必要があります。

...

iOS - APNs

APNsを利用開始する際に呼び出す[UIApplication registerForRemoteNotification:]を実行する前に、プッシュ部品のFJPApplicationクラスのプロパティextDataに拡張データを設定してください。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{

...

if( [application isKindOfClass:[FJPApplication class]] ) { [((FJPApplication*)application)

setExtData:@"xxxx"]; }

// 本関数を実行後にプッシュ部品のFJPAppDelegateクラス内でIMAPSサーバと通信を行なうので、 // 拡張データを更

新する場合も再度呼び出す必要がある [[UIApplication sharedApplication] registerForRemoteNotificationTypes:

(UIRemoteNotificationTypeBadge |

UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];

...

Windows - WNS

WNSRegister.init()を呼び出す前に、PushPropertiesクラスのsetPropertyで拡張データを設定します。

WNSRegister wnsr = new WNSRegister.getInstance();

...

PushProperties.setProperty(PushDefine. KEY_EXTENSION_DATA, "xxxx");

wnsr.init(); // init()実行時にIMAPSサーバと通信を行なうので、

//拡張データを変更する場合もinit()を呼び出す必要があります。

ハイブリッド

アプリケーションで固定の値を持つ場合は、プッシュクライアント設定ファイルのpush.ExtensionDataに値を記述しておき、

FJPHandler.initを呼んでください。

var nullopt = {};

FJPHandler.init("FJ",

nullopt,

function(result) {

// プッシュを受信可能な状態になった後の処理

},

function(result) {

// エラー発生時のコールバック

}

);

動的に値を変更したい場合は、FJPHandler.initの引数optionsに、拡張データをJSON形式で指定してください。

var jsonText = '{"ext_data":"Extension String"}';

FJPHandler.init("FJ",JSON.parse(jsonText ),

function(result) {

// プッシュを受信可能な状態になった後の処理

},

function(result) {

// エラー発生時のコールバック

}

);

6.5.9 IMAPSプッシュの処理結果受け取り

クライアントでのプッシュハンドラ初期化処理で、処理結果を受け取るクラスを実装することで、メッセージおよびエラー通知を受信でき

ます。

PushReceiverの派生クラスを実装し、Pushのクラス生成時に指定します。メッセージ受信時、エラー発生時はcallbackメソッドが呼び出

されます。

- 121 -

Page 134: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

なお、メッセージ受信が可能なのは、クライアントアプリケーションが動作中(フォアグラウンド、または、バックグラウンド)状態の場合で

す。

IMAPS プッシュの場合の例を以下に示します。

// Pushのエラー通知クラス

public class pReceiver extends PushReceiver{

@Override

public void callback(int result, Bundle data) {

// ここに通知されます

}

}

// Pushの初期化

pReceiver prec = new pReceiver();

PushManager pm = new PushManager(context, prec);

pm.bind(PushService.class);

通知される内容は以下のとおりです。

表6.4 通信情報

状態 result Bundle

キー名:

ERROR_BUNDLE_CODE_KEY

キー名:

ERROR_BUNDLE_DATA_KEY

自分でBrokerを切断 RESULT_CONNECT_FAIL ERROR_CODE_NOMAL null

Brokerネットワーク利用不可 RESULT_CONNECT_FAIL ERROR_CODE_NETWORK_NOT_AVAILABLE

ConnectException

Broker接続不可(タイムアウト) RESULT_CONNECT_FAIL ERROR_CODE_SOCKET_TIMEOUT

SocketTimeoutException

Brokerアクセス権限なし(内部

エラー)RESULT_CONNECT_FAIL ERROR_CODE_NOACCESS

_AUTHORITYnull

SSL認証エラー RESULT_CONNECT_FAIL ERROR_CODE_SSL_HANDSHAKE_FAILED

SSLHandshakeException

Broker停止 RESULT_CONNECT_FAIL ERROR_CODE_BROKER_SEVERANCE

EOFException

ネットワーク切断 RESULT_CONNECT_FAIL ERROR_CODE_NETWORK_LOST

SocketException

原因不明のエラー RESULT_CONNECT_FAIL ERROR_CODE_UNKNOWN 上記以外の例外の場合

Broker接続成功 RESULT_CONNECTED - -

ID払出し成功 RESULT_REG_SERVER_SUCCESS

- -

ID払出しサーバとの接続失敗 RESULT_REG_SERVER_CONNECT_FAIL

- -

ID払出し失敗 RESULT_REG_SERVER_FAIL

- -

プッシュサービスとのbindに成

功した

RESULT_BIND_SERVICE_SUCCESS

- -

プッシュサービスとのunbindに

成功した

RESULT_UNBIND_SERVICE_SUCCESS

- -

各定義値はPushDefineクラスに定義

- 122 -

Page 135: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

表6.5 メッセージ受信

状態 result Bundle

キー名:MESSEAGE_BUNDLE_PAYLOAD_KEY

IMAPSプッシュメッセージ受信 RESULT_RECEIVE_MESSAGE

byte[ ] ペイロード

各定義値はPushDefineクラスに定義

表6.6 既読通知情報

状態 result Bundle

キー名:

ERROR_BUNDLE_CODE_KEY

キー名:

ERROR_BUNDLE_DATA_KEY

IMAPSサーバへの既読通知

成功

RESULT_NOTIFY_MESSAGEREAD_SUCCES

- -

IMAPSサーバへの既読通知

失敗

RESULT_NOTIFY_MESSAGEREAD_FAIL

BUNDLE_STATUSCODE_KEY

ステータスコード

IMAPSサーバへの接続失敗 RESULT_SERVER_CONNECT_FAIL

- -

各定義値はPushDefineクラスに定義

6.5.10 GCMプッシュの処理結果受け取り

クライアントでのプッシュハンドラ初期化処理で、処理結果を受け取るクラスを実装すると、メッセージおよびエラー通知を受信できま

す。

PushReceiverの派生クラスを実装し、Pushのクラス生成時に指定します。メッセージ受信時、エラー発生時はcallbackメソッドが呼ばれ

ます。

なお、クライアントアプリケーションが動作中(フォアグラウンド、またはバックグラウンド)の場合に、メッセージを受信できます。

GCMプッシュの場合の例を以下に示します。

....

// Pushのエラー通知クラス

public class pReceiver extends PushReceiver{

@Override

public void callback(int result, Bundle data) {

// ここに通知されます

}

}

//GCMにregistraionIDを要求

pReceiver prec = new pReceiver();

GcmRegister gcm = GcmRegister.getInstance(this, prec);

gcm.regist(SENDER_ID); // SENDER_IDは、Googleの開発者向けのWebサイトでGCM向けのものを入手;

PushReceiver :: callback(int result, Bundle data)に通知される内容は以下のとおりです。

表6.7 通信情報

状態 result Bundle

ID登録 RESULT_REG_SERVER_GCM_SUCCESS

- -

ID登録サーバとの接続失敗 RESULT_REG_SERVER_GCM_CONNECT_FAIL

- -

ID登録失敗 RESULT_REG_SERVER_GCM_FAIL

- -

- 123 -

Page 136: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

各定義値はPushDefineクラスに定義

表6.8 メッセージ受信

状態 result Bundle

キー名:

MESSAGE_BUNDLE_GCM_MESSAGETYPE_KEY

キー名:

MESSEAGE_BUNDLE_PAYLOAD_KEY

GCMメッセージ受信 RESULT_RECEIVE_GCM_MESSAGE

GoogleCloudMessaging.MESSAGE_TYPE_DELETED (注)

Bundle ペイロード

GoogleCloudMessaging.MESSAGE_TYPE_MESSAGE(注)

GoogleCloudMessaging.MESSAGE_TYPE_SEND_ERROR (注)

各定義値はPushDefineクラスに定義

注) 以下の文字列が通知されます。

com.google.android.gms.gcm.GoogleCloudMessaging

public static final String MESSAGE_TYPE_DELETED Constant Value: "deleted_messages"

public static final String MESSAGE_TYPE_MESSAGE Constant Value: "gcm"

public static final String MESSAGE_TYPE_SEND_ERROR Constant Value: "send_error"

表6.9 既読通知情報

状態 result Bundle

キー名:

ERROR_BUNDLE_CODE_KEY

キー名:

ERROR_BUNDLE_DATA_KEY

IMAPSサーバへの既読通知

成功

RESULT_NOTIFY_MESSAGEREAD_SUCCES

- -

IMAPSサーバへの既読通知

失敗

RESULT_NOTIFY_MESSAGEREAD_FAIL

BUNDLE_STATUSCODE_KEY

ステータスコード

IMAPSサーバへの接続失敗 RESULT_SERVER_CONNECT_FAIL

- -

各定義値はPushDefineクラスに定義

6.5.11 APNsプッシュの処理結果受け取り

クライアントでのプッシュハンドラ初期化処理で、処理結果を受け取るクラスを実装すると、メッセージおよびエラー通知を受信できま

す。

FJPAppDelegateの派生クラスを実装してください。エラー発生時は次のメソッドが呼び出されます。

表6.10 デバイス取得情報・メッセージ受信

状態 関数 備考

メッセージ通知

(アプリ終了時に通知を受けた場合)didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

メッセージ通知

(アプリ起動時に通知を受けた場合)didReceiveRemoteNotification:(NSDictionary*)userInfo

デバイストークン成功 didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken

- 124 -

Page 137: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

状態 関数 備考

デバイストークン失敗 didFailToRegisterForRemoteNotificationsWithError:(NSError *)error

通信エラーの場合もこちらに通知

FJPNotifyDelegateの派生クラスを実装してください。エラー発生時は次のメソッドが呼び出されます。

表6.11 既読通知情報

状態 関数 domain code userInfo

メッセージIDか登録

IDがnilまたは空白の

場合

didNotifyMessageRead:(NSError *) error

NotifyMessageReadErrorDomain

NotifyMessageReadParamError

nil

サーバからのレスポン

スが200(成功)以外だ

った場合

didNotifyMessageRead:(NSError *) error

NotifyMessageReadErrorDomain

NotifyMessageReadResponseError

ステータス

コード

その他のエラー(レス

ポンスが得られなかっ

た場合など)

didNotifyMessageRead:(NSError *) error

NotifyMessageReadErrorDomain

NotifyMessageReadConnectError

nil

6.5.12 WNSプッシュの処理結果受け取り

クライアントでのプッシュハンドラ初期化処理で、処理結果を受け取るクラスを実装することで、メッセージおよびエラー通知を受信でき

ます。

PushReceiverの派生クラスを実装し、Pushのクラス生成時に指定します。メッセージ受信時、エラー発生時はcallbackメソッドが呼び出

されます。

なお、メッセージ受信が可能なのは、クライアントアプリケーションが動作中(フォアグラウンド、または、バックグラウンド)状態の場合で

す。

WNS の場合の例を以下に示します。

// Pushのエラー通知クラス

public class PushReceiverImpl : PushReceiver{

public void callback(int result, IDictionary<string, object> data) {

// ここに通知されます

}

}

// Pushの初期化

PushReceiverImpl receiver = new PushReceiverImpl();

WNSRegister wnsr = WNSRegister.getInstance(receiver);

wnsr.init();

通知される内容は以下のとおりです。

表6.12 WNSサーバとの通信状況

状態 result data

key value

チャネルURI取得失敗 RESULT_REG_SERVER_WNS_FAIL

- -

各定義値はPushDefineクラスに定義

- 125 -

Page 138: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

表6.13 IMAPSサーバとの通信・登録状況

状態 result data

key value

登録成功 RESULT_REG_SERVER_WNS_SUCCESS

- -

登録失敗 RESULT_REG_SERVER_WNS_FAIL

- -

接続失敗(サーバへの接続に

失敗)RESULT_REG_SERVER_WNS_CONNECT_FAIL

EARROR_DICTIONARY_CODE_KEY

ERROR_CODE_CONNECT_FAIL

EARROR_DICTIONARY_DATA_KEY

Exception

接続失敗(SSL通信に失敗(証明書無効))

RESULT_REG_SERVER_WNS_CONNECT_FAIL

EARROR_DICTIONARY_CODE_KEY

ERROR_CODE_SSL_CERTIFICATE_INVALID

EARROR_DICTIONARY_DATA_KEY

Exception

接続失敗(SSL通信に失敗(証明書有効期限切れ))

RESULT_REG_SERVER_WNS_CONNECT_FAIL

EARROR_DICTIONARY_CODE_KEY

ERROR_CODE_SSL_CERTIFICATE_EXPIRED

EARROR_DICTIONARY_DATA_KEY

Exception

接続失敗(原因不明のエラー) RESULT_REG_SERVER_WNS_CONNECT_FAIL

EARROR_DICTIONARY_CODE_KEY

ERROR_CODE_UNKNOWN

EARROR_DICTIONARY_DATA_KEY

Exception

各定義値はPushDefineクラスに定義

表6.14 メッセージ受信

状態 result data

key value

WNSメッセージ受信 RESULT_RECEIVE_WNS_MESSAGE

RESULT_RECEIVE_WNS_MESSAGE

ペイロードデータ

各定義値はPushDefineクラスに定義

表6.15 既読通知情報

状態 result data

key value

IMAPSサーバへの既読通知

成功

RESULT_NOTIFY_MESSAGEREAD_SUCCESS

- -

IMAPSサーバへの既読通知

失敗

RESULT_NOTIFY_MESSAGEREAD_FAIL

DICTIONARY_STATUSCODE_KEY

ステータスコード

IMAPSサーバへの接続失敗 RESULT_SERVER_CONNECT_FAIL

- -

各定義値はPushDefineクラスに定義

6.5.13 既読通知機能の利用

クライアント側で既読通知APIを利用することにより、受信したメッセージが確認されたことをIMAPSサーバへ通知することができます。

既読通知機能を利用するには定義ファイル(impush.properties)のfj_push_read_modeの設定が必要です。詳細は"運用ガイド"を参照

してください。

- 126 -

Page 139: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

既読通知は、通知メッセージ情報に含まれるメッセージIDを取得し、既読通知APIを使用します。メッセージIDの取得タイミングは以下

となります。

・ Android

・通知バーのメッセージタップ後に自アプリが起動し、発行されたインテントからメッセージIDを取得

 通知バーのメッセージタップに連動して、自アプリを起動するには、

 6.3 受信したメッセージからのアクションの自アプリケーション起動を参照してください。

・アプリ側でPushReceiverを実装していた場合、ペイロード情報からメッセージIDを取得

・ iOS

・通知センターのメッセージタップ後にアプリが起動し、渡されたペイロードからメッセージIDを取得

・FJPAppDelegateクラスを継承したサブクラスのdidReceiveRemoteNotification関数内でペイロード情報からメッセージIDを取得

・ Windows

・トースト通知をタップした後にアプリが起動し、渡される情報からメッセージIDを取得

Androidで既読通知機能を利用する場合は、プッシュクライアント設定ファイルのpush.NotificationMainClassNameに通知バータップ後

に起動するActivityを設定してください。プッシュクライアント設定ファイルについては、付録D プッシュクライアント設定ファイルを参照

してください。

注意

push.NotificationMainClassNameが省略、または存在しないクラスを指定していた場合は、アプリが起動しないためインテントを取得で

きません。

以下、既読API実装例です。

IMAPSプッシュ通知

IMAPSプッシュ通知での既読通知APIの実装例としては以下の二つのパターンがあります。

・ アプリ未起動時/起動時にメッセージ受信し、通知バーをタップしてアプリを起動した場合

//アプリのMainActivity.java内(push.propertiesのpush.NotificationMainClassNameに設定)

//通知バーをタップし、アプリを起動した際の処理

protected void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  Intent intent = getIntent();

  //インテントにmsgIDが設定されている場合

  if(intent != null && intent.getExtras() != null) {

      //インテントからメッセージIDを取得

String msgID = intent.getStringExtra(PushDefine.EXTRA_MESSAGE_ID);

      PushManager pm = new PushManager(getApplicationContext());

try {

      ArrayList<String> f_msgID = pm.getFailedMsgIDList();

       //アプリ領域にメッセージIDが保存されている場合

       if(f_msgID != null){

     //保存されているメッセージID分の既読通知を実行

       for(int i = 0; i < f_msgID.size(); i++) {

String id = f_msgID.get(i);

           pm.notifyMessageRead(id);

         }

       }

       //タップしたメッセージの既読通知を実行

       pm.notifyMessageRead(msgID);

} catch(PushException e) {

//例外時の処理

}

} else {

//インテントが取得できなかった場合の処理

- 127 -

Page 140: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

}

}

//通知バータップで起動するActivityのlaunchModeが

//"singleTop"、"singleTask"、"singleInstance"の場合

protected void onNewIntent(Intent intent) {

  super.onNewIntent(intent);

  //インテントにmsgIDが設定されている場合

  if(intent != null && intent.getExtras() != null) {

      //インテントからメッセージIDを取得

String msgID = intent.getStringExtra(PushDefine.EXTRA_MESSAGE_ID);

      PushManager pm = new PushManager(getApplicationContext());

try {

      ArrayList<String> f_msgID = pm.getFailedMsgIDList();

       //アプリ領域にメッセージIDが保存されている場合

       if(f_msgID != null) {

     //保存されているメッセージID分の既読通知を実行

       for(int i = 0; i < f_msgID.size(); i++) {

String id = f_msgID.get(i);

           pm.notifyMessageRead(id);

         }

       }

       //タップしたメッセージの既読通知を実行

       pm.notifyMessageRead(msgID);

} catch(PushException e) {

//例外時の処理

}

} else {

//インテントが取得できなかった場合の処理

}

}

・ アプリが起動中にメッセージを受信し、アプリ側でPushReceiverを実装していた場合

private class MyReceiver extends PushReceiver{

@Override

public void callback(int arg0, Bundle arg1) {

      //IMAPSプッシュのメッセージを受信した場合

if(arg0 == com.fujitsu.fjh.push.common.PushDefine.RESULT_RECEIVE_MESSAGE) {

byte[] payloadData =

arg1.getByteArray(com.fujitsu.fjh.push.common.PushDefine.MESSEAGE_BUNDLE_PAYLOAD_KEY);

String payload = new String(payloadData);

        //ペイロード情報をJSONObjectへ変換

        JSONObject payloadObject = new JSONObject(payload);

//ペイロード情報からmsgIDを取得

String msgid = payloadObject.getString("mid")

        //受信時の処理を実装  

        //   ・・・

//メッセージを確認したタイミング(任意)で既読通知を実行

        PushManager pm = PushManager.getInstance();

try {

ArrayList<String> f_msgID = pm.getFailedMsgIDList();

       //アプリ領域にメッセージIDが保存されている場合

       if(f_msgID != null) {

     //保存されているメッセージID分の既読通知を実行

       for(int i = 0; i < f_msgID.size(); i++) {

String id = f_msgID.get(i);

           pm.notifyMessageRead(id);

         }

       }

         //受信したメッセージの既読通知を実行

         pm.notifyMessageRead(msgid);

       } catch(PushException e) {

- 128 -

Page 141: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

//例外時の処理

}

    }

}

GCMプッシュ通知

GCMプッシュ通知での既読通知APIの実装例としては以下の二つのパターンがあります。

・ アプリ未起動時/起動時にメッセージ受信し、通知バーをタップしてアプリを起動した場合

//アプリのMainActivity.java内(push.propertiesのpush.NotificationMainClassNameに設定)

//通知バーをタップし、アプリを起動した際の処理

protected void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  Intent intent = getIntent();

  //インテントにmsgIDが設定されている場合

  if(intent != null && intent.getExtras() != null) {

      //インテントからメッセージIDを取得

String msgID = intent.getStringExtra(PushDefine.EXTRA_MESSAGE_ID);

      GcmRegister gr = GcmRegister.getInstance(getApplicationContext());

try {

      ArrayList<String> f_msgID = gr.getFailedMsgIDList();

       //アプリ領域にメッセージIDが保存されている場合

       if(f_msgID != null) {

     //保存されているメッセージID分の既読通知を実行

       for(int i = 0; i < f_msgID.size(); i++) {

String id = f_msgID.get(i);

           gr.notifyMessageRead(id);

         }

       }

       //タップしたメッセージの既読通知を実行

       gr.notifyMessageRead(msgID);

} catch(PushException e) {

//例外時の処理

}

} else {

//インテントが取得できなかった場合の処理

}

}

//通知バータップで起動するActivityのlaunchModeが

//"singleTop"、"singleTask"、"singleInstance"の場合

protected void onNewIntent(Intent intent) {

  super.onNewIntent(intent);

  //インテントにmsgIDが設定されている場合

  if(intent != null && intent.getExtras() != null) {

      //インテントからメッセージIDを取得

String msgID = intent.getStringExtra(PushDefine.EXTRA_MESSAGE_ID);

      GcmRegister gr = GcmRegister.getInstance(getApplicationContext());

try {

      ArrayList<String> f_msgID = gr.getFailedMsgIDList();

       //アプリ領域にメッセージIDが保存されている場合

       if(f_msgID != null) {

     //保存されているメッセージID分の既読通知を実行

       for(int i = 0; i < f_msgID.size(); i++) {

String id = f_msgID.get(i);

           gr.notifyMessageRead(id);

         }

       }

       //タップしたメッセージの既読通知を実行

       gr.notifyMessageRead(msgID);

} catch(PushException e) {

//例外時の処理

- 129 -

Page 142: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

}

} else {

//インテントが取得できなかった場合の処理

}

}

・ アプリが起動中にメッセージを受信し、アプリ側でPushReceiverを実装していた場合

private class MyReceiver extends PushReceiver {

@Override

public void callback(int arg0, Bundle arg1) {

      //GCMプッシュのメッセージを受信した場合

if(arg0 == com.fujitsu.fjh.push.common.PushDefine.RESULT_RECEIVE_GCM_MESSAGE) {

Bundle payloadData = arg1.getBundle

(com.fujitsu.fjh.push.common.PushDefine.MESSEAGE_BUNDLE_PAYLOAD_KEY);

String msgID = payloadData.getString("mid")

//受信時の処理を実装

        //   ・・・

        //メッセージを確認したタイミング(任意)で既読通知を実行

        GcmRegister gr = GcmRegister.getInstance(getApplicationContext());

        try {

ArrayList<String> f_msgID = gr.getFailedMsgIDList();

       //アプリ領域にメッセージIDが保存されている場合

       if(f_msgID != null) {

     //保存されているメッセージID分の既読通知を実行

       for(int i = 0; i < f_msgID.size(); i++) {

String id = f_msgID.get(i);

           gr.notifyMessageRead(id);

         }

       }

         //受信したメッセージの既読通知を実行

         gr.notifyMessageRead(msgid);

       } catch(PushException e) {

//例外時の処理

}

    }

}

APNsプッシュ通知

APNsプッシュ通知での既読通知APIの実装例としては以下の二つのパターンがあります。

・ アプリ未起動時にメッセージ受信し、通知センターをタップしてアプリを起動した場合

AppDelegateクラス内

//通知センターのメッセージをタップし、アプリを起動した際の処理

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{

   NSDictionary *userInfo = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];

if(userInfo != nil)

{

FJPPayloadInfo* payInfo = [[FJPPayloadInfo alloc]initWithPayload:userInfo];

//アクションを指定した通知の場合は、親クラスの関数を実行する前に既読通知を行う

if(payInfo != nil && payInfo.msgID != nil)

{

//既読通知を実行

     NSArray* f_msgid = [FJPMessageReadManager getFailedMsgIDList];

     //アプリ領域にメッセージIDが保存されている場合

if(f_msgid != nil)

    {

        //保存されているメッセージID分の既読通知を実行

       for(NSString* id in f_msgid)

       {

       [FJPMessageReadManager notifyMessageRead:id delegate:self];

       }

- 130 -

Page 143: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

     }

     //タップしたメッセージの既読通知を実行

[FJPMessageReadManager notifyMessageRead:payInfo.msgID delegate:self];

}

}

[super application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions];

//アクション指定がない通知は親クラスの関数実行後でも既読通知を行える

//既読通知を実行

//・・・

return YES;

}

・ アプリ起動中にメッセージ受信した場合

アプリ起動中にメッセージを受信した場合、FJPAppDelegateクラスを継承したサブクラスのdidReceiveRemoteNotification関数

内でペイロード情報からメッセージIDを取得し、既読通知APIを実行します。 また、メッセージIDは、ペイロード情報を

FJPPayloadInfoオブジェクトに変換して取得します。

AppDelegateクラス内

//アプリ起動中にプッシュ通知を受信した場合

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo

{

if (userInfo != nil)

{

// ペイロード情報をFJPPayloadInfoオブジェクトに初期化

FJPPayloadInfo* payInfo = [[FJPPayloadInfo alloc]initWithPayload:userInfo];

//payload情報にmsgIDが格納されている場合

if(payInfo != nil && payInfo.msgID != nil)

{

      //受信時の処理を実装

// ・・・

     //メッセージを確認したタイミング(任意)で既読通知を実行

      NSArray* f_msgid = [FJPMessageReadManager getFailedMsgIDList];

      //アプリ領域にメッセージIDが保存されている場合

if(f_msgid != nil)

      {

        //保存されているメッセージID分の既読通知を実行

        for(NSString* id in f_msgid)

        {

          [FJPMessageReadManager notifyMessageRead:id delegate:self];

        }

      }

      //受信したメッセージの既読通知を実行

[FJPMessageReadManager notifyMessageRead:payInfo.msgID delegate:self];

}

}

}

また、既読通知APIの通知結果を受け取る場合は、FJPNotifyDelegateプロトコルのdidNotifyMessageRead関数をアプリ側で実

装します。以下は実装例です。

AppDelegateクラス内

@interface AppDelegate : FJPAppDelegate <FJPNotifyDelegate>

- (void)didNotifyMessageRead:(NSError*) error

@end

#pragma mark FJPNotifyDelegate implementation

- (void)didNotifyMessageRead:(NSError*) error

{

    if(error == nil)

    {

        //通知成功の場合の処理

    }

    else

- 131 -

Page 144: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

{

        //通知失敗の場合の処理

}

}

WNSプッシュ通知

WNSプッシュ通知での既読通知APIの実装例としては以下のパターンがあります。

・ アプリ未起動時/起動時にメッセージ受信し、トースト通知をタップしてアプリを起動した場合

protected override void OnLaunched(LaunchActivatedEventArgs e)

{

Frame rootFrame = Window.Current.Content as Frame;

・・・

Window.Current.Activate();

//PushReceiverを継承したクラスのインスタンス生成

MyReceiver myreceiver = new MyReceiver();

WNSRegister wr = WNSRegister.getInstance(myreceiver);

//既読通知に失敗したメッセージIDを取得し、再度既読通知を行う

IList<string> list = wr.getFailedMsgIDList();

try

{

if(list != null)

   {

      //既読通知に失敗したメッセージID分、既読通知を実行する

      foreach(string f_msgid in list)

   {

         wr.notifyMessageRead(f_msgid);

      });

   }

//LaunchActivatedEventArgsのArgumentsプロパティからメッセージIDを取得する

string msgid = wr.getMessageID(e.Arguments);

//既読通知を実行する

wr.notifyMessageRead(msgid);

}

catch(Exception e)

{

   //例外時の処理

}

//アクションを実行する

WNSToastAction.action(e.Arguments, e.Kind);

}

・ハイブリッドアプリでの既読通知について

・ Android、iOSのハイブリッドアプリで既読通知を行う場合は、ネイティブ層で既読APIの実装が必要です。

Android はインテントからメッセージIDを取得する方法のみ有効です。

そのため、アプリ起動中においても通知バーをタップし、インテントからメッセージIDを取得する方法で既読通知を行うようにし

てください。

・ Windowsのハイブリッドアプリで既読通知を行う場合は、WinJSを利用することにより、JavaScriptでネイティブ用の既読APIを使

用することができます。以下、実装例です。

//activatedイベントにハンドラ-を登録

WinJS.Application.addEventListener("activated", onActivatedHandler, false);

function onActivatedHandler(args) {

if (args.detail.arguments !== "") {

//既読通知処理

try {

//メッセージID取得

var msgid = Com.Fujitsu.Imaps.Push.WNS.WNSRegister.getInstance().getMessageID(args.detail.arguments);

//既読通知の実行

Com.Fujitsu.Imaps.Push.WNS.WNSRegister.getInstance().notifyMessageRead(msgid);

- 132 -

Page 145: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

}

//WinJSの制限により、nullが返る場合はArgumentNullExceptionが発生する(getMessageID返却値がnull)

catch (e) {

//例外時の処理

}

//アクションの実行

Com.Fujitsu.Imaps.Push.WNS.WNSToastAction.action(args.detail.arguments, args.detail.kind);

}

}

・制限事項

・プッシュ受信アプリ以外のアクションを指定したプッシュ通知にて、既読通知を行う場合について

メッセージタップ後のアクションに、プッシュ受信アプリ以外のアプリのアクション(メール送信画面起動、ブラウザ起動など)を指

定し、そのプッシュ通知にて既読通知を行う場合は、Android、iOSにおいて以下の制限があります。

※Windowsの場合は、プッシュ受信アプリ以外のアプリのアクションを指定したプッシュ通知に対しても、既読通知を行うことが

できます。

[Android]

ネイティブアプリ

アクション指定した通知をタップし起動するのは、アクションに指定されたアプリです。

そのため、アクションにプッシュ受信アプリ以外のアクションを指定していた場合は、それらのアプリ(ブラウザ、メールな

ど)が起動します。 つまり、プッシュ受信アプリが未起動時の場合は、通知をタップしてもプッシュ受信アプリは起動しま

せん。 プッシュ受信アプリが起動しないため、既読通知APIを実行することができません。

プッシュ受信アプリが起動中の場合は、PushReceiverを利用してメッセージIDを取得することで、 アプリがフォアグラウン

ド(アクション実行前)の場合のみ既読通知を実行することができます。

ハイブリッドアプリ

Androidのハイブリッドアプリの場合、プッシュ受信アプリが未起動時・起動中共に既読通知APIを実行することができま

せん。

これは、Androidのハイブリッドアプリでは、通知バーをタップしインテントからメッセージIDを取得する方法でのみ既読通

知することが可能なのですが、 通知バーのタップによりプッシュ受信アプリ以外のアプリ(ブラウザ、メールなど)が起動

し、 プッシュ受信アプリが起動しないため、既読通知APIを実行することができないからです。

[iOS]

ネイティブアプリ

プッシュ受信アプリ未起動時は、FJPAppDelegateの派生クラスのdidFinishLaunchingWithOptions関数内で渡されたパラ

メータからメッセージIDを取得し、既読通知APIを実行することができます。 ただし、親クラスの同関数を実行する前(アプリ起動後のアクション実行前)でのみ有効です。

プッシュ受信アプリ起動中においても、FJPAppDelegateの派生クラスのdidReceiveRemoteNotification関数内で渡された

パラメータからメッセージIDを取得し、既読通知APIを実行することができます。 ただし、プッシュ受信アプリ未起動時と

同様に、親クラスの同関数を実行する前でのみ有効です。

・WNSのタイル通知とバッジ通知について

WNSのタイル通知とバッジ通知での既読通知機能は未サポートです。

・登録IDの更新について

既読通知の前後で登録IDが更新された場合、そのメッセージに対しての既読通知は成功せずに、登録IDの不一致としてパラ

メータエラーになります。 そのため、未読状態が続いているようなメッセージは上記エラーとなることがあります。

・利用不可のファイル名(キー名)

[Android]

SharedPreferencesの下記ファイル名はメッセージIDの保存に使用するため、使用しないでください。

・com_fujitsu_push_msg_id_data

- 133 -

Page 146: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

[iOS]

NSUserDefaultsの下記キー名はメッセージIDの保存に使用するため、使用しないでください。

・com_fujitsu_push_msg_id_data

[Windows]

ApplicationData.Current.LocalSettingsの下記キー名はメッセージIDの保存に使用するため、使用しないでください。

・com_fujitsu_push_msg_id_data

・Androidでのメッセージタップ後に起動するActivityについて

メッセージをタップ後に起動するActivityのlaunchModeが省略もしくは、"standard" が設定されていた場合は、メッセージタップ

にてActivityを初回起動後、メッセージを受信し、 その後メッセージをタップしても新規Activityが起動せず、前回のActivityが

表示され、 onCreate()やonNewIntent()などのライフサイクルイベントにてメッセージIDが取得できず、既読通知を行うことができ

ません。

そのため、メッセージタップ後に起動するActivityのlaunchModeは、"singleTop"、"singleTask"、"singleInstance" のいずれかを

指定してください。

6.6 サーバ側のアプリケーションの開発

サーバ側のAPIはWeb APIを提供します。 詳細は、6.4.1 サーバ側のAPIを参照してください。

Web APIの実装例として、メッセージ送信APIと共通メッセージ送信APIを記載します。各Web APIの特長を以下の表に示します。

API名 特徴

共通メッセージ送信API ・ 端末のOSの種類を意識せずに、同じ内容のメッセージを送信できる。

・ テンプレートファイル、またはmessageOptionsとメッセージを指定するだけで、各プッシュサービスの

オプションを指定したメッセージを送信できる。

メッセージ送信API ・ 各プッシュサービスに対して、異なる内容のメッセージを送信できる。

・ 各プッシュサービスの仕様が変更になった場合でも、リクエストのボディの仕様変更であれば、新しい

仕様に合わせたメッセージを送信できる。

注意

サーバ側のアプリケーションは、Web APIをJavaで実装します。

6.6.1 共通メッセージ送信アプリケーションの開発

共通メッセージ送信APIを利用することで、各プッシュサービスへ共通のメッセージを送信できます。

各プッシュサービスのメッセージのオプションは、テンプレートファイル、またはリクエストのボディのmessageOptionsで指定できます。各

指定方法の利用例を以下に示します。

指定方法 利用例

テンプレートファイル ・ 定型文をメッセージで送信する場合(例:開始時間10分前を通知するメッセージを送る場合)

・ 毎回、同じオプションを指定する場合(例:通知バーに表示するメッセージ(ticker)が同じ場合)

messageOptions ・ メッセージ毎にオプションを変更したい場合(例:メッセージの有効期限がメッセージ毎に異なる場合)

・ テンプレートファイルのオプションを追加・変更したい場合(例:actionのURL指定を追加したい場合)

テンプレートファイル、およびmessageOptionsで指定可能なメッセージのオプションの一覧を以下に示します。

- 134 -

Page 147: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

定義名 対応する各プッ

シュサービスの

オプション

意味・用途 型 対象(プッシュ種別)

IMAPS

APNs GCM WNS

message message(IMAPS)、body(APNs)、message(GCM) 、message(WNS)

通知するメッセージ情報

※テンプレートファイルのみ指定

可能。リクエストのボディの

messageで指定するため、

messageOptionsでは指定不可。

String

○ ○ ○ ○

fjp_title title 通知領域に表示するタイトル String

○ - - -

fjp_ticker ticker 通知バーに表示するメッセージ String

○ - - -

fjp_message_arg message_arg メッセージに渡す引数 String

○ - - -

fjp_action action 通知するメッセージ情報 String

○ - - -

fjp_sound sound 通知音 String

○ - - -

fjp_led_color led_color イルミネーション色 String

○ - - -

fjp_led_pattern led_pattern イルミネーションパターン String

○ - - -

fjp_vib vib バイブレーション String

○ - - -

apns_expiration expiration(header)

APNsストレージに保持されるメッ

セージの期間

int - ○ - -

apns_loc-key loc-key 通知センターに表示するメッセー

ジ(messageより優先される)

String

- ○ - -

apns_loc-args loc-args loc-keyに渡す引数(複数ある場

合、カンマ区切りで指定)String

- ○ - -

apns_launch-image launch-image 起動画面 String

- ○ - -

apns_action-loc-key action-loc-key ボタンのローカライズ文字列 String

- ○ - -

apns_badge badge バッジ int - ○ - -

apns_sound sound 通知音 String

- ○ - -

apns_category category カテゴリ指定 String

- ○ - -

apns_action action 通知領域のタップ時のアクション String

- ○ - -

apns_content-available content-available

バックグラウンドのアプリケーショ

ンダウンロード設定

int - ○ - -

gcm_collapse_key collapse_key グループでの折畳み String

- - ○ -

- 135 -

Page 148: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

定義名 対応する各プッ

シュサービスの

オプション

意味・用途 型 対象(プッシュ種別)

IMAPS

APNs GCM WNS

gcm_delay_while_idle delay_while_idle

デバイスのアクティブ確認後に送

boolean

- - ○ -

gcm_time_to_live time_to_live GCMストレージに保持されるメッ

セージの期間

int - - ○ -

gcm_restricted_package_name restricted_package_name

クライアントアプリケーションのパ

ッケージ名でメッセージ送信を制

String

- - ○ -

gcm_dry_run dry_run メッセージ送信しない(デバッグ

用)

boolean

- - ○ -

gcm_title title 通知領域に表示するタイトル String

- - ○ -

gcm_ticker ticker 通知バーに表示するメッセージ String

- - ○ -

gcm_message_arg message_arg メッセージに渡す引数 String

- - ○ -

gcm_action action 通知領域のタップ時のアクション String

- - ○ -

gcm_sound sound 通知音 String

- - ○ -

gcm_led_color led_color イルミネーション色 String

- - ○ -

gcm_led_pattern led_pattern イルミネーションパターン String

- - ○ -

gcm_vib vib バイブレーション String

- - ○ -

wns_toast_launch toast要素の

launch属性

トースト通知クリック時のアクショ

String

- - - ○

wns_toast_duration toast要素の

duration属性

トースト通知の表示時間 String

- - - ○

wns_toast_visual_version toast-visual要素のversion属

トースト通知のXMLスキーマのバ

ージョン

integer

- - - ○

wns_toast_visual_lang toast-visual要素のlang属性

ロケール文字列 String

- - - ○

wns_toast_visual_addImageQuery

toast-visual要素の

addImageQuery属性

言語、倍率、コントラスト設定クエ

リパラメータの付与フラグ

boolean

- - - ○

wns_toast_visual_baseUri toast-visual要素のbaseUri属性

ベースURI anyURI

- - - ○

wns_toast_visual_branding toast-visual要素のbranding属性

商標指定 String

- - - ○

- 136 -

Page 149: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

定義名 対応する各プッ

シュサービスの

オプション

意味・用途 型 対象(プッシュ種別)

IMAPS

APNs GCM WNS

wns_toast_visual_bindings

- toast-visual-binding要素

binding要素で指定できるオプシ

ョンをJSONオブジェクトの配列

([{"template":"ToastText01","lang":"ja-JP"}]の型)で指定

array - - - ○

template toast-visual-binding要素の

template属性

トースト通知のテンプレート String

- - - ○

fallback toast-visual-binding要素の

fallback属性

templateオプションで指定したテ

ンプレートが存在しない場合に使

用されるテンプレート

String

- - - ○

lang toast-visual-binding要素の

lang属性

ロケール文字列 String

- - - ○

addImageQuery

toast-visual-binding要素の

addImageQuery属性

言語、倍率、コントラスト設定クエ

リパラメーターの付与フラグ

boolean

- - - ○

baseUri toast-visual-binding要素の

baseUri属性

ベースURI anyURI

- - - ○

branding toast-visual-binding要素の

branding属性

商標指定(未使用) String

- - - ○

images

- toast-visual-binding-image要素

image要素で指定できるオプショ

ンをJSONオブジェクトの配列

([{"src":"sample.jpg","addImageQuery":"true"}]の型)で指定

array - - - ○

src toast-visual-binding-image要素のsrc属性

イメージのURL String

- - - ○

alt toast-visual-binding-image要素のalt属性

イメージの説明 String

- - - ○

addImageQuery

toast-visual-binding-image要素の

addImageQuery属性

言語、倍率、コントラスト設定クエ

リパラメータの付与フラグ

boolean

- - - ○

texts - toast-visual-binding-text要素

text要素で指定できるオプション

をJSONオブジェクトの配列

([{"message":"message01","lang":"ja-JP"},{"message":"message02","lang":"ja-JP"}]の型)で指定

array - - - ○

message

toast-visual-binding-text要素のコンテンツ

メッセージ文字列 String

- - - ○

- 137 -

Page 150: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

定義名 対応する各プッ

シュサービスの

オプション

意味・用途 型 対象(プッシュ種別)

IMAPS

APNs GCM WNS

lang toast-visual-binding-text要素のlang属性

ロケール文字列 String

- - - ○

wns_toast_audio_src toast-audio要

素のsrc属性

トースト通知音 String

- - - ○

wns_toast_audio_loop toast-audio要

素のloop属性

トースト通知音をループするか否

boolean

- - - ○

wns_toast_audio_silent toast-audio要

素のsilent属性

トースト通知音をサイレントにする

か否か

boolean

- - - ○

wns_toast_commands_scenario toast-commands要素のscenario属性

トースト通知の使用目的 String

- - - ○

wns_toast_commands_commands

- toast-commands-command要素

command要素で指定できるオプ

ションをJSONオブジェクトの配列

([{"id":"snooze","arguments":"ABC"}]の型)で指定

array - - - ○

id toast-commands-command要素

のid属性

ユーザが実行できるアクション String

- - - ○

arguments toast-commands-command要素

のarguments属性

ユーザがアクションを実行した時

に返される文字列

String

- - - ○

wns_badge_value badge要素の

value属性

バッジ通知で表示する情報 String

- - - ○

wns_badge_version badge要素の

version属性

バッジ通知のXMLスキーマのバ

ージョン

integer

- - - ○

wns_tile_visual_version tile-visual要素

のversion属性

タイル通知のXMLスキーマのバ

ージョン

integer

- - - ○

wns_tile_visual_lang tile-visual要素

のlang属性

ロケール文字列 String

- - - ○

wns_tile_visual_addImageQuery tile-visual要素

addImageQuery属性

言語、倍率、コントラスト設定クエ

リパラメータの付与フラグ

boolean

- - - ○

wns_tile_visual_baseUri tile-visual要素

のbaseUri属性

ベースURI anyURI

- - - ○

wns_tile_visual_branding tile-visual要素

のbranding属

商標指定 String

- - - ○

wns_tile_visual_contentId tile-visual要素

のcontentId属

通知のコンテンツを一意に識別

するための送信者が定義する文

字列

String

- - - ○

- 138 -

Page 151: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

定義名 対応する各プッ

シュサービスの

オプション

意味・用途 型 対象(プッシュ種別)

IMAPS

APNs GCM WNS

wns_tile_visual_bindings

- tile-visual-binding要素

binding要素で指定できるオプシ

ョンをJSONオブジェクトの配列

([{"template":"TileSquareBlock","lang":"ja-JP"}]の型)で指定

array - - - ○

template tile-visual-binding要素の

template属性

タイル通知テンプレート String

- - - ○

fallback tile-visual-binding要素の

fallback属性

templateオプションで指定したテ

ンプレートが存在しない場合に使

用されるテンプレート

String

- - - ○

lang tile-visual-binding要素の

lang属性

ロケール文字列 String

- - - ○

addImageQuery

tile-visual-binding要素の

addImageQuery属性

言語、倍率、コントラスト設定クエ

リパラメータの付与フラグ

boolean

- - - ○

baseUri tile-visual-binding要素の

baseUri属性

ベースURI anyURI

- - - ○

branding tile-visual-binding要素の

branding属性

商標指定 String

- - - ○

contentId tile-visual-binding要素の

contentId属性

通知のコンテンツを一意に識別

するための送信者側で定義する

文字列

String

- - - ○

images

- tile-visual-binding-image要素

image要素で指定できるオプショ

ンをJSONオブジェクトの配列

([{"src":"sample.jpg","addImageQuery":"true"}]の型)で指定

array - - - ○

src tile-visual-binding-image要素のsrc属性

イメージのURL String

- - - ○

alt tile-visual-binding-image要素のalt属性

イメージの説明 String

- - - ○

addImageQuery

tile-visual-binding-image要素の

addImageQuery属性

言語、倍率、コントラスト設定クエ

リパラメータの付与フラグ

boolean

- - - ○

texts - tile-visual-binding-text要素

text要素で指定できるオプション

をJSONオブジェクトの配列

([{"message":"message01","lang":"ja-JP"},{"message":"message02","lang":"ja-JP"}]の型)で指定

array - - - ○

- 139 -

Page 152: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

定義名 対応する各プッ

シュサービスの

オプション

意味・用途 型 対象(プッシュ種別)

IMAPS

APNs GCM WNS

message

tile-visual-binding-text要素のコンテンツ

メッセージ文字列 String

- - - ○

lang tile-visual-binding-text要素のlang属性

ロケール文字列 String

- - - ○

wns_badge_tile_only 無し true:トースト通知を行わない、

false:トースト通知を行う

boolean

- - - ○

注意

・ テンプレートファイル、およびmessageOptionsで指定する値は、クライアントアプリケーションにバンドルしたリソースに、前もって定

義が必要なものがあります。詳細は、6.2 受信したメッセージの表示の各プッシュのPayload仕様を参照してください。

・ リクエストボディのmessageとテンプレートファイルのmessage両方が指定された場合は、リクエストボディのmessageに設定したものが

優先されます。

・ テンプレートファイルとmessageOptionsの両方に値が設定されている場合は、messageOptionsの値が優先されます。

・ WNSのtile通知では、messageで指定する値は表示されません。リクエストボディのmessageOptions、またはテンプレートファイルの

wns_tile_visual_bindingsの値を指定してください。

・ WNSでtile通知のみを行いたい場合、wns_badge_tile_onlyをtrueに指定することで、message指定が不要になります。

6.6.1.1 テンプレートファイルを指定

・ テンプレートファイル

各プッシュサービスへ送信するメッセージのオプションを、プロパティファイル形式(定義名=指定値)で設定できるファイルです。

・ テンプレートファイルの格納先

定義ファイル(impush.properties)のテンプレートファイルの格納先ディレクトリ(fj_push_template_file_dir)で、テンプレートファイルの

格納先を指定します。

・ APIの指定方法

リクエストボディの変数名"templateFile"に、格納先にあるファイル名を指定します。

・ 文字コード

UTF-8で指定します。

・ 指定可能な定義名

6.6.1 共通メッセージ送信アプリケーションの開発を参照してください。

・ 実装例

以下はテンプレートファイルを指定した場合の例です。

HttpClientBuilder httpclient = HttpClientBuilder.create();

String b64_authval = "1234567890abcdefghijklmnop==";

String url = "https://ホスト名:ポート/pushidmng/notifyCommon";

StringBuilder sb = new StringBuilder();

sb.append("{");

sb.append(" \"message\": \"テストメッセージです。\",");

sb.append(" \"templateFile\": \"templateEmployer001\",");

sb.append(" \"regIDs\": [");

- 140 -

Page 153: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

sb.append(" \"1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef\"");

sb.append(" ]"); sb.append("}");

HttpPost httpPost = new HttpPost(url);

httpPost.setHeader("IMAPS-Authorization", "Basic " + b64_authval);

httpPost.setHeader("Content-Type", "application/json; charset=UTF-8");

httpPost.setEntity(new StringEntity(sb.toString(),"UTF-8"));

im_response = httpclient.build().execute(httpPost);

上記の例では、Apache HttpClientのOSSを使用しています。

6.6.1.2 messageOptionsを指定

共通メッセージ送信のリクエストボディに変数値"messageOptions"を指定することで、各プッシュサービスのオプションを指定できます。

指定可能な定義名は、6.6.1 共通メッセージ送信アプリケーションの開発を参照してください。

以下はmessageOptionsを指定した場合の例です。

HttpClientBuilder httpclient = HttpClientBuilder.create();

String b64_authval = "1234567890abcdefghijklmnop==";

String url = "https://ホスト名:ポート/pushidmng/notifyCommon";

StringBuilder sb = new StringBuilder();

sb.append("{");

sb.append(" \"message\": \"テストメッセージです。\",");

sb.append(" \"messageOptions\": {");

sb.append(" \"gcm_title\":\"タイトル006\",");

sb.append(" \"apns_action\":\"http://jp.fujitsu.com/\"");

sb.append(" },");

sb.append(" \"extData\": [");

sb.append(" \"apnsExtData001\",\"gcmExtData001\",\"fjpExtData001\"");

sb.append(" ]"); sb.append("}");

HttpPost httpPost = new HttpPost(url);

httpPost.setHeader("IMAPS-Authorization", "Basic " + b64_authval);

httpPost.setHeader("Content-Type", "application/json; charset=UTF-8");

httpPost.setEntity(new StringEntity(sb.toString(),"UTF-8"));

im_response = httpclient.build().execute(httpPost);

上記の例では、Apache HttpClientのOSSを使用しています。

6.6.2 メッセージ送信アプリケーションの開発

メッセージ送信APIを利用することで、各プッシュサービスへ別々のメッセージを送信できます。

以下はメッセージ送信APIを呼び出す例です。

HttpClientBuilder httpclient = HttpClientBuilder.create();

String b64_authval = "1234567890abcdefghijklmnop==";

String url = "https://ホスト名:ポート/pushidmng/notify";

StringBuilder sb = new StringBuilder();

sb.append("{");

sb.append(" \"APNs\": {");

sb.append(" \"aps\": {");

sb.append(" \"alert\": \"test\",");

sb.append(" \"sound\": \"bingbong.aiff\",");

sb.append(" \"badge\": 7");

sb.append(" }");

sb.append(" },");

- 141 -

Page 154: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

sb.append(" \"FJP\": {\"message\": \"fjp_message001\"},");

sb.append(" \"regIDs\": [");

sb.append(" \"1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef\",");

sb.append(" \"12345678901234567890abc\"");

sb.append(" ]"); sb.append("}");

HttpPost httpPost = new HttpPost(url);

httpPost.setHeader("IMAPS-Authorization", "Basic " + b64_authval);

httpPost.setHeader("Content-Type", "application/json; charset=UTF-8");

httpPost.setEntity(new StringEntity(sb.toString(),"UTF-8"));

im_response = httpclient.build().execute(httpPost);

上記の例では、Apache HttpClientのOSSを使用しています。

- 142 -

Page 155: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

第7章 双方向通信サービスを利用したアプリケーション

本章では、双方向通信サービスを利用して、複数のクライアント間で情報共有を行うアプリケーションの開発方法について説明します。

7.1 概要

双方向通信サービスは、クライアントが双方向でリアルタイムに通信する機能を提供します。サーバのルームと呼ぶ共通領域に接続

(ジョイン)することで、クライアント双方間で通信ができます。

注意

・ 双方向通信サービスは、クライアントのWindows向けハイブリッドアプリケーションとネイティブアプリケーションに対応していませ

ん。

・ 双方向通信サービスは、認証機能、SSL通信機能、ログ機能を備えていないため、利用シーンに合わせてアプリケーションでのセ

キュリティ対策を検討してください。

・ 双方向通信サービスにイントラネット以外から接続する場合は、VPNを使用して接続してください。

・ 双方向通信サービスは、冗長構成にできません。

・ クライアントのアプリケーションの画面に大量のメッセージ等を表示すると、クライアント側のアプリケーションやブラウザのメモリを圧

迫し、パフォーマンスの低下が発生する可能性があります。アプリケーションの画面設計時には、表示する情報量が過度にならな

いように設計をしてください。

ルームは複数作成できます。

ここでは、双方向通信サービスを利用するアプリケーションを、「双方向通信アプリケーション」と記載します。

双方向通信サービスの概要

- 143 -

Page 156: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

7.2 API次に例示しているAPIを使って、双方向通信アプリケーションを開発できます。

・ 双方向通信サービスとのコネクション確立

・ メッセージ送受信

アプリケーションは、はじめにコネクション確立をし、メッセージ送信/受信します。

サーバ側のAPIはJavaで提供しており、業務アプリケーション(Java EE/Java EE 6アプリケーション)で使用できます。クライアント側のAPIはJavaScript、Java、Objective-Cで提供しており、Webアプリケーション、ハイブリッドアプリケーション、ネイティブアプリケーションで使

用できます。アプリケーションは、APIのパラメーターに指定された[イベント名]を判断し、それぞれの処理をJavaScript、Java、Objective-Cで実装します。

詳細は、"APIリファレンス"の"双方向通信サービス機能のAPI"を参照してください。

注意

JavaScriptのAPIを利用し、ハイブリッドアプリケーションを作成する場合は、devicereadyイベントのコールバック関数の中に以下の処理を入れてください。

・ io.connect()

・ socket.on()

7.3 イベント

双方向通信アプリケーションは、以下のイベントを双方向通信サービスと送受信することで動作します。

アプリケーションが送信

するイベント名

アプリケーションが受信

するイベント名

内容

connect 双方向通信サービスとのコネクション確立時にアプリケーションへ通知。

join ルームへのジョイン依頼。

→ join ジョイン成功。依頼したクライアントが受信するイベント。

→ coming 他のクライアントがジョイン。依頼したクライアント以外が受信するイベント。

send ルーム内の参加者全員、または指定した参加者にメッセージを送信。他のルー

ムの参加者へ送信。

→ receive メッセージを受信。

list ルーム名の一覧、または指定したルーム内の参加者リストを依頼。

→ list ルーム名の一覧、または参加者リストを受信。

leave ルームからの退室時に送信。

→ leave ルーム参加者の退室時に受信。

disconnect ルーム参加者の接続が切断、またはサーバがダウン時に受信。

7.4 作成例

付録F 双方向通信アプリケーションのサンプルを参照してください。

- 144 -

Page 157: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

第8章 認証

本章では、IMAPSで認証機能を利用する方法を説明します。

IMAPSサーバに認証機能を組み込むには、以下の作業をします。

・ 外部DB(IMAPS-DB以外)を使用する場合

ユーザーのパスワードをリポジトリに保管する値に変換するクラスを開発

・ ActiveDirectory以外のLDAPサーバを使用し、パスワードを保管する属性がuserPasswordでない場合

パスワードの変更を行うクラスを開発

上記以外の場合は、認証組み込み時のクラスの開発は不要です。また、IMAPSサーバに認証機能を組み込む場合、以下の機能も開

発できます。

・ 認証したユーザーの情報取得

・ 認証タイムアウトの検出

8.1 ユーザーのパスワードをリポジトリに保管する値に変換するクラスの開発

ログインで指定するパスワードの文字列を元に、データベースに登録しているパスワードに変換するクラスを、以下の手順で作成しま

す。

1. 8.1.1 必要なメソッドを実装する

2. 8.1.2 「認証定義」を作成する

3. 8.1.3 作成したクラスと「認証定義」を設定し登録する

このクラスは平文のパスワードを、使用するデータベースに保管している形式(暗号化やハッシュ化した値)に変換した値を返すように

実装します。このクラスが返した値はログイン時のパスワードの照合やパスワード変更でデータベースにパスワードを保管する際に使

用します。

8.1.1 必要なメソッドを実装する

1. 以下のクラスを継承して必要なメソッドを実装します。

com.fujitsu.imaps.account.models.AbstractPassword

クラスには、java.util.Map<String, String>のパラメーターを持つコンストラクタを実装します。以下のメソッドを実装してください。

/**

* 指定されたパスワードをリポジトリに保管する値に変換します。

* @param password 指定された値

* @return 変換したパスワード

* @throws Exception エラーが発生した場合

*/

public byte[] create(String password) throws Exception;

認証定義に設定したパラメーターは以下のメソッドで取得できます。

/**

* 認証定義の値を取得します。

* @param name 項目名

* @return 値

*/

public String getParameter(String name)

実装例:

- 145 -

Page 158: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

package com.xxx;

import com.fujitsu.imaps.account.models.AbstractPassword;

public class CreatePasswordXXX extends AbstractPassword {

/**

* コンストラクタ

*/

public CreatePasswordXXX(Map<String, String> params) {

super(params);

}

@Override

public byte[] create(String password) throws Exception {

// パスワードの生成ロジックを実装。

}

・・・以下、略

2. 次のjarファイルを使って作成したクラスをコンパイルします。

<製品インストールフォルダー>\lib\imauth.jar

/opt/FJSVimaps/lib/imauth.jar

8.1.2 「認証定義」を作成する

1. 次のファイルをコピーします。

<製品インストールフォルダー>\bin\conf\sample\db\authdef.properties

/opt/FJSVimaps/bin/conf/sample/db/authdef.properties

2. コピーしたファイルの以下の項目に値を設定します。

項目 値

password-class 作成したパスワード変換クラスのクラス名を指定します。

例:

password-class=com.xxx.CreatePasswordXXX

8.1.3 作成したクラスと「認証定義」を設定し登録する

1. 作成したクラスをJARファイルにします。

2. 前項のJARファイルを、imadmin auth setコマンドの-jarオプションに指定します。「認証定義」はimadmin auth setの-fileオプション

に指定します。詳細は、"運用ガイド"を参照してください。

3. imadmin auth importでサーバアプリケーションに登録します。詳細は、"運用ガイド"を参照してください。

8.2 パスワードの変更を行うクラスの開発

ログインユーザーのパスワードを変更するクラスを、次の手順で作成します。

1. 8.2.1 必要なメソッドを実装する

2. 8.2.2 「認証定義」を作成する

3. 8.2.3 作成したクラスと「認証定義」を設定し登録する

- 146 -

Page 159: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

8.2.1 必要なメソッドを実装する

1. 次のクラスを継承して必要なメソッドを実装します。

com.fujitsu.imaps.account.AbstractChangePassword

クラスには、パラメーターを持たないコンストラクタを実装します。次のメソッドを実装してください。

/**

* パスワードを変更します。

* @param userid ユーザーID

* @param oldPassword 現在のパスワード

* @param newPassword 変更するパスワード

* @return true:パスワードの変更に成功、false:パスワードの変更に失敗

* @throws Exception エラーが発生した場合

*/

public boolean changePassword(String userid, String oldPassword, String newPassword) throws Exception;

認証定義のパラメーターは以下のメソッドで取得します。

/**

* 認証定義の値を取得します。

* @param name 項目名

* @return 値

*/

public String getParameter(String name)

実装例:

package com.xxx;

import com.fujitsu.imaps.account.AbstractChangePassword;

public class ChangePasswordXXX extends AbstractChangePassword {

/**

* コンストラクタ

*/

public ChangePasswordXXX() {

}

@Override

public boolean changePassword(String userid, String oldPassword, String newPassword)

throws Exception {

// パスワードの変更ロジックを実装。

}

・・・以下、略

2. 次のjarファイルを使って作成したクラスをコンパイルします。

<製品インストールフォルダー>\lib\imauth.jar

/opt/FJSVimaps/lib/imauth.jar

8.2.2 「認証定義」を作成する

1. 次のファイルをコピーします。

<製品インストールフォルダー>\bin\conf\sample\db\authdef.properties

/opt/FJSVimaps/bin/conf/sample/db/authdef.properties

- 147 -

Page 160: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

2. コピーしたファイルの以下の項目に値を設定します

項目 値

change-password-class ユーザーのパスワードを変更するクラスを指定します。

例:

change-password-class=com.xxx.ChangePasswordXXX

8.2.3 作成したクラスと「認証定義」を設定し登録する

1. 作成したクラスをJARファイルにします。

2. 前項のJARファイルは、imadmin auth setの-jarオプションに指定します。「認証定義」はimadmin auth setの-fileオプションに指定

します。詳細は、"運用ガイド"を参照してください。詳細は、"運用ガイド"を参照してください。

3. imadmin auth importでサーバアプリケーションに登録します。詳細は、"運用ガイド"を参照してください。

8.3 認証したユーザーの情報取得

IMAPS業務サーバで動作する業務アプリに以下の処理を記述すると、認証したユーザー情報を取得できます。取得可能な情報は以

下のとおりです。

・ ユーザーID

・ 氏名

・ ロール名

ユーザーIDはjavax.servlet.http.HttpServletRequestのgetUserPrincipalメソッドで取得できます。

実装例:

public void doPost(HttpServletRequest req, HttpServletResponse) throws ServletException, IOException {

Principal principal = req.getUserPrincipal();

String name = principal.getName(); // ユーザー IDを取得

・・・

}

氏名とロール名はjavax.servlet.ServletRequestのgetAttributeメソッドで取得できます。値がない場合はnullを返します。

値 属性名 型

氏名 com.fujitsu.imaps.auth.userName String

ロール名 com.fujitsu.imaps.auth.roleNames String[]

ロール名についてはjavax.servlet.http.HttpServletRequestのisUserInRoleメソッドでも確認できます。

実装例:

public void doPost(HttpServletRequest req, HttpServletResponse) throws ServletException, IOException {

if(req.isUserInRole(ロール名)) {

// ログインユーザーは引数に指定したロールを持っている

} else {

// ログインユーザーは引数に指定したロールを持っていない

}

・・・

}

8.4 認証タイムアウトの検出

クライアントからサーバに一定期間アクセスがなかった( 大アイドル時間を超えた場合)後にサーバにアクセスした場合、ステータスコ

ード:401で復帰します。

- 148 -

Page 161: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

8.4.1 任意のコンテンツを返す方法

タイムアウト時に任意のサーバから任意のコンテンツを返す場合は、サーバアプリケーションのweb.xmlに以下のようにタイムアウト時に

クライアントに返すコンテンツを定義します。クライアントに返すコンテンツで、ステータスコードを200に変更することで任意のコンテン

ツをクライアントで表示できます。

<error-page>

<exception-type>com.fujitsu.imaps.auth.IMAPSTimeoutException</exception-type>

<location>クライアントに返すコンテンツのURL</location>

</error-page>

8.4.2 IMAPSクライアントAPIに通知する方法

IMAPSクライアントAPIにタイムアウトを通知するにはクライアントに返すコンテンツで以下のヘッダーを返します。

X-IMAPS-TIMEOUT: true

この場合も任意のコンテンツを返す方法と同様にステータスコード:200を返すようにしてください。

この場合、IMAPSクライアントのタイムアウト判定API(checkServerTimeout)を利用することで、タイムアウトを検知できます。

サポート対象

Android

・ java.net.HttpURLConnection

・ org.apache.http.HttpResponse

iOS

・ NSURLResponse

Windows

・ Windows.Web.Http.HttpClient

JavaScript

・ XMLHttpRequest

8.4.3 例

web.xmlの定義例

<web-app version="3.0" xmlns=http://java.sun.com/xml/ns/javaee

xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

・・・

<error-page>

<exception-type>com.fujitsu.imaps.auth.IMAPSTimeoutException</exception-type>

<location>/timeout/timeout.jsp</location>

</error-page>

</web-app>

タイムアウトを通知するサーバアプリケーションのコンテンツの実装例(timeout/timeout.jsp)

<%@ page contentType="text/html;charset=UTF-8" isErrorPage="true" %>

<%

response.setHeader("X-IMAPS-TIMEOUT", "true");

response.setStatus(200);

%>

<html>

<head>

<title>401 Unauthorized</title>

</head>

- 149 -

Page 162: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

<body>

<b>401 Unauthorized</b><br>

</body>

</html>

Androidでの実装例

private void connection() {

new AsyncConnectTask(接続URL).execute();

}

class AsyncConnectTask extends AsyncTask<String, String, String> {

LoginManager mLoginManager = null;

String mURL = null;

・・・・

public AsyncConnectTask(String url) {

mLoginManager = new LoginManager(getApplicationContext());

mURL = url;

・・・・

}

protected String doInBackground(String... params) {

try{

URL url = new URL(mURL);

DefaultHttpClient httpClient = new DefaultHttpClient();

HttpPost httpPost = new HttpPost(url);

・・・

mLoginManager.setRequestAuth(httpPost, httpClient);

HttpResponse response = httpClient.execute(httpPost);

mLoginManager.checkServerTimeout(response);

・・・

mLoginManager.saveResponseAuth(url, httpClient);

・・・

} catch (IMAPSAuthTimeOutException e) {

// ログアウト処理の実装を行うことを推奨します。

} catch (例外キャッチ) {

// キャッチした例外の内容に応じて、例外処理を実装します。

}

}

}

iOSでの実装例

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response

IMALoginManager *loginManager = [[IMALoginManager alloc] init];

NSError *anError = nil;

BOOL result = [loginManager checkServerTimeout:response error:&anError];

if(result == NO) {

// それぞれのエラーの実装.

}

}

Windowsでの実装例

private async void connection(string url)

{

try {

HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, new Uri(url));

LoginManager lm = new LoginManager();

lm.setRequestAuth(request);

HttpClient httpClient = new HttpClient();

HttpResponseMessage response = await httpClient.SendRequestAsync(request);

// サーバータイムアウトの検出.

lm.checkServerTimeout(response);

- 150 -

Page 163: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

・・・

} catch (IMAPSAuthTimeOutException e) {

// ログアウト処理の実装を行うことを推奨します。

} catch (例外キャッチ) {

// キャッチした例外の内容に応じて、例外処理を実装します。

}

}

JavaScriptでの実装例

function getContent(url) {

var xmlHttp;

xmlHttp = new XMLHttpRequest();

xmlHttp.open("GET", url, false);

imaps.auth.setRequestHeader(resultHandler, errorHandler, xmlHttp);

}

function resultHandler(result) {

xmlHttp.send(null);

if(imaps.auth.checkResponseHeader(xmlHttp)) {

alert("SERVER TIME OUT");

} else {

alert(xmlHttp.responseText);

}

}

function errorHandler(error) {

alert("Error: \r\n"+error );

}

8.5 Web画面上からイベントとして受信する方法

Web画面上からタイムアウトをイベントとして受信できます。 イベントを受け取ることで、タイムアウト発生時にネイティブアプリケーション

側で必要な後処理ができます。

注意

Web画面上からタイムアウトをイベントとして受信する方法は、AndroidとiOSに対応しています。

実装方法

サーバアプリケーション

・ Cordova APIを使用してコンテンツの読み込み時にタイムアウトのイベントを通知するコンテンツを返すように実装します。この場

合も任意のコンテンツを返す方法と同様にステータスコード:200を返すようにしてください。

Android

・ CordovaActivityクラスのonMessageメソッド内で"IMAPS_EVENT_AUTH_TIMEOUT_ERROR"イベントを受け取るよう実装しま

す。

iOS

・ IMAAuthViewControllerを継承し、IMAAuthViewControllerDelegateのdidFailLoadWithErrorメソッドを実装します。

以下サーバアプリケーションのコンテンツの配置例です。

Timeout

+-- timeout.jsp

+-- js

+-- android

+-- cordova.js

+-- ios

+-- cordova.js

- 151 -

Page 164: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

cordova.jsは以下に保管されているものをコピーしてサーバアプリケーションに含めます。

また、cordova.jsの配置先には認証が有効にならないようにimadmin auth importコマンドで設定します。

Android

<製品インストールフォルダー>\development\android\cordovajs\cordova.js

/opt/FJSVimsrv/development/android/cordovajs/cordova.js

iOS

<製品インストールフォルダー>\development\ios\cordovajs\cordova.js

/opt/FJSVimsrv/development/ios/cordovajs/cordova.js

上記ディレクトリからcordova.jsをコピーします。

タイムアウトを通知するサーバアプリケーションのコンテンツの実装例(timeout/timeout.jsp)

<%@ page contentType="text/html;charset=UTF-8" isErrorPage="true" %>

<%

response.setHeader("X-IMAPS-TIMEOUT", "true");

response.setStatus(200);

%>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<title>401 Unauthorized</title>

<script type="text/javascript">

var require;

if(/Android/i.test(navigator.userAgent)){

require = "<%=request.getContextPath()%>\/timeout\/js\/android\/cordova.js";

} else {

require = "<%=request.getContextPath()%>\/timeout\/js\/ios\/cordova.js";

}

document.write('<scr'+'ipt type="text/javascript" src="'+require+'" onload="onLoad()"><\/scr'+'ipt>');

function onLoad() {

document.addEventListener("deviceready",

function () {

cordova.exec(false, false, "AuthPlugin", "unauthorized", []);

}, false);

}

</script>

</head>

<body>

<b>401 Unauthorized</b><br>

</body>

</html>

Androidでの実装例

public class WebViewActivity extends CordovaActivity {

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

Config.init(this);

init();

super.loadUrl(Config.getStartUrl());

}

@Override

public Object onMessage(String id, Object data) {

if(id.equals("IMAPS_EVENT_AUTH_TIMEOUT_ERROR")) {

new AlertDialog.Builder(this)

- 152 -

Page 165: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

.setTitle("Timeout")

.setMessage("タイムアウトが発生しました")

.setPositiveButton("OK", null)

.create()

.show();

}

return super.onMessage(id, data);

}

}

iOSでの実装例

#pragma mark IMAAuthViewControllerDelegate implementation

- (void) didFailLoadWithError:(NSError *)anError

{

NSString *message = [self getErrorMsg:anError];

NSLog(@"didFailLoadWithError %@", message);

UIAlertView *alert = [[UIAlertView alloc]

initWithTitle:@"Timeout"

message:@"タイムアウトが発生しました"

delegate:nil

cancelButtonTitle:@"OK"

otherButtonTitles:nil];

[alert show];

}

- 153 -

Page 166: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

付録A プッシュWeb APIプッシュ通知が提供するプッシュWeb APIについて説明します。

プッシュWeb APIの呼び出し形式は以下のとおりです。

http(s)://<IMAPSサーバ>:<ポート番号>/pushidmng/機能パス

※ポート番号はデフォルトでは8153番です。

APIが返却するステータスコードは、 表A.1 APIが返却するステータスコード に示すとおりです。○は返却される値です。

表A.1 APIが返却するステータスコード

コード 意味

(W3C)本APIでの意味

登録ID情

報取得

登録IDの

一覧取得

登録IDの削除

メッセー

ジ送信

蓄積メッセ

ージ参照

共通メッセ

ージ送信

登録IDの検索

IMAPSプッシュ

ID更新

デバイスト

ークン登

録/更新

registrationID登

録/更新

200 OK 処理成

○ ○ ○ ○ ○ ○ ○ ○ - -

201 Created 生成処

理成功

- - - - - - - - ○ ○

400 BadRequest

リクエスト

違反

○ ○ ○ ○ ○ ○ ○ ○ ○ ○

404 NotFound

リソース

がない

○ ○ ○ ○ ○ ○ ○ ○ ○ ○

500 InternalServerError

そのほ

かのエラ

○ ○ ○ ○ ○ ○ ○ ○ ○ ○

表A.2 APIが返却するステータスコード

コード 意味

(W3C)本APIでの意味

チャネルURI登録/更新

メッセージIDから

のメッセージ情報

の取得

登録IDからのメッ

セージ情報の取

既読件数の取得

200 OK 処理成

- ○ ○ ○

201 Created 生成処

理成功

○ - - -

400 BadRequest

リクエスト

違反

○ ○ ○ ○

404 NotFound

リソース

がない

○ ○ ○ ○

500 InternalServerError

そのほ

かのエラ

○ ○ ○ ○

メッセージの内容は以下のとおりです。

・ コードが200番台 :空文字

・ コードが200番台以外:プッシュのエラーコード、メッセージ

ステータスコードへの対処方法は以下のとおりです。

コード 対処方法

200(注) 処理成功です。特に対処は必要ありません。

201 生成処理成功です。特に対処は必要ありません。

400 ・ パラメーターが誤っています。レスポンスのメッセージを元に、メッセージ集を参照して対処を実施してください。

- 154 -

Page 167: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

コード 対処方法

・ メッセージログ(im_msg.log)を参照し、Web APIを実行した時間帯にメッセージが出力されていないか確認してくださ

い。

404 ・ 正しいURLを指定しているか確認してください。

・ レスポンスのメッセージを元に、メッセージ集を参照して対処を実施してください。

・ メッセージログ(im_msg.log)を参照し、Web APIを実行した時間帯にメッセージが出力されていないか確認してくださ

い。

500 ・ レスポンスのメッセージを元に、メッセージ集を参照して対処を実施してください。

・ メッセージログ(im_msg.log)を参照し、Web APIを実行した時間帯にメッセージが出力されていないか確認してくださ

い。

注)A.14 メッセージの送信(非推奨) の場合、ステータスコード、メッセージの他、各登録IDのステータスコード、メッセージがレスポン

スとして返ります。ステータスコードが200の場合であっても、各登録IDのステータスコード、メッセージを確認する必要があります。

注意

・ プッシュWeb APIは、AndroidとiOS、Windowsに対応しています。

・ レスポンス(JSON形式)の出力順は、マニュアルの形式と異なることがあります。

・ プッシュWeb APIのリクエストボディに同様の変数名を複数指定した場合は、 後に指定したものが有効となります。

A.1 登録ID情報の取得

指定した登録IDについての詳細情報を取得します。登録IDには、IMAPSプッシュの場合はIMAPSプッシュID、APNsの場合はデバイ

ストークン、GCMの場合はregistrationID、WNSの場合はチャネルURIを設定してください。

A.1.1 リクエスト

メソッド

POST

機能パス

/regID

引数

なし

ヘッダー

Content-Type: application/json; charset=UTF-8

ボディ

以下の形式です。

{

"regID":"登録ID"

}

変数名 説明 省略 型 指定値、または例

regID 登録ID

・ IMAPSプッシュの場合、IMAPSプッシュID

・ APNsの場合、デバイストークン

・ GCMの場合、registrationID

不可 String

- 155 -

Page 168: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

変数名 説明 省略 型 指定値、または例

・ WNSの場合、チャネルURI

A.1.2 レスポンス

ステータスコード

表A.1 APIが返却するステータスコードを参照してください。

ヘッダー

Content-Type: application/json; charset=UTF-8

ボディ

以下の形式です。

{

"response":{

"code":"ステータスコード",

"message":"メッセージ"

},

"pushKind": プッシュ種別",

"appName": "アプリケーション名",

"extData": "拡張データ",

"sandboxFlag":"サンドボックスフラグ"

}

変数名 説明 型

response レスポンス -

code ステータスコード int

message メッセージ String

pushKind プッシュ種別(WNS、APNs、GCM、FJPのいずれか) String

appName アプリケーション名 String

extData 拡張データ String

sandboxFlag ・ サンドボックスフラグ

・ APNsの場合

true:sandbox版

false:release版

・ IMAPSプッシュ、GCM、WNSの場合

空文字

String

注意

取得対象の登録IDが存在しない場合でも、レスポンスとして処理成功(ステータスコードが200)を返します。この場合、pushKind、

appName、extData、sandboxFlagはすべて空文字となります。

A.1.3 使用例

登録ID(reg12345678901234567890)の情報を取得する場合

https://(server):(port)/pushidmng/regID

{"regID":"BIzaSyCljf_wbiDcPcYX2QqknssYefUPPBZJ0rA"}

- 156 -

Page 169: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

レスポンス例

{"response":{"code":"200","message":""},"pushKind": GCM","appName": "apl001","extData": "extData0000","sandboxFlag":""}

A.2 登録IDの一覧取得

登録IDの一覧を取得します。検索条件を指定することで取得する一覧を絞り込むことができます。

A.2.1 リクエスト

メソッド

POST

機能パス

/regIDs

引数

なし

ヘッダー

Content-Type: application/json; charset=UTF-8

ボディ

以下の形式です。

{

"pushKind":"プッシュ種別",

"appName":"アプリケーション名",

"sandboxFlag":"サンドボックスフラグ",

"getExtFlag":"拡張データ通知",

"offset":"取得開始件数",

"maxCount":"取得最大件数"

}

変数名 説明 省略 型 指定値、または例

pushKind プッシュ種別 可 String ・ デフォルト:全プッシュ種別を対象

・ WNS、APNs、GCM、FJPのいずれかを指

appName アプリケーション名 不可 String ・ 文字種:半角英数字+記号

・ 大サイズ:1024byte

sandboxFlag サンドボックスフラグ

APNsのデバイストークンが含まれる

場合に有効

可 boolean ・ デフォルト:false

true:sandbox版

false:release版

getExtFlag 拡張データ通知 可 boolean ・ デフォルト:false

true:拡張データを含む

false:拡張データを含まない

offset 取得開始件数 可 int ・ デフォルト:1

・ 指定範囲:1以上の値

maxCount 取得 大件数 可 int ・ デフォルト:定義ファイル(impush.properties)の同時指定可能な 大登録ID数

(fj_push_max_num_for_address)

・ 指定範囲:1以上の値

- 157 -

Page 170: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

注意

・ 取得開始件数が指定された場合は、検索条件に一致するデータのうち、取得開始件数以降のデータを返却します。検索結果

が取得開始件数未満の場合、データは返却されません。

・ 取得 大件数が指定された場合は、検索条件に一致するデータのうち、取得 大件数分のデータを返却します。指定値が0

以下、または、定義ファイル(impush.properties)の同時指定可能な 大登録ID数(fj_push_max_num_for_address)を超えている

場合はエラーとします。

A.2.2 レスポンス

ステータスコード

表A.1 APIが返却するステータスコードを参照してください。

ヘッダー

Content-Type: application/json; charset=UTF-8

ボディ

以下の形式です。

{

"response": {

"code": " ステータスコード",

"message": "メッセージ"

},

"dataCount": {

"totalCount": "全件数",

"currentCount": "通知件数"

},

"regIDs": [

{

"regID": "登録ID",

"extData":"拡張データ"

},

{

"regID": "登録ID",

"extData":"拡張データ"

},

{

"regID": "登録ID",

"extData":"拡張データ"

},

...

]

}

変数名 説明 型

response レスポンス -

code ステータスコード int

message メッセージ String

dataCount 件数 -

totalCount 条件に一致する全件数 int

currentCount レスポンスに含まれる件数 int

regIDs 登録IDのリスト 配列

regID 登録ID String

- 158 -

Page 171: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

変数名 説明 型

extData 拡張データ String

注意

一覧取得処理中に登録IDが削除されると、以下の不整合が発生する場合があります。登録IDの削除業務との同時実行は行わな

いようにしてください。

・ 全件数が通知件数より少ない。

・ 削除された登録ID以降の数件のデータが通知されない。

A.2.3 使用例

すべてのプッシュ種別(IMAPSプッシュ、APNs、GCM、WNS)、アプリケーション名(app001)の登録IDの一覧を取得する場合

https://(server):(port)/pushidmng/regIDs

{"appName":"app001"}

プッシュ種別FJP、アプリケーション名(app001)の登録ID一覧を取得する場合

https://(server):(port)/pushidmng/regIDs

{"pushKind":"FJP","appName":"app001"}

プッシュ種別FJPのアプリケーション名(app001)の登録IDの1件目から100件の一覧を取得する場合

https://(server):(port)/pushidmng/regIDs

{"pushKind":"FJP","appName":"app001","offset":1,"maxCount:100}

レスポンス例(getExtFlag=falseの場合)

{"response":{"code":"200","message":""},"dataCount":{"totalCount":"2","currentCount":"2"},

"regIDs":[{"regID":"9983cd8368330cf800620350d609925153d43119f5e4d607fea362356e11668a","extData":""},

{"regID":"qPudDDVCLfYuD6FoouRVJpi","extData":""}]}

A.3 登録IDの検索

拡張データを検索条件として、登録IDを検索します。

A.3.1 リクエスト

メソッド

POST

機能パス

/findRegID

引数

なし

ヘッダー

Content-Type: application/json; charset=UTF-8

ボディ

以下の形式です。

{

"extData":"拡張データ",

- 159 -

Page 172: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

"exactFlag":"検索方法"

}

変数名 説明 省略 型 指定値、または例

extData 拡張データ(検索条件) 不可 String ・ 文字種:半角英数字+記号

・ 大サイズ:1024byte

exactFlag 検索方法フラグ 可 boolean ・ デフォルト:true

true:完全一致

false:部分一致

注意

・ extDataに空文字を指定した場合、エラーとなります。

A.3.2 レスポンス

ステータスコード

表A.1 APIが返却するステータスコードを参照してください。

ヘッダー

Content-Type: application/json; charset=UTF-8

ボディ

以下の形式です。

{

"response": {

"code": "ステータスコード",

"message": "メッセージ"

},

"regIDs":

[

{

"regID": "登録ID",

"extData": "拡張データ"

},

{

"regID": "登録ID",

"extData": "拡張データ"

},

...

]

}

変数名 説明 型

response レスポンス -

code ステータスコード int

message メッセージ String

regIDs 登録IDのリスト 配列

regID 登録ID String

extData 拡張データ String

- 160 -

Page 173: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

注意

検索対象となる登録IDが存在しない場合でも、レスポンスとして処理成功(ステータスコードが200)を返します。

A.3.3 使用例

例1-1) 拡張データ"extData001"を指定して、登録IDを検索する場合

http(s)://(server):(port)/pushidmng/findRegID

{

"extData":"extData001"

}

例1-2) レスポンス例

{

"response":{

"code":"200",

"message":""

},

"regIDs":[

"extData":"extData001",

"regID":"regID001"

]

}

例2-1) 存在しない拡張データ"extData002"を指定して、登録IDを検索する場合

http(s)://(server):(port)/pushidmng/findRegID

{

"extData":"extData002"

}

例2-2) レスポンス例

{

"response":{

"code":"200",

"message":""

},

"regIDs": []

}

A.4 登録IDの削除

指定した登録IDを削除します。登録IDには、IMAPSプッシュの場合はIMAPSプッシュID、APNsの場合はデバイストークン、GCMの場

合はregistrationID、WNSの場合はチャネルURIを設定してください。

A.4.1 リクエスト

メソッド

POST

機能パス

/delRegIDs

引数

なし

- 161 -

Page 174: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

ヘッダー

Content-Type: application/json; charset=UTF-8

ボディ

以下の形式です。

{

"regIDs":["登録ID","登録ID",…]

}

変数名 説明 省略 型 指定値、または例

regIDs 登録IDのリスト

・ IMAPSプッシュの場合、IMAPSプッシュID

・ APNsの場合、デバイストークン

・ GCMの場合、registrationID

・ WNSの場合、チャネルURI

不可 String

注意

・ 登録IDを削除した場合、「メッセージIDからのメッセージ情報の取得」、「登録IDからのメッセージ情報の取得」を行っても、削除し

た登録IDに関連する情報は取得できなくなります。

A.4.2 レスポンス

ステータスコード

表A.1 APIが返却するステータスコードを参照してください。

ヘッダー

Content-Type: application/json; charset=UTF-8

ボディ

以下の形式です。

{

"response": {

"code": "ステータスコード",

"message": "メッセージ"

}

}

変数名 説明 型

response レスポンス -

code ステータスコード int

message メッセージ String

注意

削除対象の登録IDが存在しない場合でも、レスポンスとして処理成功(ステータスコードが200)を返します。

A.4.3 使用例

登録ID(BIzaSyCljf_wbiDcPcYX2QqknssYefUPPBZJ0rA、qPudDDVCLfYuD6FoouRVJpi)を削除する場合

- 162 -

Page 175: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

https://(server):(port)/pushidmng/delRegIDs

{

"regIDs":["BIzaSyCljf_wbiDcPcYX2QqknssYefUPPBZJ0rA","qPudDDVCLfYuD6FoouRVJpi"]

}

レスポンス例

{"response":{"code":"200","message":""}}

A.5 IMAPSプッシュIDの更新

IMAPSプッシュID、アプリケーション名を条件として、拡張データを更新します。

A.5.1 リクエスト

メソッド

POST

機能パス

/fjpRegID

引数

なし

ヘッダー

Content-Type: application/json; charset=UTF-8

ボディ

以下の形式です。

{

"appName":"アプリケーション名",

"extData":"拡張データ",

"regID":"登録ID"

}

変数名 説明 省略 型 指定値、または例

appName アプリケーション名 不可 String ・ 文字種:半角英数字+記号

・ 大サイズ:1024byte

extData 拡張データ 可 String ・ 文字種:半角英数字+記号

・ 大サイズ:1024byte

regID 登録ID 不可 String

注意

・ 業務サーバのデータベースで管理しているIDを拡張データとして登録している場合、業務データベースと同時にIMAPSプッシュ

IDの拡張データを更新してください。

・ 本APIでは、IMAPSプッシュIDを新規に登録できません。新規登録の詳細は、6.5 クライアントのアプリケーションの開発を参照し

てください。

A.5.2 レスポンス

ステータスコード

表A.1 APIが返却するステータスコードを参照してください。

- 163 -

Page 176: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

ヘッダー

Content-Type: application/json; charset=UTF-8

ボディ

以下の形式です。

{

"response": {

"code": "ステータスコード",

"message": "メッセージ"

}

}

変数名 説明 型

response レスポンス -

code ステータスコード int

message メッセージ String

A.5.3 使用例

登録ID(qPudDDVCLfYuD6FoouRVJpi)、アプリケーション名(appName001)の拡張データを、"extData001"に更新する場合

http(s)://(server):(port)/pushidmng/fjpRegID

{

"appName":"appName001",

"regID":"qPudDDVCLfYuD6FoouRVJpi",

"extData":"extData001"

}

レスポンス例

{

"response":

{

"code":"200",

"message":""

}

}

A.6 APNsのデバイストークン登録、更新

本APIでは、初めて指定するAPNsのデバイストークンの場合は登録し、登録済の場合は更新します。

更新では、登録済のAPNsのデバイストークン、サンドボックス、アプリケーション名を条件として、拡張データを更新します。

A.6.1 リクエスト

メソッド

POST

機能パス

/apnsRegID

引数

なし

ヘッダー

Content-Type: application/json; charset=UTF-8

- 164 -

Page 177: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

ボディ

以下の形式です。

{

"deviceToken":"デバイストークン",

"appName":"APNsのアプリケーション名",

"sandboxFlag":"サンドボックス",

"extData":"拡張データ"

}

変数名 説明 省略 型 指定値、または例

deviceToken APNsのデバイストークン 不可 String

appName APNsのアプリケーション名 不可 String ・ 文字種:半角英数字+記号

・ 大サイズ:1024byte

sandboxFlag サンドボックス 可 boolean ・ デフォルト:false

true:sandbox版

false:release版

extData 拡張データ 可 String ・ 文字種:半角英数字+記号

・ 大サイズ:1024byte

注意

業務サーバのデータベースで管理しているIDを拡張データとして登録している場合、業務データベースと同時にIMAPSプッシュIDの拡張データを更新してください。

A.6.2 レスポンス

ステータスコード

表A.1 APIが返却するステータスコードを参照してください。

ヘッダー

Content-Type: application/json; charset=UTF-8

ボディ

以下の形式です。

{

"response": {

"code": "ステータスコード",

"message": "メッセージ"

}

}

変数名 説明 型

response レスポンス -

code ステータスコード int

message メッセージ String

A.6.3 使用例

release版のデバイストークン (9983cd8368330cf800620350d609925153d43119f5e4d607fea362356e11668a)、アプリケーション名

(appName002)の拡張データを、"extData002"に更新する場合

- 165 -

Page 178: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

http(s)://(server):(port)/pushidmng/apnsRegID

{

"appName":"appName002",

"deviceToken":"9983cd8368330cf800620350d609925153d43119f5e4d607fea362356e11668a",

"extData":"extData002"

}

レスポンス例

{

"response":

{

"code":"201",

"message":""

}

}

A.7 GCMのregistrationID登録、更新

本APIでは、初めて指定するGCMのregistrationIDの場合は登録し、登録済の場合は更新します。

更新では、登録済のGCMのregistrationID、アプリケーション名を条件として、拡張データを更新します。

A.7.1 リクエスト

メソッド

POST

機能パス

/gcmRegID

引数

なし

ヘッダー

Content-Type: application/json; charset=UTF-8

ボディ

以下の形式です。

{

"registrationID":"レジストレーションID",

"appName":"GCMのアプリケーション名",

"extData":"拡張データ"

}

変数名 説明 省略 型 指定値、または例

registrationID GCMのレジストレーションID 不可 String

appName GCMのアプリケーション名 不可 String ・ 文字種:半角英数字+記号

・ 大サイズ:1024byte

extData 拡張データ 可 String ・ 文字種:半角英数字+記号

・ 大サイズ:1024byte

注意

業務サーバのデータベースで管理しているIDを拡張データとして登録している場合、業務データベースと同時にIMAPSプッシュIDの拡張データを更新してください。

- 166 -

Page 179: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

A.7.2 レスポンス

ステータスコード

表A.1 APIが返却するステータスコードを参照してください。

ヘッダー

Content-Type: application/json; charset=UTF-8

ボディ

以下の形式です。

{

"response": {

"code": "ステータスコード",

"message": "メッセージ"

}

}

変数名 説明 型

response レスポンス -

code ステータスコード int

message メッセージ String

A.7.3 使用例

registrationID(registrationID001)、アプリケーション名(appName003)の拡張データを、"extData003"に更新する場合

http(s)://(server):(port)/pushidmng/gcmRegID

{

"appName":"appName003",

"registrationID":"registrationID001",

"extData":"extData003"

}

レスポンス例

{

"response":

{

"code":"201",

"message":""

}

}

A.8 WNSのチャネルURI登録、更新

本APIでは、初めて指定するWNSのチャネルURIの場合は登録し、登録済の場合は更新します。

更新では、登録済のWNSのチャネルURI、アプリケーション名を条件として、拡張データを更新します。

A.8.1 リクエスト

メソッド

POST

機能パス

/wnsRegID

- 167 -

Page 180: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

引数

なし

ヘッダー

Content-Type: application/json; charset=UTF-8

ボディ

以下の形式です。

{

"channelUri":"チャネルURI",

"appName":"アプリケーション名",

"extData":"拡張データ"

}

変数名 説明 省略 型 指定値、または例

channelUri チャネルURI 不可 String 大2048文字

appName WNSのアプリケーション名 不可 String ・ 文字種:半角英数字+記号

・ 大サイズ:1024byte

extData 拡張データ 可 String ・ 文字種:半角英数字+記号

・ 大サイズ:1024byte

注意

業務サーバのデータベースで管理しているIDを拡張データとして登録している場合、業務データベースと同時にIMAPSプッシュIDの拡張データを更新してください。

A.8.2 レスポンス

ステータスコード

表A.1 APIが返却するステータスコードを参照してください。

ヘッダー

Content-Type: application/json; charset=UTF-8

ボディ

以下の形式です。

{

"response": {

"code": "コード",

"message": "メッセージ"

}

}

変数名 説明 型

response レスポンス String ASCII

code コード int

message メッセージ String ASCII

A.8.3 使用例

新規にWNSの情報を登録する場合

- 168 -

Page 181: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

https://(server):(port)/pushidreg/wnsRegID

{

"channelUri":"https://sin.notify.windows.com/?token=1234567890",

"appName":"app001"

}

レスポンス例

{

"response":

{

"code":"200",

"message":""

}

}

A.9 共通メッセージの送信

指定した宛先に共通のメッセージを送信します。

A.9.1 リクエスト

メソッド

POST

機能パス

/notifyCommon

引数

なし

ヘッダー

Content-Type: application/json; charset=UTF-8

ボディ

以下の形式です。

{

"message":"メッセージ",

"replace":{"置換変数名":"置換文字列",…}(JSON形式),

"templateFile":"テンプレートファイル名",

"messageOptions":メッセージオプション(JSON形式),

"regIDs":["登録ID",...],

"extData":["拡張データ",...]

}

変数名 説明 省略 型 指定値、または例

message 送信する共通のメッセージ 可 String ・ replaceを使用する場合の例

"message":"%%name%%さん、%%age%%歳の誕生日おめでとうございます"

・ %%は文字列として使用不可

・ 「\」を表記するときは「\\」と指定

・ テンプレートファイルのmessageも同時指定

した際は、当指定値が優先して設定される

replace ・ 置換変数名:置換文字列の

JSON形式で指定

可 String ・ {"name":"富士通太郎","age":"30"}

- 169 -

Page 182: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

変数名 説明 省略 型 指定値、または例

・ message内の「%%」で囲まれた

文字列(置換変数名)を、置換文

字列に置き換える

・ messageで「%%」で囲まれた文字列がある

場合は省略不可

templateFile テンプレートファイル名 可 String ・ 定義ファイル(impush.properties)のテンプ

レートファイルの格納先ディレクトリ

(fj_push_template_file_dir)に格納されてい

るファイルが対象

・ ファイルが存在しない場合はエラー

・ テンプレートファイルの記述内容は、6.6.1.1テンプレートファイルを指定を参照

messageOptions 送信メッセージのオプション 可 String ・ GCM,APNs,FJP,WNSのメッセージに関す

るオプションを指定

・ 指定可能なオプションは、6.6.1.2messageOptionsを指定を参照

regIDs メッセージ送信先として登録IDをリ

ストで指定

・ IMAPSプッシュの場合、IMAPSプッシュID

・ APNsの場合、デバイストークン

・ GCMの場合、registrationID

・ WNSの場合、チャネルURI

可 Stringの配

・ 大件数:定義ファイル(impush.properties)の同時指定可能な 大登録ID数

(fj_push_max_num_for_address)

・ extDataと排他

extData メッセージ送信先として拡張データ

をリストで指定

可 Stringの配

・ 大件数:定義ファイル(impush.properties)の同時指定可能な 大登録ID数

(fj_push_max_num_for_address)

・ regIDsと排他

注意

・ FJP,APNs,WNSは1件ごと(シリアル)に情報送信を行うため時間がかかります。APNs経由でメッセージを送信する時は、1件送

信するごとにインターバルを設定するため、GCMやFJPと比べると特に時間がかかります。

・ APNsにメッセージ送信する際は、フィードバック情報も取得し、ログに出力します。

・ regIDsに同じ登録IDを複数件指定した場合、対象の登録IDを1件指定した場合と同じ動作になります。

・ スマートデバイスからプッシュ基盤サーバへの初回の接続前には、メッセージ送信を行ってもメッセージの受信、蓄積は行われ

ませんが、レスポンスはメッセージ送信成功が返ります。

・ 大登録ID数(fj_push_max_num_for_address)の 大値(1000件)より多くの登録IDに送信したい場合は、呼び出し元でメッセ

ージの送信APIを繰り返すことになります。

・ リクエストボディにregIDsを指定した場合、レスポンスのextDataは空文字が返ります。

・ リクエストボディにextDataを指定した場合、レスポンスはextDataとそれに紐付くregID情報が返ります。

・ extDataに同じ拡張データを複数件指定した場合、対象の拡張データを1件指定した場合と同じ動作になります。

・ リクエストボディにextDataを指定した場合、指定したextData、またはextDataに紐付く登録IDの件数の合計が定義ファイル

(impush.properties)の 大登録ID数(fj_push_max_num_for_address)の値を超えるとエラーとなります。

・ msgIDは、responseのcodeが200の場合で、かつsuccessが1件以上ある場合にメッセージIDが返されます。条件を満たさない場

合は空文字が返されます。

・ msgIDの情報が送信メッセージに付加されるため、既読機能を使用する場合は送信可能メッセージサイズが72Byte少なくなり

ます。

- 170 -

Page 183: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

・ メッセージサイズの上限チェックはmessageおよびreplace、messageOptions、テンプレートファイルで指定した情報に基づいて生

成されたPayload情報が対象となります。上限を超えた場合はエラーとなります。 上限値については下記のとおりです。

- FJP: 4096byte (FJPのPayloadがチェック対象となります)

- APNs: 2048byte (APNsのPayloadがチェック対象となります)

- GCM: 4096byte (GCMのPayloadのうち"data"部分がチェック対象となります)

- WNS: 5119byte (WNSのPayloadがチェック対象となります)

・ messageOptionsで指定する型が異なっている場合、エラーとなり、1件もメッセージを送信されません。指定可能な型は、6.6.1共通メッセージ送信アプリケーションの開発を参照してください。

・ messageOptionsで指定するキーが未定義の場合、指定した情報は処理されません(パラメータエラーとならずクライアントにも配

信されません)。指定可能な定義名は、6.6.1 共通メッセージ送信アプリケーションの開発を参照してください。

このため、プッシュのPayload仕様をユーザーアプリ側で拡張するような使い方はできません。

・ テンプレートファイルとmessageOptionsの両方に値が設定されている場合は、messageOptionsの値が優先されます。ただし、テ

ンプレートファイルに異なる型が指定されるとエラーとなります。

A.9.2 レスポンス

ステータスコード

表A.1 APIが返却するステータスコードを参照してください。

ヘッダー

Content-Type: application/json; charset=UTF-8

ボディ

以下の形式です。

{

"response": {

"code": "ステータスコード",

"message": "メッセージ"

}

"success": 成功数,

"failure": 失敗数,

"msgID":"メッセージID",

"responses": [

{

"regID": "登録ID",

"extData": "拡張データ",

"response": {

"code": "各登録IDのステータスコード",

"message": "各登録IDのメッセージ"

}

},

...

]

}

変数名 説明 型

response レスポンス -

code ステータスコード int

message メッセージ String

success 成功数 int

failure 失敗数 int

- 171 -

Page 184: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

変数名 説明 型

msgID メッセージID String

responses 送信結果 配列

regID 登録ID String

extData 拡張データ String

response レスポンス -

code 各登録IDのステータスコード int

message 各登録IDのメッセージ String

各登録IDのステータスコードについて

返却するステータスコードは以下のとおりです。○は返却される値です。

コード 意味(W3C) 本APIでの意味 IMAPSプッシュ APNs GCM WNS

200 OK 処理成功 ○ ○ ○ ○

400 Bad Request リクエスト違反 ○ ○ ○ ○

404 Not Found リソースがない ○ ○ ○ ○

500 Internal ServerError

そのほかのエラー ○ ○ ○ ○

メッセージの内容は以下のとおりです。

コードが200番台:空文字

コードが200番台以外:プッシュのエラーコード、メッセージ

メッセージが最大サイズを超えた場合の振る舞い

定義ファイル情報(impush.properties)のfj_push_message_fail_send_exitのステータスがtrueの場合、送信メッセージの形式に誤り

があると指定した登録IDへ1件もメッセージを送りません。falseの場合は、送信可能な登録IDへはメッセージを送ります。

APNs、GCM、WNSへの送信に失敗した場合

・ APNsへのメッセージ送信に失敗した場合は、APNsの公式サイトやマニュアルを確認してください。

・ GCMへのメッセージ送信に失敗した場合は、GCMの公式サイトやマニュアルを確認してください。

・ WNSへのメッセージ送信に失敗した場合は、WNSの公式サイトやマニュアルを確認してください。

リクエストの内容に問題があった場合の振る舞い

以下の場合、レスポンスで返ってくるsuccess,failureそれぞれの値は0となります。

・ リクエストのボディやFJP,APNs,GCM,WNSの送信メッセージがJSON形式でない場合

・ リクエストのボディにregIDsの変数名が存在しない又は宛先数が0件の場合

A.9.3 使用例

使用する登録ID、拡張データの一覧表

プッシュ種別 登録ID 拡張データ

IMAPSプッシュ fjpRegID001 fjpExtData001

APNs abc001 apnsExtData001

GCM gcmRegID001 gcmExtData001

GCM gcmRegID002 gcmExtData00

GCM gcmRegID003 gcmExtData00

WNS wnsRegID001 wnsExtData001

- 172 -

Page 185: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

使用するテンプレートファイルの内容

message=%%replace%%message

gcm_collapse_key=abcde

gcm_time_to_live=10000

gcm_delay_while_idle=false

gcm_title=default_title

apns_sound=bingbong.aiff

apns_badge=1

fjp_action= http://example.com/

例1-1) IMAPSプッシュの登録ID(fjpRegID001)、APNsの登録ID(abc001)、GCM(gcmRegID001)、WNS(wndRegID001)にテンプレー

トファイル名を指定して同一のメッセージを送信する場合

http(s)://(server):(port)/pushidmng/notifyCommon

{

"message":"メッセージ001",

"templateFile":"exampleTmp.template",

"regIDs":["fjpRegID001","abc001","gcmRegID001","wnsRegID001"]

}

例1-2) 実際に送信されるメッセージ情報

- IMAPSプッシュ

{

"message":"メッセージ001",

"action":"http://example.com/"

}

- APNs

{

"aps":{

"alert":{

"body":"メッセージ001"

},

"sound":"bingbong.aiff",

"badge":1

}

}

- GCM

{

"collapse_key":"abcde",

"time_to_live":10000,

"delay_while_idle":"false",

"data":{

"title":"default_title"

"message":"メッセージ001"

},

"registration_ids":["gcmRegID001"]

}

- WNS

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<wns>

<toast>

<visual>

<binding template="ToastText01">

<text id="1">メッセージ001</text>

</binding>

</visual>

</toast>

</wns>

- 173 -

Page 186: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

例1-3) レスポンス例

{

"response": {"code": "200", "message": ""},

"success": 4,

"failure": 0,

"msgID":"ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad",

"responses": [

{ "regID":"fjpRegID001","extData":"","response": {"code": "200", "message": ""}},

{ "regID":"abc001","extData":"","response": {"code": "200", "message": ""}},

{ "regID":"gcmRegID001","extData":"","response": {"code": "200", "message": ""}},

{ "regID": "wnsRegID001","response": {"code": 200, "message": ""}},

]

}

例2-1) IMAPSプッシュの拡張データ(fjpExtData001)、APNsの拡張データ(apnsExtData001)、GCMの拡張データ(gcmExtData001)、

WNSの拡張データ(wnsExtData001)にメッセージを送信し、messageOptionsも合わせて指定する場合

http(s)://(server):(port)/pushidmng/notifyCommon

{

"message":"メッセージ002",

"messageOptions":{

"gcm_title":"タイトル002",

"apns_action":"http://example.com/",

"apns_badge":5

},

"extData":["fjpExtData001","apnsExtData001","gcmExtData001","wnsExtData001"]

}

例2-2) 実際に送信されるメッセージ情報

- IMAPSプッシュ

{

"message":"メッセージ002"

}

- APNs

{

"aps":{

"alert":{

"body":"メッセージ002"

},

"badge":5

},

"action":"http://example.com/"

}

- GCM

{

"data":{

"title":"タイトル002",

"message":"メッセージ002"

},

"registration_ids":["gcmRegID001"]

}

- WNS

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<wns>

<toast>

<visual>

<binding template="ToastText01">

<text id="1">メッセージ002</text>

</binding>

- 174 -

Page 187: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

</visual>

</toast>

</wns>

例2-3) レスポンス例

{

"response": {"code": "200", "message": ""},

"success": 4,

"failure": 0,

"msgID":"ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad",

"responses": [

{ "regID":"fjpRegID001","extData":"fjpExtData001","response": {"code": "200", "message": ""}},

{ "regID":"abc001","extData":"apnsExtData001","response": {"code": "200", "message": ""}},

{ "regID":"gcmRegID001","extData":"gcmExtData001","response": {"code": "200", "message": ""}},

{ "regID":"wnsRegID001","extData":"wnsExtData001","response": {"code": "200", "message": ""}}

]

}

例3-1) IMAPSプッシュの登録ID(fjpRegID001)、APNsの登録ID(abc001)、GCM(gcmRegID001)、WNS(wnsRegID001)にテンプレー

トファイルを指定し、置換文字列を指定してメッセージを送信する場合

http(s)://(server):(port)/pushidmng/notifyCommon

{

"message":"%%replaceStr%%メッセージ003",

"replace":{"replaceStr":"ExampleMsg"},

"templateFile":" exampleTmp.template ",

"regIDs":["fjpRegID001","abc001","gcmRegID001","wnsRegID001"]

}

例3-2) 実際に送信されるメッセージ情報

- IMAPSプッシュ

{

"message":"ExampleMsgメッセージ003",

"action":"http://example.com/"

}

- APNs

{

"aps":{

"alert":{

"body":"ExampleMsgメッセージ003"

},

"sound":"bingbong.aiff",

"badge":1

}

}

- GCM

{

"collapse_key":"abcde",

"time_to_live":10000,

"delay_while_idle":"false",

"data":{

"title":"default_title"

"message":"ExampleMsgメッセージ003"

},

"registration_ids":["gcmRegID001"]

}

- WNS

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<wns>

- 175 -

Page 188: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

<toast>

<visual>

<binding template="ToastText01">

<text id="1">ExampleMsgメッセージ003</text>

</binding>

</visual>

</toast>

</wns>

例3-3) レスポンス例

{

"response": {"code": "200", "message": ""},

"success": 4,

"failure": 0,

"msgID":"ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad",

"responses": [

{ "regID":"fjpRegID001","extData":"","response": {"code": "200", "message": ""}},

{ "regID":"abc001","extData":"","response": {"code": "200", "message": ""}},

{ "regID":"gcmRegID001","extData":"","response": {"code": "200", "message": ""}},

{ "regID":"wnsRegID001","extData":"","response": {"code": "200", "message": ""}}

]

}

A.10 蓄積メッセージ参照

サーバに蓄積しているメッセージを参照します。メッセージ送信APIを使用してクライアント端末にメッセージを通知する場合、端末が

未接続の状態だとプッシュサーバにメッセージが蓄積します。

A.10.1 リクエスト

メソッド

GET

機能パス

/refSvrMsg

引数

変数名 説明 省略 型 指定値、または例

regID 登録ID 可 String 省略:蓄積されたすべてのメッセージを取得

detailFlag 詳細フラグ 可 boolean ・ デフォルト:false

true:メッセージ内容を出力する

false:メッセージ内容を出力しない

・ regID指定時だけ有効

ヘッダー

Content-Type: application/json; charset=UTF-8

ボディ

なし

注意

・ 登録IDを指定しない場合は、detailFlagを指定できません。指定した場合はエラーになります。

- 176 -

Page 189: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

・ regIDで空文字、プッシュ基盤サーバに存在しないIMAPSプッシュID、有効期限が切れたIMAPSプッシュIDを指定した場合はエ

ラーになります。

A.10.2 レスポンス

ステータスコード

表A.1 APIが返却するステータスコードを参照してください。

ヘッダー

Content-Type: application/json; charset=UTF-8

ボディ

以下の形式です。

{

"response": {

"code": "ステータスコード",

"message": "メッセージ"

},

"regIDs":

[

{

"regID": "登録ID",

"count": "蓄積数",

"messages": [

{"message":送信メッセージ(JSON形式),"timestamp":"送信日時"}

{"message":送信メッセージ(JSON形式),"timestamp":"送信日時"}

]

},

{

"regID": "登録ID",

"count": "蓄積数",

"messages": [

{"message":送信メッセージ(JSON形式),"timestamp":"送信日時"}

{"message":送信メッセージ(JSON形式),"timestamp":"送信日時"}

]

},

...

]

}

変数名 説明 型

response レスポンス -

code ステータスコード int

message メッセージ String

regIDs 登録IDのリスト 配列

regID 登録ID String

count 蓄積数 int

messages メッセージ内容のリスト 配列

message メッセージ内容 String

timestamp 送信日時 timestamp

- 177 -

Page 190: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

注意

・ 蓄積メッセージの一覧取得(regIDを指定しない場合)は、未接続のIMAPSプッシュIDの情報が取得できます。プッシュ基盤サー

バに接続しているIMAPSプッシュIDの情報は取得できません。

・ メッセージが蓄積していない登録IDもレスポンス対象であり、蓄積数が0("count":0)として返ります。

A.10.3 使用例

それぞれの登録IDに、以下の蓄積メッセージがあるとした場合の例です。

登録ID regID001

蓄積メッセージ {"title":"title_A","message":"regID001_message_A"}{"title":"title_B","message":"regID001_message_B"}

登録ID regID002

蓄積メッセージ {"title":"title_C","message":"regID002_message_C"}

登録ID(regID001)の蓄積しているメッセージ内容を含めた情報を参照する場合

https://(server):(port)/pushidmng/refSvrMsg?regID=regID001&detailFlag=true

レスポンス例

{"response":{"code":"200","message":""},"regIDs":[{"regID":"regID001","count":"2","messages":[

{"message":{"title":"title_A","message":"regID001_message_A"},"timestamp":"2014-04-15T08:53:39+09:00"},

{"message":{"title":"title_B","message":"regID001_message_B"},"timestamp":"2014-04-15T08:55:59+09:00"}]}]}

メッセージが蓄積しているすべての登録IDについて、蓄積メッセージ件数だけ取得したい場合

https://(server):(port)/pushidmng/refSvrMsg

レスポンス例

{"response":{"code":"200","message":""},"regIDs":[{"regID":"regID001","count":"2","messages":[]},

{"regID":"regID002","count":"1","messages":[]}]}

A.11 メッセージIDからのメッセージ情報の取得

メッセージIDが示すメッセージ情報を取得します。

A.11.1 リクエスト

メソッド

POST

機能パス

/getMsgByMsgID

引数

なし

ヘッダー

Content-Type: application/json; charset=UTF-8

ボディ

以下の形式です。

- 178 -

Page 191: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

{

"msgID":"メッセージID",

"getReadKind":"未読/既読の取得方法",

"getReqFlag":"送信リクエストボディの取得有無",

"getExtFlag":"拡張データの取得有無"

}

変数名 説明 省略 型 指定値、または例

msgID メッセージID 不可 String 64byte固定

半角英数字+記号

getReadKind 未読/既読の取得方法 可 String デフォルト値:"unread"

"unread":未読だけ取得

"read":既読だけ取得

"all":未読+既読の取得

getReqFlag 送信リクエストボディの取得有無 可 boolean デフォルト値:false

true:取得する

false:取得しない

getExtFlag 拡張データの取得有無 可 boolean デフォルト値:false

true:拡張データも取得

false:登録IDだけ取得

注意

・ リクエストのボディに指定されたメッセージIDがプッシュデータベースに存在しない場合でも、レスポンスとして処理成功(ステー

タスコードが200)を返します。この場合、dataCountはすべて0、sendRequest、unreadRegIDs、readRegIDsは、すべて空文字に

なります。

・ 定義ファイル(impush.properties)の既読機能の設定(fj_push_read_mode)に既読機能を全て利用する(all)以外が指定されてい

る状態で、リクエストのボディに指定された“送信リクエストボディの取得有無”が“true”だった場合、パラメタエラーとなります。

A.11.2 レスポンス

ステータスコード

表A.1 APIが返却するステータスコードを参照してください。

ヘッダー

Content-Type: application/json; charset=UTF-8

ボディ

以下の形式です。

{

"response": {

"code": "ステータス",

"message": "メッセージ"

},

"refCount": {

"unreadCount": "未読件数",

"readCount": "既読件数"

},

"sendRequest": {

以下の2つのAPIで指定されたリクエストボディの内容

(注:リクエストボディに含まれる登録IDと拡張データは除く)

- 179 -

Page 192: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

・メッセージ送信API(/notify)

・共通メッセージ送信API(/notifyCommon)

  },

"unreadRegIDs": [

{

"regID": "登録ID",

"extData": "拡張データ"

},

{

"regID": "登録ID",

"extData": "拡張データ"

},

    ・・・

],

"readRegIDs": [

{

"regID": "登録ID",

"extData": "拡張データ"

},

{

"regID": "登録ID",

"extData": "拡張データ"

},

    ・・・

]

}

変数名 説明 型

response レスポンス -

code ステータスコード int

message メッセージ String

refCount 未読/既読内訳件数 -

unreadCount 未読件数 int

readCount 既読件数 int

sendRequest メッセージ送信時のリクエストボディ情報 JSON

unreadRegIDs 未読状態のメッセージがある登録IDのリスト 配列

regID 未読状態の登録ID String

extData 未読状態の拡張データ String

readRegIDs 既読状態のメッセージがある登録IDのリスト 配列

regID 未読状態の登録ID String

extData 既読状態の拡張データ String

A.11.3 使用例

例1-1) メッセージID"ba7816bf8f ・・・ 61f20015ad"(実際は64byte)に紐付いている未読状態のメッセージが存在する登録IDだけを取

得する場合

http(s)://(server):(port)/pushidmng/getMsgByMsgID

{

"msgID":"ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad"

}

例1-2) レスポンス例

- 180 -

Page 193: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

{

"response":{

"code":200,

"message":""

},

"refCount":{

"unreadCount":15,

"readCount":0

},

"sendRequest":{

},

"unreadRegIDs":[

{"regID":"FJP_1234567890","extData":""},

{"regID":"APNs_1234567890","extData":""},

{"regID":"GCM_1234567890","extData":""},

{"regID":"WNS_1234567890","extData":""}

    :

],

"readRegIDs":[

]

}

例2-1) メッセージID"ba7816bf8f ・・・ 61f20015ad"(実際は64byte)に紐付いている未読状態と既読状態のメッセージが存在する登録

IDと拡張データとリクエストボディを取得する場合

http(s)://(server):(port)/pushidmng/getMsgByMsgID

{

"msgID":"ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad",

"getReadKind":"all",

"getReqFlag":"true",

"getExtFlag":"true"

}

例2-2) レスポンス例

{

"response":{

"code":"200",

"message":""

},

"refCount":{

"unreadCount":15,

"readCount":12

},

"sendRequest":{

"message":"メッセージ002",

"messageOptions":{

"fjp_title":"タイトル002",

"gcm_title":"タイトル002",

"apns_action":"http://example.com/",

"apns_badge":2,

"wns_toast_launch":"http://example.com/",

"wns_badge_value":"10",

"wns_tile_visual_version":2,

}

},

"unreadRegIDs":[

{"regID":"FJP_1234567890","extData":"FJP_ExtData001"},

{"regID":"APNs_1234567890","extData":"APNs_ExtData001"},

{"regID":"GCM_1234567890","extData":"GCM_ExtData001"},

{"regID":"WNS_1234567890","extData":"WNS_ExtData001"},

    :

],

- 181 -

Page 194: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

"readRegIDs":[

{"regID":"FJP_9876543210","extData":"FJP_ExtData009"},

{"regID":"APNs_9876543210","extData":"APNs_ExtData009"},

{"regID":"GCM_9876543210","extData":"GCM_ExtData009"},

{"regID":"WNS_9876543210","extData":"WNS_ExtData009"},

     :

]

}

A.12 登録IDからのメッセージ情報の取得

登録IDが示すメッセージ情報を取得します。

A.12.1 リクエスト

メソッド

POST

機能パス

/getMsgByRegID

引数

なし

ヘッダー

Content-Type: application/json; charset=UTF-8

ボディ

以下の形式です。

{

"regID":"登録ID",

"startDate":"取得対象開始日",

"endDate":"取得対象終了日",

"getReadKind":"未読/既読の取得方法",

"getReqFlag":"送信リクエストボディの取得有無"

}

変数名 説明 省略 型 指定値、または例

regID 登録ID 不可 String 大4096byte

半角英数字+記号

startDate 取得対象開始日 可 String "YYYY-MM-DD"の形式で指定する。

指定が省略された場合、現在のシステム日付

とする。

endDate 取得対象終了日 可 String "YYYY-MM-DD"の形式で指定する。

指定が省略された場合、現在のシステム日付

とする。

getReadKind 未読/既読の取得方法 可 String デフォルト値:"unread"

"unread":未読だけ取得

"read":既読だけ取得

"all":未読+既読の取得

getReqFlag 送信リクエストボディの取得有無 可 boolean デフォルト値:false

true:取得する

- 182 -

Page 195: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

変数名 説明 省略 型 指定値、または例

false:取得しない

注意

・ リクエストのボディに指定された登録IDがプッシュデータベースに存在しない場合でも、レスポンスとして処理成功(ステータス

コードが200)を返します。

・ 定義ファイル(impush.properties)の既読機能の設定(fj_push_read_mode)に既読機能を全て利用する(all)以外が指定されてい

る状態で、リクエストのボディに指定された“送信リクエストボディの取得有無”が“true”だった場合、パラメタエラーとなります。

A.12.2 レスポンス

ステータスコード

表A.1 APIが返却するステータスコードを参照してください。

ヘッダー

Content-Type: application/json; charset=UTF-8

ボディ

以下の形式です。

{

"response": {

"code": "ステータス",

"message": "メッセージ"

},

"refCount": {

"unreadCount": "未読件数",

"readCount": "既読件数"

},

"unreadMsgs": [

{

"msgID":"メッセージID",

"refDate": {

"requestDate":"送信日時",

"readDate":""

},

"sendRequest":{

以下の2つのAPIで指定された既読状態のリクエストボディの内容

(注:リクエストボディに含まれる登録IDと拡張データは除く)

・メッセージ送信API(/notify)

・共通メッセージ送信API(/notifyCommon)

}

},

  :

],

"readMsgs": [

{

"msgID":"メッセージID",

"refDate": {

"requestDate":"送信日時",

"readDate":"既読日時"

},

"sendRequest":{

以下の2つのAPIで指定された既読状態のリクエストボディの内容

(注:リクエストボディに含まれる登録IDと拡張データは除く)

・メッセージ送信API(/notify)

・共通メッセージ送信API(/notifyCommon)

}

- 183 -

Page 196: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

},

  :

]

}

変数名 説明 型

response レスポンス -

code ステータスコード int

message メッセージ String

refCount 未読/既読内訳件数 -

unreadCount 未読件数 int

readCount 既読件数 int

unreadMsgs 未読状態のメッセージ情報のリスト 配列

msgID 未読状態のメッセージID String

refDate メッセージの送信日時と既読日時 -

requestDate 送信日時 timestamp

readDate 何もセットしない。

sendRequest メッセージ送信時のリクエストボディ情報 JSON

readMsgs 既読状態のメッセージ情報のリスト 配列

msgID 既読状態のメッセージID String

refDate メッセージの送信日時と既読日時 -

requestDate 送信日時 timestamp

readDate 既読日時 timestamp

sendRequest メッセージ送信時のリクエストボディ情報 -

A.12.3 使用例

例1-1) 登録ID"reg12345678901234567890"に送信した全てのメッセージの中から、現在のシステム日付に送信したメッセージで未読

状態のメッセージIDと件数を取得する場合

http(s)://(server):(port)/pushidmng/getMsgByRegID

{

"reqID":"reg12345678901234567890"

}

例1-2) レスポンス例

{

"response":{

"code":200,

"message":""

},

"refCount":{

"unreadCount":15,

"readCount":"0"

},

"unreadMsgs":[

{

"msgID":"ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad",

"refDate":{

"requestDate":"2015-01-26T12:18:51+09:00",

"readDate":""

},

- 184 -

Page 197: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

"sendRequest": {}

},

{

"msgID":"f8baba140414ad1dee225da2967f01c816fe177a9cb410ff3b01af0363615200",

"refDate":{

"requestDate":"2015-01-26T14:28:46+09:00",

"readDate":""

},

"sendRequest": {}

},

],

"readMsgs":[

]

}

例2-1) 登録ID"reg12345678901234567890"に送信した全てのメッセージの中から、2015年1月27日~現在のシステム日付の期間に送

信したメッセージで、未読状態と既読状態のメッセージID、件数、リクエストボディの情報を取得する場合

http(s)://(server):(port)/pushidmng/getMsgByRegID

{

"regID":"reg12345678901234567890",

"startDate":"2015-01-27",

"getReadKind":"all",

"getReqFlag":"true"

}

例2-2) レスポンス例

{

"response":{

"code":200,

"message":""

},

"refCount":{

"unreadCount":4,

"readCount":13

},

"unreadMsgs":[

{

"msgID":"ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad",

"refDate":{

"requestDate":"2015-01-27T04:18:46+09:00",

"readDate":""

},

"sendRequest": {

"message":"メッセージ001",

"messageOptions":{

"fjp_title":"タイトル001",

"gcm_title":"タイトル001",

"apns_action":"http://example.com/",

"apns_badge":1

"wns_toast_launch":"http://example.com/",

"wns_badge_value":"10",

"wns_tile_visual_version":2,

}

}

},

{

"msgID":"96177a9c1d78161cfbf8f04140de5daea41e23ff661223b015ad0a3b4101f200",

"refDate":{

"requestDate":"2015-01-28T12:27:35+09:00",

"readDate":""

},

- 185 -

Page 198: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

"sendRequest": {

"FJP":{"message":"fjp_message002"},

"APNs":{"aps":{"alert":"aps_message002","sound":"bingbong.aiff","badge":2}},

"GCM":{"data":{"message":"gcm_message002"},"registration_ids":""}

"WNS":{"wns_toast_visual_binding":{"text":{"message":"wns_message002","lang":"ja-JP"}}}

}

},

],

"readMsgs":[

{

"msgID":"c1d78ea41e2a9cf16a19617740de5df663f1223b018f0bf4b4101f20015ad0a3",

"refDate":{

"requestDate":"2015-01-28T12:27:35+09:00",

"readDate":"2015-01-30T07:19:49+09:00"

},

"sendRequest": {

"FJP":{"message":"fjp_message003"},

"APNs":{"aps":{"alert":"aps_message003","sound":"bingbong.aiff","badge":3}},

"GCM":{"data":{"message":"gcm_message003"},"registration_ids":""}

"WNS":{"wns_toast_visual_binding":{"text":{"message":"wns_message003","lang":"ja-JP"}}}

}

},

{

"msgID":"ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad",

"refDate":{

"requestDate":"2015-01-28T14:38:41+09:00",

"readDate":"2015-01-29T09:20:51+09:00"

},

"sendRequest": {

"message":"メッセージ004",

"messageOptions":{

"fjp_title":"タイトル004",

"gcm_title":"タイトル004",

"apns_action":"http://example.com/",

"apns_badge":4

"wns_toast_launch":"http://example.com/",

"wns_badge_value":"10",

"wns_tile_visual_version":2,

}

}

},

]

}

A.13 既読件数の取得

送信済のメッセージの総件数と既読件数を取得します。

A.13.1 リクエスト

メソッド

POST

機能パス

/readCount

引数

なし

- 186 -

Page 199: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

ヘッダー

Content-Type: application/json; charset=UTF-8

ボディ

以下の形式です。

{

"pushKind":"プッシュ種別",

"appName":"アプリケーション名",

"startDate":"取得対象開始日",

"endDate":"取得対象終了日"

}

変数名 説明 省略 型 指定値、または例

pushKind プッシュ種別 可 String "APNs"、"GCM"、"FJP"、"WNS"

指定が省略された場合、全プッシュ種別を検

索対象とする。

appName アプリケーション名 可 String 大1024byte

半角英数字+記号

startDate 取得対象開始日 可 String "YYYY-MM-DD"の形式で指定する。

指定が省略された場合、現在のシステム日付

とする。

endDate 取得対象終了日 可 String "YYYY-MM-DD"の形式で指定する。

指定が省略された場合、現在のシステム日付

とする。

注意

・ リクエストのボディに指定された条件に合致するメッセージ情報が存在しない場合でも、レスポンスとして処理成功(ステータス

コードが200)を返します。

A.13.2 レスポンス

ステータスコード

表A.1 APIが返却するステータスコードを参照してください。

ヘッダー

Content-Type: application/json; charset=UTF-8

ボディ

以下の形式です。

{

"response":{

"code":"ステータスコード",

"message":"メッセージ"

},

"messageCount": {

{

"totalCount": "全件数",

"readCount": "既読件数"

}

}

}

- 187 -

Page 200: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

変数名 説明 型

response レスポンス -

code レスポンスコード int

message レスポンスメッセージ String

messageCount メッセージ件数 -

totalCount 全件数 int

readCount 既読件数 int

A.13.3 使用例

例1-1) 全てのプッシュ種別(APNs、GCM、FJP、WNS)でアプリケーション名が"app001"に紐付く登録IDに送信したメッセージの中で、

現在のシステム日付に送信されたメッセージの全件数と既読件数を取得する場合

http(s)://(server):(port)/pushidreg/readCount

{

"appName":"app001"

}

例1-2) レスポンス例

{

"response":{

"code":200,

"message":""

},

"messageCount":{

"totalCount":253,

"readCount":189

}

}

例2-1) プッシュ種別が"GCM"でアプリケーション名が"app001"に紐付く登録IDに送信したメッセージの中で、2015年3月1日から現在

のシステム日付の期間に送信されたメッセージの全件数と既読件数を取得する場合

http(s)://(server):(port)/pushidreg/readCount

{

"pushKind":"GCM",

"appName":"app001",

"startDate":"2015-03-01",

}

例2-2) レスポンス例

{

"response":{

"code":200,

"message":""

},

"messageCount":{

"totalCount":1876,

"readCount":1543

}

}

例3-1) 本日中に送信したメッセージの全件数と既読件数を取得する場合

http(s)://(server):(port)/pushidreg/readCount

{

}

- 188 -

Page 201: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

例3-2) レスポンス例

{

"response":{

"code":200,

"message":""

},

"messageCount":{

"totalCount":103,

"readCount":87

}

}

A.14 メッセージの送信(非推奨)

指定した宛先にメッセージを送信します。

注意

本APIは非推奨化されました。メッセージの送信を行う場合は、A.9 共通メッセージの送信 をご利用ください。

A.14.1 リクエスト

メソッド

POST

機能パス

/notify

引数

なし

ヘッダー

Content-Type: application/json; charset=UTF-8

ボディ

以下の形式です。

{

"FJP":送信メッセージ(JSON形式) ,

"APNs":送信メッセージ(JSON形式) ,

"GCM":送信メッセージ(JSON形式) ,

"regIDs":["登録ID",...],

"extData":["拡張データ",...]

}

プッシュ部品を利用している場合の送信メッセージの形式は、6.2 受信したメッセージの表示の各プッシュのPayload仕様を参照し

てください。

変数名 説明 省略 型 指定値、または例

FJP IMAPSプッシュに送信するメッセー

可 String 大サイズ:4096byte

APNs APNsに送信するメッセージ 可 String 大サイズ:2048byte

GCM GCMに送信するメッセージ 可 String 大サイズ:4096byte

regIDs メッセージ送信先として登録IDをリ

ストで指定

可 Stringの配

・ 大件数:定義ファイル(impush.properties)の同時指定可能な 大登録ID数

(fj_push_max_num_for_address)

- 189 -

Page 202: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

変数名 説明 省略 型 指定値、または例

・ IMAPSプッシュの場合、IMAPSプッシュID

・ APNsの場合、デバイストークン

・ GCMの場合、registrationID

・ extDataと排他

extData メッセージ送信先として拡張データ

をリストで指定

可 Stringの配

・ 大件数:定義ファイル(impush.properties)の同時指定可能な 大登録ID数

(fj_push_max_num_for_address)

・ regIDsと排他

注意

・ FJP,APNsは1件ごと(シリアル)情報送信を行うため時間がかかります。APNs経由でメッセージを送信する時は、1件送信するご

とにインターバルを設定するため、GCMやFJPと比べると特に時間がかかります。

・ APNsにメッセージ送信する際は、フィードバック情報も取得し、ログに出力します。

・ regIDsに同じ登録IDを複数件指定した場合、対象の登録IDを1件指定した場合と同じ動作になります。

・ GCMの場合、通常は、registrationIDはJSON形式のメッセージ内の"registration_ids"変数に指定しますが、本APIでは使用で

きません。GCM送信メッセージ内にあるregistration_IDsの要素は、空にするか、または要素を指定せず、登録IDはregIDs変数

に指定してください。

・ スマートデバイスからプッシュ基盤サーバへの初回の接続前は、メッセージ送信を行ってもメッセージの受信、蓄積は行われま

せんが、レスポンスはメッセージ送信成功が返ります。

・ 大登録ID数(fj_push_max_num_for_address)の 大値(1000件)より多くの登録IDに送信したい場合は、呼び出し元でメッセ

ージの送信APIを繰り返すことになります。

・ FJPのメッセージbyte数の上限チェックは、FJPの送信メッセージ部分が対象となります。

・ APNsのメッセージbyte数の上限チェックは、APNsの送信メッセージ部分が対象となります。

・ GCMメッセージ文字数の上限チェックは、送信メッセージの内の変数名"data"部分が対象となります。

・ リクエストボディにregIDsを指定した場合、レスポンスのextDataは空文字が返ります。

・ リクエストボディにextDataを指定した場合、レスポンスはextDataとそれに紐付くregID情報が返ります。

・ extDataに同じ拡張データを複数件指定した場合、対象の拡張データを1件指定した場合と同じ動作になります。

・ リクエストボディにextDataを指定した場合、指定したextData、またはextDataに紐付く登録IDの件数の合計が定義ファイル

(impush.properties)の 大登録ID数(fj_push_max_num_for_address)の値を超えるとエラーになります。

・ msgIDは、responseのcodeが200の場合で、かつsuccessが1件以上ある場合にメッセージIDが返されます。条件を満たさない場

合は空文字が返されます。

・ msgIDの情報が送信メッセージに付加されるため、既読機能を使用する場合は送信可能メッセージサイズが72Byte少なくなり

ます。

・ 本APIは、WNSへのメッセージ送信に対応しておりません。WNSへのメッセージ送信を行う場合はA.9 共通メッセージの送信

のAPIをご利用ください。

A.14.2 レスポンス

ステータスコード

表A.1 APIが返却するステータスコードを参照してください。

ヘッダー

Content-Type: application/json; charset=UTF-8

- 190 -

Page 203: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

ボディ

以下の形式です。

{

"response": {

"code": "ステータスコード",

"message": "メッセージ"

}

"success": 成功数,

"failure": 失敗数,

"msgID":"メッセージID",

"responses": [

{

"regID": "登録ID",

"extData": "拡張データ",

"response": {

"code": "各登録IDのステータスコード",

"message": "各登録IDのメッセージ"

}

},

...

]

}

変数名 説明 型

response レスポンス -

code ステータスコード int

message メッセージ String

success 成功数 int

failure 失敗数 int

responses 送信結果 配列

msgID メッセージID String

regID 登録ID String

extData 拡張データ String

response レスポンス -

code 各登録IDのステータスコード int

message 各登録IDのメッセージ String

各登録IDのステータスコードについて

返却するステータスコードは以下のとおりです。○は返却される値です。

コード 意味(W3C) 本APIでの意味 IMAPSプッシュ APNs GCM

200 OK 処理成功 ○ ○ ○

400 Bad Request リクエスト違反 ○ ○ ○

404 Not Found リソースがない ○ ○ ○

500 Internal ServerError

そのほかのエラー ○ ○ ○

メッセージの内容は以下のとおりです。

コードが200番台 :空文字

コードが200番台以外:プッシュのエラーコード、メッセージ

- 191 -

Page 204: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

メッセージが最大サイズを超えた場合の振る舞い

定義ファイル情報(impush.properties)のfj_push_message_fail_send_exitのステータスがtrueの場合、送信メッセージの形式に誤り

があると指定した登録IDへ1件もメッセージを送りません。falseの場合は、送信可能な登録IDへはメッセージを送ります。

APNs、GCMへの送信に失敗した場合

・ APNsへのメッセージ送信に失敗した場合は、APNsの公式サイトやマニュアルを確認してください。

・ GCMへのメッセージ送信に失敗した場合は、GCMの公式サイトやマニュアルを確認してください。

リクエストの内容に問題があった場合の振る舞い

以下の場合、レスポンスで返ってくるsuccess,failureそれぞれの値は0となります。

・ リクエストのボディやFJP,APNs,GCMの送信メッセージがJSON形式でない場合

・ リクエストのボディにregIDsの変数名が存在しない又は宛先数が0件の場合

A.14.3 使用例

例1) FJPの登録ID(reg12345678901234567890、reg1234567890123456789a)にメッセージを送信する場合

https://(server):(port)/pushidmng/notify

{"FJP":{"message":"test"},"regIDs":["reg12345678901234567890","reg1234567890123456789a"]}

例2) FJPの登録ID(FJP_12345678901234567890)、APNsの登録ID(APNs_1234567890123456789a)に別のメッセージを送信する場合

https://(server):(port)/pushidmng/notify

{

"FJP":{"message":"test"},

"APNs":{"aps":{"alert":"aps_message001","sound":"bingbong.aiff","badge":7}},

"regIDs":["FJP_12345678901234567890","APNs_1234567890123456789a"]

}

例3-1) FJP,APNs,GCMにメッセージを送信する場合

https://(server):(port)/pushidmng/notify

{

"FJP": {"message": "fjp_message001"},

"APNs": {"aps": {"alert": "aps_message001","sound": "bingbong.aiff","badge": 7}},

"GCM": {"data": {"message": "gcm_message001"}, "registration_ids":"" },

"regIDs":["FJP_regID_001","FJP_regID_002",

"APNs_regID_001","APNs_regID_002",

"GCM_regID_001","GCM_regID_002"]

}

例3-2) レスポンス例

{

"response": {"code": "200", "message": ""},

"success": 4,

"failure": 2,

"msgID":"ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad",

"responses": [

{ "regID": " FJP_regID_001","extData": "","response": {"code": "200", "message": ""}},

{ "regID": " FJP_regID_002","extData": "","response": {"code": "500", "message": "PUSH: 45299: An internal error

occurred."}},

{ "regID": " APNs_regID_001","extData": "","response": {"code": "200", "message": ""}},

{ "regID": " APNs_regID_002","extData": "","response": {"code": "200", "message": ""}},

{ "regID": " GCM_regID_001","extData": "","response": {"code": "200", "message": ""}},

{ "regID": " GCM_regID_002","extData": "","response": {"code": "400", "message": "PUSH: 45201: Incorrect parameter.

Param=regID cause=notExistDB"}}

]

}

例4-1) FJP,APNs,GCMにextDataを指定してメッセージを送信する場合

- 192 -

Page 205: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

https://(server):(port)/pushidmng/notify

{

"FJP": {"message": "fjp_message001"},

"APNs": {"aps": {"alert": "aps_message001","sound": "bingbong.aiff","badge": 7}},

"GCM": {"data": {"message": "gcm_message001"}, "registration_ids":"" },

"extData":["fjpExtData001","fjpExtData002",

"apnsExtData001","apnsExtData002",

"gcmExtData001","gcmExtData002"]

}

例4-2) レスポンス例

{

"response": {"code": "200", "message": ""},

"success": 4,

"failure": 2,

"msgID":"ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad",

"responses": [

{ "regID": " FJP_regID_001","extData": "fjpExtData001","response": {"code": "200", "message": ""}},

{ "regID": " FJP_regID_002","extData": "fjpExtData002","response": {"code": "500", "message": PUSH: 45299: An

internal error occurred."}},

{ "regID": " APNs_regID_001","extData": "apnsExtData001","response": {"code": "200", "message": ""}},

{ "regID": " APNs_regID_002","extData": "apnsExtData002","response": {"code": "400", "message": "PUSH: 45201:

Incorrect parameter. Param=regID cause=notExistDB"}},

{ "regID": " GCM_regID_001","extData": "gcmExtData001","response": {"code": "200", "message": ""}},

{ "regID": " GCM_regID_002","extData": "gcmExtData002","response": {"code": "200", "message": ""}}

]

}

- 193 -

Page 206: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

付録B プッシュ通知のクライアントアプリケーションのサンプル

注意

プッシュ通知のクライアントアプリケーションは、Android、iOS、Windowsに対応しています。

B.1 サンプルの概要

プッシュ通知を受け取るクライアントのサンプルとして、IMAPSプッシュ(Android)、GCM(Android)、APNs(iOS)、WNS(Windows)それ

ぞれのネイティブアプリケーションのプロジェクトを提供しています。

サンプルのプロジェクトは以下に格納されています。

IMAPSプッシュ

<DVD-ROMドライブ>\development\android\push\native_sample_imaps

GCM

<DVD-ROMドライブ>\development\android\push\native_sample_gcm

APNs

<DVD-ROMドライブ>\development\ios\push\native_sample_apns

WNS

<DVD-ROMドライブ>\development\windows\push\native_sample_wns

IMAPSプッシュ

<DVD-ROMマウントディレクトリ>/development/android/push/native_sample_imaps

GCM

<DVD-ROMマウントディレクトリ>/development/android/push/native_sample_gcm

APNs

<DVD-ROMマウントディレクトリ>/development/ios/push/native_sample_apns

WNS

<DVD-ROMマウントディレクトリ>/development/windows/push/native_sample_wns

このサンプルでは、IMAPSの認証API(オンライン認証)による情報を用いてIMAPSサーバと連携しています。

プッシュ通知機能を使用する場合の認証の設定は6.5.7 認証クラスの定義を、ネイティブアプリケーションのオンライン認証の詳細は、

Android版は3.3.3.2 ログイン、iOS版は3.4.4.2 ログイン、Windows版は3.5.3.2 ログインを参照してください。

ユーザーのID/パスワードの入力による認証のほか、管理情報を使用してアプリケーションを作成できます。管理情報は、Android版は

3.3.3.5 管理情報の設定、iOS版は3.4.4.5 管理情報の設定、Windows版は3.5.3.5 管理情報の設定を参照してください。

サンプルアプリケーションの処理の概要は、サンプルのソースコードのコメントを参照してください。

注意

プッシュメッセージを送信するためには、メッセージを送信するサーバアプリケーションやツールなどが別途必要です。

B.2 サンプルアプリの準備

- 194 -

Page 207: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

B.2.1 IMAPSプッシュ(Android)のサンプルを準備する

1. 3.3.1 開発環境の準備を参照し、開発環境を準備します。

2. IMAPSサーバ上のサンプルのプロジェクトを、開発端末上に配置します。

3. Android Studio で、既存プロジェクトとしてサンプルプロジェクトをインポートします。

4. 以下配下のmoduleを開発端末上に配置し、Android Studioのmoduleとしてインポートします。

プッシュ通知機能のmodule

<DVD-ROMドライブ>\development\android\push\native

<DVD-ROMマウントディレクトリ>/development/android/push/native

6.5.2 IMAPSプッシュ通知を利用するネイティブアプリケーションの開発を参考にしてください。

5. 以下のライブラリを、サンプルプロジェクトのlibsディレクトリ配下に格納します。

・ SLS API

・ imaps.jar

・ log4j-1.2.17.jar

・ httpmime-4.2.5.jar

第3章 ネイティブアプリケーションおよび3.3 Androidアプリケーションの開発を参考にしてください。

6. マニフェストファイルの設定値を確認します。

IMAPSプッシュ通知の利用に必要な設定は、1.マニフェストファイルの修正を参照してください。

また、認証機能に必要な設定として以下のパーミッションが必要です。

<uses-permission android:name="android.permission.INTERNET" />

※サンプルプロジェクトには設定済みです。

7. 接続先のIMAPSサーバのアドレスなどの設定を行います。

プロジェクト内の以下を設定します。

・ assets/imaps/properties/imaps.properties

imapsServerAddress=IMAPSサーバのアドレス:ポート

・ assets/push/properties/push.properties

push.ServerAddress=IMAPSサーバのアドレス:ポート

push.SelfCertificate=true

push.AuthClassName=com.fujitsu.imaps.plugin.push.PushExtAuthImpl

定義値については付録C クライアント設定ファイルおよび付録D プッシュクライアント設定ファイルを参照してください。

8. パッケージングします。開発環境のビルド方法に従ってください。

9. 配布します。

配布方法については、"運用ガイド"の"ハイブリッドアプリケーション/ネイティブアプリケーション"を参照してください。

B.2.2 GCM(Android)のサンプルを準備する

1. 3.3.1 開発環境の準備を参照し、開発環境を準備します。

2. GCMプッシュ通知を利用するネイティブアプリケーションを開発するための事前準備を参照して、API Key、および、

Project_Number(SENDER_ID)を準備します。

3. IMAPSサーバ上のサンプルのプロジェクトを、開発端末上に配置します。

4. Android Studioで、既存プロジェクトとしてサンプルプロジェクトをインポートします。

- 195 -

Page 208: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

5. 以下配下のmoduleを開発端末上に配置し、Android Studioのmoduleとしてインポートします。

・ プッシュ通知機能のmodule

<DVD-ROMドライブ>\development\android\push\native

<DVD-ROMマウントディレクトリ>/development/android/push/native

6.5.3 GCMプッシュ通知を利用するネイティブアプリケーションの開発を参考にしてください。

6. 以下のライブラリを、サンプルプロジェクトのlibsディレクトリ配下に格納します。

・ SLS API

・ imaps.jar

・ log4j-1.2.17.jar

・ httpmime-4.2.5.jar

第3章 ネイティブアプリケーションおよび3.3 Androidアプリケーションの開発を参考にしてください。

7. マニフェストファイルの設定値を確認します。

IMAPSプッシュ通知の利用に必要な設定は、1. マニフェストファイルの修正を参照してください。

※サンプルプロジェクトには設定済みです。

8. 接続先のIMAPSサーバのアドレスなどを設定します。

プロジェクト内の以下を設定します。

・ assets/imaps/properties/imaps.properties

imapsServerAddress=IMAPSサーバのアドレス:ポート

・ assets/push/properties/push.properties

push.ServerAddress=IMAPSサーバのアドレス:ポート

push.SelfCertificate=true

push.gcm.NotificationMode=true

push.gcm.SenderID=SENDER_ID ※

push.AuthClassName=com.fujitsu.imaps.plugin.push.PushExtAuthImpl

※)SENDER_IDは、2.で取得した「Project Number」を指定します。他の定義値については付録C クライアント設定ファイルおよび

付録D プッシュクライアント設定ファイルを参照してください。

9. パッケージングします。

開発環境のビルド方法に従ってください。

10. 配布します。

配布方法は、"運用ガイド"の" ハイブリッドアプリケーション/ネイティブアプリケーション"を参照してください。

B.2.3 APNs(iOS)のサンプルを準備する

1. 3.4.1 開発環境の準備を参照して、開発環境を準備します。

2. IMAPSサーバ上のサンプルのプロジェクトを、開発端末上に展開します。

プロジェクトは、IMAPSサーバにzip形式で格納されています。

3. フレームワークとして提供している以下のライブラリを、サンプルプロジェクトのIMAPSAPNSSample/Frameworks 配下に格納しま

す。

・ プッシュ通知機能のライブラリ(FJPHandlerLib)

zip形式で格納されています。IMAPSAPNSSample/Frameworks 配下で展開してください。

- 196 -

Page 209: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

・ IMAPS提供フレームワーク(IMAPSCore.framework、IMAPSPush.framework、Cordova.framework、ZipArchive.framework)

第3章 ネイティブアプリケーション、3.4 iOSアプリケーションの開発、および6.5.4 APNsプッシュ通知を利用するネイティブアプリ

ケーションの開発を参考にしてください。

4. APNsを利用するための準備をします。

6.5.4 APNsプッシュ通知を利用するネイティブアプリケーションの開発を参照し、以下のファイルを用意します。

・ PKCS#12形式の証明書

・ プロビジョニングファイル(Provisioning Profiles)

5. Xcodeを起動し、OpenOtherを選択、展開したプロジェクトを指定し、読み込みます。

6. 接続先のIMAPSサーバのアドレスを設定します。

プロジェクト内の以下で設定します。

・ IMAPSAPNSSample/props/imaps.plist

「imapsServerAddress」の設定

・ IMAPSAPNSSample/props/push.plist

「push.Address」の設定

定義値は、付録C クライアント設定ファイルおよび付録D プッシュクライアント設定ファイルを参照してください。

7. パッケージングします。

Xcodeで、手順5で用意したプロビジョニングファイル(Provisioning Profiles)を指定してビルドします。

8. 配布します。

配布方法は、"運用ガイド"の" ハイブリッドアプリケーション/ネイティブアプリケーション"を参照してください。

B.2.4 WNS(Windows)のサンプルを準備する

1. 3.5.1 開発環境の準備を参照し、開発環境を準備します。

2. サンプルプロジェクトをVisual Studio で開きます。

3. 以下配下のCom.Fujitsu.Imaps.Push.winmdファイル、ImapsPushEx.dllファイルを参照設定で追加します。

プッシュ通知機能のファイル

<DVD-ROMドライブ>\development\windows\push

<DVD-ROMマウントディレクトリ>/development/windows/push

6.5.5 WNSプッシュ通知を利用するネイティブアプリケーションの開発を参考にしてください。

4. 以下のライブラリを、サンプルプロジェクトの参照設定に追加します。

・ ImapsNativeLibrary.dll

・ SQLite for Windows Runtime

第3章 ネイティブアプリケーションおよび3.5 Windowsアプリケーションの開発を参考にしてください。

5. マニフェストファイルの設定値を確認します。

WNS通知の利用に必要な設定は、1. マニフェストファイルの修正を参照してください。

6. 接続先のIMAPSサーバのアドレスなどの設定を行います。

プロジェクト内の以下を設定します。

・ ImapsProperties/imaps.xml

<imapsServerAddress>IMAPSサーバのアドレス:ポート</imapsServerAddress>

・ PushProperties/push.xml

<pushServerAddress>IMAPSサーバのアドレス:ポート</pushServerAddress>

- 197 -

Page 210: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

<pushSelfCertificate>true</pushSelfCertificate>

定義値については付録C クライアント設定ファイルおよび付録D プッシュクライアント設定ファイルを参照してください。

7. WNSを利用するネイティブアプリケーションを開発するための事前準備を参照して、「パッケージSID」、「クライアントシークレット」、

「アプリケーションID」を取得し、アプリケーションをストアと関連付けします。

8. パッケージングします。開発環境のビルド方法に従ってください。

9. 配布します。

配布方法については、"運用ガイド"の"ハイブリッドアプリケーション/ネイティブアプリケーション"を参照してください。

B.3 サーバ環境の準備をする 導入ガイド、および、運用ガイドに従いサーバ環境を構築します。

使用するプッシュサービスの種別によって、 プッシュ通知機能を利用する設定が異なります。

詳細は、"運用ガイド"の"プッシュ通知機能"を参照してください。以下では、運用の準備("運用ガイド"の"運用の準備")まで完了した

環境を元に説明します。

1. IMAPSサーバでimadmin user createコマンドでユーザーを作成します。

例)

imadmin user create -userid sampleuser -password samplepassword

2. プッシュ通知を利用できるようにするため、アプリケーション情報をIMAPSサーバに登録します。

■ 例)IMAPSプッシュのサンプルの場合

imadmin pushfjp create -name com.fujitsu.imaps.sample.imaps_pushsample

■ 例)GCMサンプルの場合

imadmin pushgcm create -key key -name com.fujitsu.imaps.sample.imaps_gcmsample

keyには、サンプルアプリの準備で取得した、API Keyを指定します。

■ 例)APNsのサンプルの場合

imadmin pushapns create -certFile certFile -password password [-sandbox] -name

com.fujitsu.imaps.sample.imapsapnssample

certFileには、APNsのPKCS#12形式の証明書ファイルのパスを指定します。

passwordにはcertFileのパスワードを指定します。

アプリケーションがsandbox版である場合は「-sandbox」を指定します。

■ 例)WNSサンプルの場合

imadmin pushwns create -sid sid [-clientSecret clientSecret] -name name

sidには、サンプルアプリの準備で取得した、セキュリティIDを指定します。

clientSecretには、サンプルアプリの準備で取得した、クライアントシークレットを指定します。

nameには、サンプルアプリの準備で構築したプロジェクトのマニフェストに設定されているパッケージ名を指定します。

B.4 サンプルアプリの操作方法

B.4.1 IMAPSプッシュ(Android)のサンプルを起動する

1. サンプルアプリ「IMAPS_PUSHSample」を起動します。

2. IMAPSサーバで作成済みのユーザーIDとパスワードを入力し、[Login]ボタンをタップします。

→ 結果が画面下部の[Login Result]に表示されます。

- 198 -

Page 211: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

ログインに成功すると、プッシュ通知の初期化が行われます。初期化が完了すると、[Login Result]に[プッシュ基盤サーバと

の接続に成功しました。]が表示され、IMAPSプッシュメッセージが受信可能になります。

[ログインに失敗しました。]が表示された場合は、Wi-Fi接続になっていることを確認し、再度[Login]ボタンをタップします。

B.4.2 GCM(Android)のサンプルを起動する

1. サンプルアプリ「IMAPS_GCMSample」を起動します。

2. IMAPSサーバで作成済みのユーザーIDとパスワードを入力し、[Login]ボタンをタップします。

→ 結果が画面下部の[Login Result]に表示されます。

ログインに成功すると、プッシュ通知の初期化が行われます。

初期化が完了すると、[Login Result]に[IDの登録に成功しました。]が表示され、GCMプッシュメッセージが受信可能になりま

す。

[ログインに失敗しました。]が表示された場合は、Wi-Fi接続になっていることを確認し、再度[Login]ボタンをタップします。

B.4.3 APNs(iOS)のサンプルを起動する

1. サンプルアプリ「IMAPSAPNSSample」を起動します。

2. IMAPSサーバで作成済みのユーザーIDとパスワードを入力し、[IMAPSログイン]ボタンをタップします。

→ ログインに成功すると、プッシュ通知の初期化が行われます。

3. [デバイストークンがIMAPSサーバに登録され、メッセージ受信が可能になりました]と表示されたら、[ログアウトして戻る]タップし

ます。

→ 以降、APNsプッシュメッセージが受信可能になります。

B.4.4 WNS(Windows)のサンプルを起動する

1. サンプルアプリ「IMAPS_PUSHWNSSample」を起動します。

2. IMAPSサーバで作成済みのユーザーIDとパスワードを入力し、[Login]ボタンをタップします。

→ ログインに成功すると、プッシュ通知の初期化が行われ、[チャネルURIの登録に成功]が表示されます。以降、WNSプッシュ

メッセージが受信可能になります。

B.5 メッセージの送信

プッシュメッセージは、IMAPSサーバのプッシュWeb APIを使用して送信します。

登録IDの一覧取得のAPIにより、登録ID(メッセージの通知先)の情報を取得します。

メッセージの送信のAPIでメッセージと登録IDを指定して、メッセージを通知します。

詳細は6.4.1 サーバ側のAPI、6.6 サーバ側のアプリケーションの開発、および付録A プッシュWeb APIを参照してください。

- 199 -

Page 212: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

付録C クライアント設定ファイル

ハイブリッドアプリケーションおよびネイティブアプリケーションは、クライアント設定ファイルをアプリケーション内に取り込む事で、アプ

リケーションの動作をカスタマイズできます。

本節では、クライアント設定ファイルについて説明します。

C.1 ファイル形式

クライアント設定ファイルは、Android版ではJavaのプロパティファイル形式、iOS版ではplist形式、Windows版ではXML形式です。

プロパティファイル形式では、キー名とそれに対応した設定値の組で1つのエントリが構成され、以下のような形式になっています。

キー名 = 設定値

キー名 = 設定値

:

:

行頭に"#"がついている行はコメントとして扱われます。

改行コードはCR、LF、CR+LFのいずれも使用可能です。

plist形式では、以下のようなxmlで値を指定します。

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE plist>

<plist version="1.0">

<array>

<dict>

<key>key</key>

<string>キー名</string>

<key>value</key>

<string>設定値</string>

</dict>

<dict>

<key>key</key>

<string>キー名</string>

<key>value</key>

<string>設定値</string>

</dict>

:

:

</array>

</plist>

クライアント設定ファイルに定義するプロパティの型は文字列型です。

XML形式では、以下のようなxmlで値を指定します。

<?xml version="1.0" encoding="UTF-8"?>

<properties>

<キー名>設定値</キー名>

<キー名>設定値</キー名>

:

:

</properties>

存在しないプロパティのキー名は無効です。記述しても利用されません。

C.2 サンプルファイルの配置場所

IMAPSではサンプルファイルを提供しています。サンプルファイルは以下の場所に配置されています。

- 200 -

Page 213: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

ハイブリッドアプリケーションの場合

クライアント設定ファイルの保管場所は、2.3.28.1 各機能の設定を参照してください。

ネイティブアプリケーションの場合

<DVD-ROMドライブ>\development\conf\imaps

<DVD-ROMマウントディレクトリ>/development/conf/imaps

Android用はimaps.properties、iOS用はimaps.plist、Windows用はimaps.xmlです。

C.3 配置場所

クライアント設定ファイルは、以下の場所に配置します。

Android

prjRoot/assets/imaps/properties/imaps.properties

iOS

prjRoot/Application Files/imaps/properties/imaps.plist

Windows

prjRoot/ImapsProperties/imaps.xml

prjRootは、クライアントアプリケーションのプロジェクトファイルの 上位ディレクトリを指します。

注意

・ XcodeでApplication Files内に資産を入れる場合、ファイル追加のダイアログで[Create groups]を選択してください。

・ Visual Studioでプロジェクト内に資産を入れる場合、ファイルを選択して、[プロジェクト] > [プロジェクトに含める]を選択してくださ

い。

プロジェクトに含めたファイルのプロパティで、以下を設定します。

- 出力ディレクトリにコピー:コピーしない

C.4 定義例

以下に製品提供ののクライアント設定ファイルの内容を示します。

Android

idleTimeout = 15

imapsServerAddress =

log.level = INFO

log.maxFileSize = 10

log.rotateCount = 1

offlineAuthTryMaxCount = 5

server.connectionTimeout = 10000

server.responseTimeout = 10000

sls.maxDatabaseSize = 2048

ssl.noVerify = false

appmgr.strictPolicyMode = true

iOS

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE plist>

- 201 -

Page 214: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

<plist version="1.0">

<array>

<dict>

<key>key</key>

<string>idleTimeout</string>

<key>value</key>

<string>15</string>

</dict>

<dict>

<key>key</key>

<string>imapsServerAddress</string>

<key>value</key>

<string></string>

</dict>

<dict>

<key>key</key>

<string>log.level</string>

<key>value</key>

<string>INFO</string>

</dict>

<dict>

<key>key</key>

<string>log.maxFileSize</string>

<key>value</key>

<string>10</string>

</dict>

<dict>

<key>key</key>

<string>log.rotateCount</string>

<key>value</key>

<string>1</string>

</dict>

<dict>

<key>key</key>

<string>offlineAuthTryMaxCount</string>

<key>value</key>

<string>5</string>

</dict>

<dict>

<key>key</key>

<string>server.connectionTimeout</string>

<key>value</key>

<string>10000</string>

</dict>

<dict>

<key>key</key>

<string>server.responseTimeout</string>

<key>value</key>

<string>10000</string>

</dict>

<dict>

<key>key</key>

<string>sls.maxDatabaseSize</string>

<key>value</key>

<string>2048</string>

</dict>

<dict>

<key>key</key>

<string>ssl.noVerify</string>

<key>value</key>

<string>false</string>

</dict>

<dict>

- 202 -

Page 215: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

<key>key</key>

<string>appmgr.strictPolicyMode</string>

<key>value</key>

<string>true</string>

</dict>

</array>

</plist>

Windows

<?xml version="1.0" encoding="UTF-8"?>

<properties>

<auth.loginMode>all</auth.loginMode>

<idleTimeout>15</idleTimeout>

<imapsServerAddress></imapsServerAddress>

<log.level>INFO</log.level>

<log.maxFileSize>10</log.maxFileSize>

<log.rotateCount>1</log.rotateCount>

<offlineAuthTryMaxCount>5</offlineAuthTryMaxCount>

<sls.maxDatabaseSize>2048</sls.maxDatabaseSize>

<ssl.noVerify>false</ssl.noVerify>

<appmgr.strictPolicyMode>true</appmgr.strictPolicyMode>

</properties>

C.5 定義項目

本節では、クライアント設定ファイルに設定可能なキーとそれらに設定可能な値について説明します。各項目は以下の形式で説明し

ます。

キー名

クライアント設定ファイルに設定可能なキーの名前を示します。大文字・小文字は区別します。

説明

キーの説明です。

設定可能な値

キーに対応した値が取りうる値を説明します。

デフォルト値

値が「設定可能な値」の範囲外(未設定や空白を含む)であるか、またはプロパティ自体の記述がない場合に用いられる値を説明

します。

読み込みのタイミング

値が読み込まれるタイミングを説明します。

備考

補足です。

C.5.1 auth.loginModeキー名

auth.loginMode

説明

ログイン/ログアウトを許可する呼び元のアプリケーション形態を指定します。

設定可能な値

native(ネイティブコードからだけ)、javascript(javascriptからだけ)、all(すべてのアプリケーション)

- 203 -

Page 216: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

デフォルト値

all

読み込みのタイミング

認証プラグインのログイン/ログアウト呼び出し時

C.5.2 idleTimeoutキー名

idleTimeout

説明

端末のアイドルタイムアウト時間を指定します。

設定可能な値

1~1140(単位:分)

デフォルト値

15

読み込みのタイミング

アプリケーション起動時

C.5.3 imapsServerAddressキー名

imapsServerAddress

説明

IMAPSサーバのURLを設定します。

ポート番号には、IMAPSサーバで使用するWebサーバのポート番号を設定してください。

設定可能な値

http[s]://サーバアドレス[:ポート番号]

1024文字目まで有効

デフォルト値

なし

読み込みのタイミング

IMAPSサーバへの接続開始時

C.5.4 log.levelキー名

log.level

説明

ログの出力レベルを指定します。

設定可能な値

ERROR、WARN、INFO、DEBUG

デフォルト値

INFO

- 204 -

Page 217: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

読み込みのタイミング

アプリケーション起動時

C.5.5 log.maxFileSizeキー名

log.maxFileSize

説明

ログファイルの 大値を指定します。

設定可能な値

1~20(単位:MB)

デフォルト値

10

読み込みのタイミング

アプリケーション起動時

C.5.6 log.rotateCountキー名

log.rotateCount

説明

ログのバックアップ世代数を指定します。

設定可能な値

0~5

デフォルト値

1

読み込みのタイミング

アプリケーション起動時

C.5.7 offlineAuthTryMaxCountキー名

offlineAuthTryMaxCount

説明

オフライン認証のトライ回数上限値を指定します。

設定可能な値

1~16

デフォルト値

5

読み込みのタイミング

オフラインログイン実行時/パスワード変更時

- 205 -

Page 218: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

C.5.8 server.connectionTimeoutキー名

server.connectionTimeout

説明

IMAPSプラグインのIMAPSサーバ接続時のタイムアウト値です。

設定可能な値

0~600000(単位:ミリ秒)0を指定するとタイムアウトは発生しません。

デフォルト値

10000

読み込みのタイミング

IMAPSサーバへの接続開始時

備考

Windowsアプリでは通信のタイムアウトは規定の値が使用されるため、クライアント設定ファイルで動作をカスタマイズできません。

規定では接続のタイムアウト値は 60 秒、接続が確立された後は 30 秒です。詳細は、Windows デベロッパーセンター

Windows.Web.Http.HttpClientのタイムアウト情報を参照してください。

C.5.9 server.responseTimeoutキー名

server.responseTimeout

説明

IMAPSプラグインのIMAPSサーバからのレスポンスタイムアウト値です。

設定可能な値

0~600000(単位:ミリ秒) 0を指定するとタイムアウトは発生しません。

デフォルト値

10000

読み込みのタイミング

IMAPSサーバへの接続開始時

備考

Windowsアプリでは通信のタイムアウトは規定の値が使用されるため、クライアント設定ファイルで動作をカスタマイズできません。

規定では接続のタイムアウト値は 60 秒、接続が確立された後は 30 秒です。詳細は、Windows デベロッパーセンター

Windows.Web.Http.HttpClientのタイムアウト情報を参照してください。

C.5.10 sls.maxDatabaseSizeキー名

sls.maxDatabaseSize

説明

SLS格納領域の上限値です。

設定可能な値

1~2048(単位:MB)

デフォルト値

2048

- 206 -

Page 219: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

読み込みのタイミング

SLSのオープン時

C.5.11 ssl.noVerifyキー名

ssl.noVerify

説明

SSL通信時にサーバ証明書を検証するか否かを指定します。trueの場合、サーバ証明書を検証しません。falseの場合、サーバ証

明書を検証し、正しくない場合サーバとの接続に失敗します。

設定可能な値

trueまたはfalse

デフォルト値

false

読み込みのタイミング

SSL通信開始時

C.5.12 appmgr.strictPolicyModeキー名

appmgr.strictPolicyMode

説明

新のポリシー設定ファイルを使用するかどうかと、現在時刻の取得方法を指定します。各値の動作を下記の表で示します。 falseの場合は、端末がオフラインでポリシー設定ファイルが更新されない場合や、クライアントの時刻が間違っている場合は、設定した

時間外にアプリケーションが利用可能になる場合があります。 これを防止するためには値をtrueにします。

値がtrueの場合 値がfalseの場合

現在時刻の取得先 IMAPSサーバ クライアント

オンラインの場合 新のポリシー設定ファイルを使用 新のポリシー設定ファイルを使用

オフラインの場合 APIの呼び出し時にエラー クライアントに保存したポリシー設定ファイルを使用

設定可能な値

trueまたはfalse

デフォルト値

true

読み込みのタイミング

利用時間制御のAPIの呼び出し時

- 207 -

Page 220: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

付録D プッシュクライアント設定ファイル

プッシュ通知を受信するクライアントアプリケーションは、プッシュクライアント設定ファイルをアプリケーション内に取り込む事により、ア

プリケーションの動作をカスタマイズする事ができます。

本節では、プッシュクライアント設定ファイルについて説明します。

注意

プッシュクライアント設定ファイルは、Android、iOS、Windowsに対応しています。

D.1 ファイル形式

プッシュクライアント設定ファイルは、Android版ではJavaのプロパティファイル形式、iOS版ではplist形式、Windows版ではxml形式で

す。クライアント設定ファイルと同形式となりますので、詳細は付録C クライアント設定ファイルのC.1 ファイル形式を参照してください。

D.2 配置場所

プッシュクライアント設定ファイルは、以下の場所に配置します。

ハイブリッドアプリケーションの場合

クライアント設定ファイルの保管場所は、6.5.1 ハイブリッドアプリケーション向けのAPIの開発を参照してください。

ネイティブアプリケーションの場合

Android

prjRoot/assets/push/properties/push.properties

プッシュクライアント設定ファイルのパスを、アプリケーションのDefaultプリファレンスの設定で切り替えられます。

キー名 デフォルト 型 説明

key_push_properties_path(PushDefine.KEY_PUSH_PROPERTIES_PATH)>

(*) String プッシュクライアント設定ファイルのファイルパスを指

定(ファイル名まで含む絶対パス指定)

(*) 値が設定されない場合、アプリケーションの /assets/push/properties/push.properties にファイルが格納されているとみなして動作

します。

iOS

アプリケーションのmainBundle直下のpush.plistに配置します。

なお、プッシュクライアント設定ファイルの配置パスは、アプリケーションの[NSUserDefaults sharedUserDefaults]で取得できる共有

オブジェクトへの設定で切り替えることができます。

キー名 デフォルト 型 説明

key_push_properties_path(FJPAppDelegate.hに定数定義)

(*) String plist形式のプッシュクライアント設定ファイルのファイル

パスを指定(ファイル名まで含む絶対パス指定とする)

(*) 値が設定されない場合、アプリケーションの mainBundle直下のpush.plistにプッシュクライアント設定ファイルが配置されている

とみなして動作します。

Windows

prjRoot/PushProperties/push.xml

プッシュクライアント設定ファイルのパスを、プッシュ部品の設定ファイルパス切り替え用メソッドで切り替えられます。

- 208 -

Page 221: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

「C:\Users\{ユーザ名}\AppData\Local\Packages\{パッケージファミリ名}\LocalState」フォルダ内ではユーザ指定の設定ファイル

を配置することが可能です。(Windowsアプリでは参照できるディレクトリに制限があるため上記フォルダ内での配置を可能としてい

ます。)

設定方法は、上記フォルダ内にユーザ指定の設定ファイルを配置し、上記フォルダから配置した設定ファイルまでの相対パスを

PushPropertiesクラスのsetUserSettingRelativePath()で設定します。設定する値は¥マーク区切りにて設定してください。

例:PushProperties.setUserSettingRelativePath(“SampleFolder1\SampleFolder2\push.xml”);

(*) 値が設定されない場合、アプリケーションの /PushProperties にファイルが格納されているとみなして動作します。

上 記 の 例 の 場 合 「 C:\Users\{ ユ ー ザ 名 }\AppData\Local\Packages\{ パ ッ ケ ー ジ フ ァ ミ リ 名 }\LocalState\SampleFolder1\SampleFolder2\push.xml」の設定ファイルを指定することになります。

ユーザ指定の設定ファイルが指定されている場合はユーザ指定の設定ファイルを参照します。

また、PushPropertiesクラスのsetUserSettingRelativePath()で設定した内容は、アプリ起動後、

PushProperties.getProperty()実行時または、WNSRegister.getInstance()実行時に参照されます。

PushProperties.getProperty()実行後または、WNSRegister.getInstance()実行後に設定しても即時反映されずアプリ再起動後に反映

されます。

注意

・ PushPropertiesクラスのsetUserSettingRelativePath()で設定したユーザ指定のファイルパスは、アプリケーション固有領域の

ApplicationData.Current.LocalSettingsに格納されます。

その際、ApplicationData.Current.LocalSettingsへの参照キーとして“PushPropertyFileRelativePath”をプッシュ部品側で使用し

ているためアプリ実装時はApplicationData.Current.LocalSettingsへの参照キーとして使用しないでください。

・ PushPropertiesクラスのsetProperty()で設定したプロパティは、アプリケーション固有領域のApplicationData.Current.LocalSettingsに格納されます。

その際、ApplicationData.Current.LocalSettingsへの参照キーとして“PushProperties”をプッシュ部品側で使用しているためアプ

リ実装時はApplicationData.Current.LocalSettingsへの参照キーとして使用しないでください。

D.3 定義例

以下に製品提供のプッシュクライアント設定ファイルの内容を示します。

Android

push.ServerConnectTimeout=1000

push.ServerDataReadTimeout=1000

push.ServerAddress=https://example.com:8100

push.SelfCertificate=true

push.RingtoneUri=android.resource://com.package/raw/bell

push.LedSet=true

push.LedColor=#ffff0000

push.LedOntime=500

push.LedOfftime=500

push.VibPattern=1000,1000,1000,1000

push.NotificationAppName=app_name

push.NotificationMainClassName=com.fujitsu.imaps.push.example

push.NotificationIconID=ic_launcher

push.gcm.NotificationMode=true

push.gcm.SenderID=1234567890

push.LogClassName=com.fujitsu.imaps.plugin.push.PushLogImpl

push.AuthClassName=com.fujitsu.imaps.plugin.push.PushExtAuthImpl

push.ExtensionData=userid:user001

push.ServerConnectRetryCount=0

push.ServerConnectRetryWait=0

- 209 -

Page 222: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

iOS

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">

<plist version="1.0">

<dict>

<key>push.SandboxFlg</key>

<false/>

<key>push.ConnectionInfo</key>

<dict>

<key>push.Address</key>

<string>https://example.com:8443</string>

<key>push.SslForceFlg</key>

<true/>

</dict>

<key>push.RetryWaitTime</key>

<integer>60</integer>

<key>push.LowerUpdateTime</key>

<integer>-1</integer>

<key>push.RetryCount</key>

<integer>0</integer>

</dict>

</plist>

Windows

<?xml version="1.0" encoding="utf-8" ?>

<pushproperties>

<push.ServerAddress>https://pushserver001.com</push.ServerAddress>

<push.SelfCertificate>true</push.SelfCertificate>

<push.wns.NotificationMode>true</push.wns.NotificationMode>

<push.LogClassNameSpace>PushTest.Impl</push.LogClassNameSpace>

<push.LogClassName>PushTest.Impl.PushLogImpl</push.LogClassName>

<push.AuthClassNameSpace>PushTest.Impl</push.AuthClassNameSpace>

<push.AuthClassName>PushTest.Impl.PushExtAuthImpl</push.AuthClassName>

<push.ExtensionData>extData</push.ExtensionData>

<push.ServerConnectRetryCount>0</push.ServerConnectRetryCount>

<push.ServerConnectRetryWait>0</push.ServerConnectRetryWait>

<push.BackGroundTaskErrorLogFileName>err.log</push.BackGroundTaskErrorLogFileName>

</pushproperties>

D.4 定義項目(IMAPSおよびGCMプッシュ通知)本節では、IMAPSおよびGCMプッシュ通知を受信するアプリケーションの、プッシュクライアント設定ファイルに設定可能なキーとそれ

らに設定可能な値について説明します。各項目は以下の形式で説明します。Javaのプロパティファイルであるため型はすべてStringで

す。

キー名

プッシュクライアント設定ファイルに設定可能なキーの名前を示します。

PushDefineクラスの定義名

PushDefineクラスの定義名を説明します。

デフォルト

キーの省略値を説明します。

省略可否

省略可能か否かを説明します。

説明

キーの説明です。

- 210 -

Page 223: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

D.4.1 push.ServerConnectTimeoutキー名

push.ServerConnectTimeout

PushDefineクラスの定義名

SERVER_CONNECT_TIMEOUT

デフォルト

10000

省略可否

設定可能な値

0~2147483647 0を指定するとタイムアウトは発生しません。

説明

IMAPSサーバ、プッシュ基盤サーバとの接続にかかるタイムアウト時間(ms)を設定します。

D.4.2 push.ServerDataReadTimeoutキー名

push.ServerDataReadTimeout

PushDefineクラスの定義名

SERVER_DATA_READ_TIMEOUT

デフォルト

10000

省略可否

設定可能な値

0~2147483647 0を指定するとタイムアウトは発生しません。

説明

IMAPSサーバからデータを取得するのにかかるタイムアウト時間(ms)を設定します。

D.4.3 push.ServerAddressキー名

push.ServerAddress

PushDefineクラスの定義名

KEY_REGIST_URL

デフォルト

なし

省略可否

不可

設定可能な値

http[s]:サーバアドレス[:ポート番号]

1024文字目まで有効

- 211 -

Page 224: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

説明

IMAPSサーバのURLを設定します。

ポート番号には、IMAPSサーバで使用するWebサーバのポート番号を設定してください。

D.4.4 push.SelfCertificateキー名

push.SelfCertificte

PushDefineクラスの定義名

SELF_CERTIFICATE

デフォルト

false

省略可否

設定可能な値

trueまたはfalse

説明

自己証明書を信頼するかどうかを設定します。true:信頼する、false:信頼しない。

D.4.5 push.RingtoneUriキー名

push.RingtoneUri

PushDefineクラスの定義名

KEY_NOTIFICATION_RINGTONE_URI

デフォルト値

省略した場合はpayloadの値が有効になります。

省略可否

設定可能な値

android.net.Uriで有効なサウンドURI

説明

NotificationのサウンドURIを設定します。

D.4.6 push.LedSetキー名

push.LedSet

PushDefineクラスの定義名

KEY_NOTIFICATION_LED_SET

デフォルト値

false

省略可否

- 212 -

Page 225: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

設定可能な値

trueまたはfalse

説明

プッシュクライアント設定ファイル側のイルミネーション設定を有効化します。true:有効、false:無効。

D.4.7 push.LedColorキー名

push.LedColor

PushDefineクラスの定義名

KEY_NOTIFICATION_LED_COLOR

デフォルト値

省略した場合はpayloadの値が有効になります。

省略可否

設定可能な値

色(#RRGGBB または #AARRGGBBの形式)

説明

Notificationのイルミネーションの色を設定します。RGB値をHEX文字列形式で指定します。

#RRGGBB または #AARRGGBBの形式が有効です。RR: 赤、GG: 緑、BB: 青、AA: アルファチャンネル。

D.4.8 push.LedOntimeキー名

push.LedOntime

PushDefineクラスの定義名

KEY_NOTIFICATION_LED_ONTIME

デフォルト値

省略した場合はpayloadの値が有効になります。

省略可否

設定可能な値

0~2147483647

説明

Notificationによりイルミネーションが発光している時間(ms)を設定します。push.LedOffTimeが省略された場合は、点灯し続けま

す。

D.4.9 push.LedOfftimeキー名

push.LedOfftime

PushDefineクラスの定義名

KEY_NOTIFICATION_LED_OFFTIME

- 213 -

Page 226: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

デフォルト値

省略した場合はpayloadの値が有効になります。

省略可否

設定可能な値

0~2147483647

説明

Notificationによりイルミネーションが発光をしない時間(ms)を設定します。push.LedOnTimeとの組み合わせで点滅させることがで

きます。

D.4.10 push.VibPatternキー名

push.VibPattern

PushDefineクラスの定義名

KEY_NOTIFICATION_VIB_PATTERN

デフォルト値

省略した場合はpayloadの値が有効になります。

省略可否

設定可能な値

0~2147483647

説明

Notificationのバイブパターンをミリ秒で設定します。[待機時間],[鳴動時間],...の繰り返しです。

D.4.11 push.NotificationAppNameキー名

push.NotificationAppName

PushDefineクラスの定義名

KEY_NOTIFICATION_APPNAMEID

デフォルト値

なし

省略可否

不可

設定可能な値

Androidアプリケーションの文字列のリソースID

説明

通知されたpayloadにtitleが含まれなかった場合にタイトルとして表示する文字列を示すリソースIDを指定します。payloadにtitleが

省略され、さらに本設定も省略された場合、通知領域へのタイトルには何も表示されません。

- 214 -

Page 227: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

D.4.12 push.NotificationMainClassNameキー名

push.NotificationMainClassName

PushDefineクラスの定義名

KEY_NOTIFICATION_MAIN_CLASS_NAME

デフォルト値

なし

省略可否

不可

設定可能な値

存在するActivityクラス名

説明

payloadのactionで""(空文字)が指定された場合に起動するActivityクラスを設定します。Activityクラスには、android.app.Activityの派生クラスでかつアプリケーションのマニフェストファイルで<activity>宣言しているクラスを指定してください。省略された場合や

存在しないクラスを指定した場合、payloadのactionは機能しません。

D.4.13 push.NotificationIconIDキー名

push.NotificationIconID

PushDefineクラスの定義名

KEY_NOTIFICATION_ICON_ID

デフォルト値

なし

省略可否

不可

設定可能な値

Androidアプリケーションアイコン画像のリソースID

説明

プッシュ通知時に表示するアイコン画像のリソースIDを設定します。設定が省略された場合や存在しないリソースIDの場合、プッシ

ュ通知を受けても通知領域には何も表示されません。

D.4.14 push.gcm.NotificationModeキー名

push.gcm.NotificationMode

PushDefineクラスの定義名

PREFKEY_NOTIFICATION_MODE

デフォルト値

true

省略可否

- 215 -

Page 228: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

設定可能な値

trueまたはfalse

説明

GCMの表示モードを設定します。true:GCMプッシュの表示, false:非表示

D.4.15 push.gcm.SenderIDキー名

push.gcm.SenderID

PushDefineクラスの定義名

KEY_GCM_SENDERID

デフォルト値

なし

省略可否

GCMプッシュを利用する場合は省略不可、利用しない場合は不要

設定可能な値

Googleの開発者向けのWebサイトから入手したSENDER ID

説明

GCM: GCMを用いるためのSENDER IDを設定します。SENDER ID は、Googleの開発者向けのWebサイトで入手します。

D.4.16 push.LogClassNameキー名

push.LogClassName

PushDefineクラスの定義名

KEY_LOG_CLASS_NAME

デフォルト値

なし

省略可否

不可

設定可能な値

com.fujitsu.imaps.push.customize.PushLogの派生クラス名

説明

ログクラス名を設定します。”com.fujitsu.imaps.plugin.push.PushLogImpl”を設定すると、ログファイルがログ送信の対象となり、IMAPSサーバ側でログを収集できます。

D.4.17 push.AuthClassNameキー名

push.AuthClassName

PushDefineクラスの定義名

KEY_AUTH_CLASS_NAME

デフォルト値

なし

- 216 -

Page 229: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

省略可否

不可

設定可能な値

com.fujitsu.imaps.push.customize.PushExtAuthの派生クラス名

説明

認証クラス名を設定します。”com.fujitsu.imaps.plugin.push.PushExtAuthImpl”を設定することで、IMAPSの認証機能を利用するこ

とができます。

D.4.18 push.ExtensionDataキー名

push.ExtensionData

PushDefineクラスの定義名

KEY_EXTENSION_DATA

デフォルト値

省略した場合、かつ6.5.8 拡張データの指定に示した拡張データの設定を行わない場合、IMAPSサーバに拡張データは登録され

ません。

省略可否

設定可能な値

任意の文字列

説明

拡張データを設定します。

任意の値を設定します。この値はIMAPSサーバに通知され、登録IDと関連付けて管理されます。

プッシュWeb APIで取得し、送信先の情報として利用できます。

D.4.19 push.ServerConnectRetryCountキー名

push.ServerConnectRetryCount

PushDefineクラスの定義名

KEY_SERVER_CONNECT_RETRY_COUNT

デフォルト値

0(リトライしない)

省略可否

設定可能な値

0~2147483647

説明

IMAPSサーバとの通信に失敗した場合にリトライする回数を設定します。省略した場合、0(リトライしない)となります。

※開発中の動作確認用の定義です。

- 217 -

Page 230: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

D.4.20 push.ServerConnectRetryWaitキー名

push.ServerConnectRetryWait

PushDefineクラスの定義名

KEY_SERVER_CONNECT_RETRY_WAIT

デフォルト値

0(待ち合わせ時間なしでリトライします)

省略可否

設定可能な値

0~2147483647

説明

IMAPSサーバとの通信に失敗した場合にリトライするまでの待ち合わせ時間(秒)を設定します。省略した場合、0(待ち合わせ時間

なしでリトライします)となります。

※開発中の動作確認用の定義です。

注意

極端に小さな値を指定するとリトライが頻繁に発生するため、バッテリ消費が激しくなり発熱する恐れがあります。

D.5 定義項目(APNsプッシュ通知)本節では、APNsプッシュ通知を受信するアプリケーションの、プッシュクライアント設定ファイルに設定可能なキーとそれらに設定可能

な値について説明します。各項目は以下の形式で説明します。

キー名

プッシュクライアント設定ファイルに設定可能なキーの名前を示します。

デフォルト

キーの省略値を説明します。

省略可否

省略可能か否かを説明します。

キーの型を説明します。

説明

キーの説明です。

D.5.1 push.SandboxFlgキー名

push.SandBoxFlg

デフォルト

false

省略可否

- 218 -

Page 231: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

Boolean

設定可能な値

trueまたはfalse

説明

プッシュ通知で利用するAPNsが開発用かリリース用かを指定します。true:開発用、false:リリース用。

D.5.2 push.Addressキー名

push.Address

デフォルト

なし

省略可否

不可

String

設定可能な値

http[s]:サーバアドレス[:ポート番号]

1024文字目まで有効

説明

IMAPSサーバのURLを設定します。

ポート番号には、IMAPSサーバで使用するWebサーバのポート番号を設定してください。

D.5.3 push.SslForceFlgキー名

push.SslForceFlg

デフォルト

false

省略可否

Boolean

設定可能な値

trueまたはfalse

説明

RESTサービスとSSL認証する際に、証明書の厳密なチェックを省略するかを設定します。

true

証明書検証を行わない。

false

OSのキーチェーンサービスに登録されたCA証明書で署名検証を実施する 。

- 219 -

Page 232: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

D.5.4 push.RetryWaitTimeキー名

push.RetryWaitTime

デフォルト

60

省略可否

Number

設定可能な値

0~2147483647

説明

IMAPSサーバへデバイストークン登録の接続に失敗した場合にリトライする待機時間(秒)を設定します。

注意

・ 極端に小さな値を指定するとリトライが頻繁に発生するため、バッテリ消費が激しくなり発熱する恐れがあります。

D.5.5 push.LowerUpdateTimeキー名

push.LowerUpateTime

デフォルト

-1

省略可否

Number

設定可能な値

-1~2147483647

説明

IMAPSサーバに対してデバイストークンを再登録する時間の下限値(秒)を設定します。-1の場合は再登録を行いません。

注意

極端に小さな値を指定するとリトライが頻繁に発生するため、バッテリ消費が激しくなり発熱する恐れがあります。

D.5.6 push.RetryCountキー名

push.RetryCount

デフォルト

0

- 220 -

Page 233: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

省略可否

Number

設定可能な値

0~2147483647

説明

既読通知において、IMAPSサーバへの通信に失敗した場合に、リトライする回数を設定します。

D.6 定義項目(WNSプッシュ通知)本節では、WNSプッシュ通知を受信するアプリケーションの、プッシュクライアント設定ファイルに設定可能なキーとそれらに設定可能

な値について説明します。各項目は以下の形式で説明します。

キー名

プッシュクライアント設定ファイルに設定可能なキーの名前を示します。

デフォルト値

キーの省略値を説明します。

省略可否

省略可能か否かを説明します。

設定可能な値

キーの型を説明します。

説明

キーの説明です。

D.6.1 push.ServerAddressキー名

push.ServerAddress

デフォルト

なし

省略可否

不可

設定可能な値

http[s]:サーバアドレス[:ポート番号]

1024文字目まで有効

説明

IMAPSサーバのURLを設定します。

ポート番号には、IMAPSサーバで使用するWebサーバのポート番号を設定してください。

D.6.2 push.SelfCertificateキー名

push.SelfCertificate

- 221 -

Page 234: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

デフォルト

false

省略可否

設定可能な値

trueまたはfalse

説明

自己証明書の署名検証を無視するかどうかを設定します。true:検証を無視する、false:検証する。

D.6.3 push.wns.NotificationModeキー名

push.wns.NotificationMode

デフォルト

true

省略可否

設定可能な値

trueまたはfalse

説明

WNSの表示モードを設定します。true:WNSプッシュの表示, false:非表示

D.6.4 push.LogClassNameSpaceキー名

push.LogClassNameSpace

デフォルト

なし

省略可否

設定可能な値

PushLogの派生クラスの名前空間名

説明

PushLogの派生クラスの名前空間名を設定します。

D.6.5 push.LogClassNameキー名

push.LogClassName

デフォルト

なし

省略可否

- 222 -

Page 235: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

設定可能な値

PushLogの派生クラス名

説明

ログクラス名を設定します。

D.6.6 push.AuthClassNameSpaceキー名

push.AuthClassNameSpace

デフォルト

なし

省略可否

設定可能な値

PushExtAuthの派生クラスの名前空間名(DLLアセンブリ名)

説明

PushExtAuthの派生クラスの名前空間名(DLLアセンブリ名)を設定します。

D.6.7 push.AuthClassNameキー名

push.AuthClassName

デフォルト

なし

省略可否

設定可能な値

PushExtAuthの派生クラス名

説明

認証クラス名を設定します。

D.6.8 push.ExtensionDataキー名

push.ExtensionData

デフォルト

なし

省略可否

設定可能な値

任意の文字列

説明

拡張データを設定します。

任意の値を設定します。この値はIMAPSサーバに通知され、チャネルURIと関連付けて管理されます。

- 223 -

Page 236: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

プッシュWeb APIで取得し、送信先の情報として利用できます。

D.6.9 push.ServerConnectRetryCountキー名

push.ServerConnectRetryCount

デフォルト

0(リトライしない)

省略可否

設定可能な値

-2147483648~2147483647

説明

IMAPSサーバとの通信に失敗した場合にリトライする回数を設定します。省略した場合、0(リトライしない)となります。

-1以下:リトライし続ける

0:リトライしない

1以上:指定回数リトライする

D.6.10 push.ServerConnectRetryWaitキー名

push.ServerConnectRetryWait

デフォルト

0(待ち合わせ時間なしでリトライします)

省略可否

設定可能な値

0~2147483647

説明

IMAPSサーバとの通信に失敗した場合にリトライするまでの待ち合わせ時間(秒)を設定します。省略した場合、0(待ち合わせ時間

なしでリトライします)となります。

D.6.11 push.BackGroundTaskErrorLogFileNameキー名

push.BackGroundTaskErrorLogFileName

デフォルト

なし

省略可否

設定可能な値

ログ出力用の外部ファイル名

説明

バックグラウンドタスク実行時のエラーを外部ファイルへログ出力する際のファイル名を設定します。

- 224 -

Page 237: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

ファイル名の設定なし:エラー内容を外部ファイルに出力しない。

ファイル名の設定あり:エラー内容を設定したファイル名で出力します。

- 225 -

Page 238: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

付録E Cordova CLI本製品ではCordova CLIの以下のコマンドをサポートします。

コマンド 説明

cordova create 新しいCordovaプロジェクトを作成します

cordova help Cordova CLIのヘルプを出力します

cordova info 各プラットフォーム用のSDKのバージョンや現在インストールされているプラットフォームな

どの情報を出力します

cordova requirements 指定したプラットフォームの前提条件が揃っているかを確認します

cordova platform Cordovaプロジェクトが対応するプラットフォームを操作します

cordova plugin Cordovaプロジェクトが使用するプラグインを操作します

cordova prepare 対象のプラットフォームのビルドに必要なファイルをコピーします

cordova compile 対象のプラットフォームをビルドします

cordova clean 指定したプラットフォームのビルド生成物を削除します

cordova run 対象デバイスにアプリケーションを配備します

cordova build cordova prepareとcompileを実行します

cordova emulate cordova run --emulatorを実行します

E.1 cordova create

形式

cordova create <PATH> [ID [NAME]] [options]

説明

新しいCordovaプロジェクトを作成します。

PATH

Cordovaプロジェクトを作成する場所を指定します。

ID

逆ドメイン形式のプロジェクトIDを指定します。この値が、アプリケーションのパッケージ名になります。

省略した場合、io.cordova.hellocordovaが使用されます。

作成後に変更する場合は、<プロジェクトルート>/config.xmlのwidget要素のid属性の値を変更し、cordova prepareコマンドを実行

してください。 また、変更前のリソースは、必要に応じて削除してください。

変更前の値が、io.cordova.hellocordovaの場合

<プロジェクトルート>/platforms/android/src/io/cordova/hellocordova

NAME

アプリケーションの名前を指定します。この値がアプリケーションの表示名になります。

省略した場合、HelloCordovaが使用されます。

作成後に変更する場合は、<プロジェクトルート>/config.xmlのname要素の値を変更し、cordova prepareコマンドを実行してくださ

い。

- 226 -

Page 239: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

注意

・ 先頭に数字は使用できません。

オプション

--template=<PATH|NPM PACKAGE|GIT URL>

指定したカスタムテンプレートを使用してプロジェクトを作成します。

--link-to=<PATH>

すでに存在しているwww資産を参照したプロジェクトを作成します。

戻り値

0

正常終了

1

異常終了

実行例

以下のように実行します。

> cordova create hello

> cordova create hello com.fujitsu.imaps HelloWorld --template=c:\templates\cordova-custom-template

E.2 cordova help

形式

cordova help [コマンド]

説明

Cordova CLIのヘルプを表示します。

コマンド

指定したコマンドのヘルプを表示します。

省略した場合は、コマンドの一覧と概要を表示します。

戻り値

0

正常終了

1

異常終了

実行例

以下のように実行します。

> cordova help create

E.3 cordova info

- 227 -

Page 240: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

形式

cordova info

説明

標準出力とCordovaプロジェクトのルートフォルダーに、トラブル調査などに役立つ情報(info.txt)を生成します。カレントディレクトリ

をCordovaプロジェクトの配下に移動してから実行してください。

以下の情報を出力します。

・ Node.jsのバージョン

・ Cordovaのバージョン

・ プロジェクト設定ファイルの内容

・ 使用中のプラグインの情報

・ 使用中のプラットフォームの情報

戻り値

0

正常終了

1

異常終了

実行例

以下のように実行します。

> cd <Cordovaプロジェクトのディレクトリ>

> cordova info

E.4 cordova requirements

形式

cordova requirements [PLATFORM...]

説明

指定したプラットフォームの前提条件がそろっているかを確認します。

PLATFORM

対象のプラットフォームを指定します。

複数のプラットフォームを一度に指定するには、半角スペースで区切って指定します。

省略すると、プロジェクトに追加されているすべてのプラットフォームを対象にします。

戻り値

0

前提条件がそろっている場合

1

前提条件が十分でない場合

実行例

以下のように実行します。

- 228 -

Page 241: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

> cd <Cordovaプロジェクトのディレクトリ>

> cordova requirements android

E.5 cordova platform add

形式

cordova platform add <plat-spec> [--link]

説明

Cordovaプロジェクトが対応するプラットフォームを追加します。

開発環境のOSによって、開発可能なプラットフォームが決まっています。

各開発環境のOSで開発可能なプラットフォームは以下のとおりです。

開発環境のOS 開発可能なプラットフォーム

Windows Android、Windows

Mac OS Android、iOS

<plat-spec> : <platform[@<version>]|path|url[#<commit-ish>]>

platform

本製品で提供するプラットフォームは、android、ios、windows、browserです。android、ios、windows、browserのどれかを指定し

ます。

本製品で提供していないプラットフォームを指定した場合は、外部のリポジトリから取得します。

複数のプラットフォームを一度に指定するには、半角スペースで区切って指定します。

本製品が提供するプラットフォームを使用する場合は、platformのみ指定してください。

version

バージョンを指定します。major.minor.patch形式

path

追加するプラットフォームのパスを指定します。

url

追加するプラットフォームのgitリポジトリのURLを指定します。

commit-ish

コミット/タグ/ブランチのどれかを指定します。省略した場合は、masterを選択します。

オプション

--link

ローカル環境に存在するプラットフォームを参照して使用します。

戻り値

0

正常終了

1

異常終了

実行例

以下のように実行します。

- 229 -

Page 242: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

> cd <Cordovaプロジェクトのディレクトリ>

> cordova platform add android

E.6 cordova platform remove

形式

cordova platform remove <platform>

説明

Cordovaプロジェクトから指定したプラットフォームを削除します。

platform

android、ios、windows、browserのどれかを指定します。

複数のプラットフォームを一度に指定するには、半角スペースで区切って指定します。

戻り値

0

正常終了

1

異常終了

実行例

以下のように実行します。

> cd <Cordovaプロジェクトのディレクトリ>

> cordova platform remove android

E.7 cordova platform list

形式

cordova platform list

説明

Cordovaプロジェクトに追加したプラットフォームと使用可能なプラットフォームの一覧を表示します。

戻り値

0

正常終了

1

異常終了

実行例

以下のように実行します。

> cd <Cordovaプロジェクトのディレクトリ>

> cordova platform list

- 230 -

Page 243: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

E.8 cordova platform check

形式

cordova platform check

説明

IMAPSDev/plugins内の更新可能なプラットフォーム一覧を出力します。

戻り値

0

正常終了

1

異常終了

実行例

以下のように実行します。

> cd <Cordovaプロジェクトのディレクトリ>

> cordova platform check

E.9 cordova plugin add

形式

cordova plugin add <plugin-spec> [--searchpath] [--link] [--browserify] [--force]

説明

CordovaプロジェクトにCordovaプラグインを追加します。

<plugin-spec> : <pluginid>[@<version>]|<directory>|<url>[#<commit-ish>][subdir]

pluginid

追加するCordovaプラグインのIDを指定します。

本製品が提供するCordovaプラグインのIDは、cordova plugin searchコマンドで確認できます。

本製品で提供していないCordovaプラグインのIDを指定した場合は、外部のリポジトリから取得します。

本製品が提供するCordovaプラグインを使用する場合は、pluginidのみ指定してください。

version

バージョンを指定します。major.minor.patch形式

directory

追加するCordovaプラグインのパスを指定します。

url

追加するCordovaプラグインのgitリポジトリのURLを指定します。

commit-ish

コミット/タグ/ブランチのどれかを指定します。省略した場合は、masterを選択します。

subdir

指定したプラグインのplugin.xmlがあるサブディレクトリを指定します。

- 231 -

Page 244: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

オプション

--searchpath

ローカル環境にあるプラグインフォルダー内を検索します。複数のフォルダーを同時に指定できます。 その場合はWindowsではセミコロン(;)、Mac OS Xではコロン(:)で間を区切ります。

--link

ローカル環境にあるCordovaプラグインを追加する際に、参照して使用します。

--browserify

cordova prepareコマンド実行時に自動生成されるcordova.jsのサイズを縮小し、アプリ起動時間・実行時間を改善します。

--force

すでにプロジェクト内に同名のファイルが存在しても追加するプラグインのファイルで上書きします。

戻り値

0

正常終了

1

異常終了

実行例

以下のように実行します。

> cd <Cordovaプロジェクトのディレクトリ>

> cordova plugin add imaps-plugin-core

E.10 cordova plugin remove

形式

cordova plugin remove <pluginid>

説明

Cordovaプロジェクトから指定したCordovaプラグインを削除します。

pluginid

削除するCordovaプラグインのIDを指定します。複数のCordovaプラグインを一度に削除する場合は、半角スペースで区切って指

定します。

戻り値

0

正常終了

1

異常終了

実行例

以下のように実行します。

> cd <Cordovaプロジェクトのディレクトリ>

> cordova plugin remove imaps-plugin-core

- 232 -

Page 245: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

E.11 cordova plugin list

形式

cordova plugin list

説明

Cordovaプロジェクトに追加したCordovaプラグインの一覧を表示します。

戻り値

0

正常終了

1

異常終了

実行例

以下のように実行します。

> cd <Cordovaプロジェクトのディレクトリ>

> cordova plugin list

E.12 cordova plugin search

形式

cordova plugin search

説明

使用可能なCordovaプラグインの一覧を表示します。

戻り値

0

正常終了

1

異常終了

実行例

以下のように実行します。

> cd <Cordovaプロジェクトのディレクトリ>

> cordova plugin search

E.13 cordova prepare

形式

cordova prepare [PLATFORM...] [--browserify]

説明

対象のプラットフォームのビルドに必要なファイルをコピーします。

- 233 -

Page 246: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

PLATFORM

対象のプラットフォームを指定します。

複数のプラットフォームを一度に指定するには、半角スペースで区切って指定します。

省略すると、プロジェクトに追加されているすべてのプラットフォームを対象にします。

オプション

--browserify

JavaScriptファイルを実行時ではなく、ビルド時にbrowserifyを使ってコンパイルします。

browserifyオプションを有効にすることで、自動生成されるcordova.jsのサイズが縮小します。また、アプリ起動時間・実行時間が

改善します。

戻り値

0

正常終了

1

異常終了

実行例

以下のように実行します。

> cd <Cordovaプロジェクトのディレクトリ>

> cordova prepare android

E.14 cordova compile

形式

cordova compile [--debug|--release] [--device|--emulator|--target=<targetid>] [PLATFORM...] [-- platformOpts]

説明

対象のプラットフォームをビルドします。

PLATFORM

対象のプラットフォームを指定します。

複数のプラットフォームを一度に指定するには、半角スペースで区切って指定します。

省略すると、プロジェクトに追加されているすべてのプラットフォームを対象にします。

オプション

--debug

アプリケーションをデバッグ用にビルドします。

--debugと--releaseのどちらも指定しない場合はデバッグ用にビルドします。

Cordovaプロジェクトのルートディレクトリの下にパッケージを作成します。

表E.1 パッケージを作成する場所

プラットフォー

場所

Android platforms/android/build/outputs/apk/android-debug.apk

iOS platforms/ios/biuld/device/<アプリケーション名>.ipa

Windows platforms/windows/AppPackages/CordovaApp.Windows_<バージョン>_<archs>_debug_Test

- 234 -

Page 247: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

--release

アプリケーションをリリース用にビルドします。

Cordovaプロジェクトのルートディレクトリの下にパッケージを作成します。

表E.2 パッケージを作成する場所

プラットフォー

場所

Android platforms/android/outputs/apk/android-release.apk

iOS platforms/ios/biuld/device/<アプリケーション名>.ipa

Windows platforms/windows/AppPackages/CordovaApp.Windows_<バージョン>_<archs>_Test

リリースモードでビルドする方法は、各プラットフォームベンダーの情報、および、 2.2.4 パッケージングの説明を参照してくださ

い。

プラットフォー

参考URL

Android http://cordova.apache.org/docs/en/6.x/guide/platforms/android/index.html

http://developer.android.com/tools/publishing/app-signing.html

iOS http://cordova.apache.org/docs/en/6.x/guide/platforms/ios/index.html

https://developer.apple.com/jp/documentation/AppDistributionGuide.pdf

Windows http://cordova.apache.org/docs/en/6.x/guide/platforms/win8/index.html

--device

USB接続しているスマートデバイスに配備します。

--device、--emulator、--targetのいずれも指定しない場合は、USB接続された端末があればそれに配備し、なければ起動してい

るエミュレータ/シミュレータに配備します。

配備可能なエミュレータが無い場合はプラットフォームによって動作が異なります。

プラットフォーム 動作

Android エミュレータの導入を促すメッセージを表示する

iOS シミュレータが起動する

Windows Windowsマシンに配備する

--emulator

エミュレータに配備します。

--target

指定したスマートデバイスに配備します。

targetidは、cordova run --listコマンドで確認してください。

--buildConfig <config file>|--buildConfig=<config file>

署名オプションを定義したファイルを指定します。

build.jsonファイルをCordovaプロジェクトのルートディレクトリに配置することで、本オプションを省略できます。

指定する内容は、2.2.4 パッケージングを参照してください。

platformOpts

ハイフン二つ「--」の後に空白を開けた後ろに、リリースビルド用の署名オプションやプラットフォーム固有の設定を指定します。

--buildConfigと本オプションを同時に使用した場合は、本オプションに指定した値が優先されます。

指定する内容は、2.2.4 パッケージングを参照してください。

- 235 -

Page 248: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

戻り値

0

正常終了

1

異常終了

実行例

以下のように実行します。

> cd <Cordovaプロジェクトのディレクトリ>

> cordova compile --release

E.15 cordova clean

形式

cordova clean [PLATFORM...]

説明

指定したプラットフォームのビルド生産物を削除します。

PLATFORM

対象のプラットフォームを指定します。

複数のプラットフォームを一度に指定するには、半角スペースで区切って指定します。

省略すると、プロジェクトに追加されているすべてのプラットフォームを対象にします。

戻り値

0

正常終了

1

異常終了

実行例

以下のように実行します。

> cd <Cordovaプロジェクトのディレクトリ>

> cordova clean android

E.16 cordova run

形式

cordova run [--list|--nobuild] [--debug|--release] [--device|--emulator|--target=<targetid>] [--browserify] [--

archs=<architecture>] [--buildConfig] [PLATFORM...] [-- platformOpts]

説明

cordova prepare, cordova compileを実行し、対象のスマートデバイスにアプリケーションを配備します。

PLATFORM

対象のプラットフォームを指定します。

- 236 -

Page 249: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

複数のプラットフォームを一度に指定するには、半角スペースで区切って指定します。

省略すると、プロジェクトに追加されているすべてのプラットフォームを対象にします。

オプション

--list

利用可能なスマートデバイスの一覧を表示します。

--nobuild

ビルドをスキップしてアプリケーションを配備します。

--debug

アプリケーションをデバッグ用にビルドします。

--debugと--releaseのどちらも指定しない場合はデバッグ用にビルドします。

Cordovaプロジェクトのルートディレクトリの下にパッケージを作成します。

表E.3 パッケージを作成する場所

プラットフォー

場所

Android platforms/android/build/outputs/apk/android-debug.apk

iOS platforms/ios/biuld/device/<アプリケーション名>.ipa

Windows platforms/windows/AppPackages/CordovaApp.Windows_<バージョン>_<archs>_debug_Test

--release

アプリケーションをリリース用にビルドします。

Cordovaプロジェクトのルートディレクトリの下にパッケージを作成します。

表E.4 パッケージを作成する場所

プラットフォー

場所

Android platforms/android/outputs/apk/android-release.apk

iOS platforms/ios/biuld/device/<アプリケーション名>.ipa

Windows platforms/windows/AppPackages/CordovaApp.Windows_<バージョン>_<archs>_Test

リリースモードでビルドする方法は、各プラットフォームベンダーの情報、および、 2.2.4 パッケージングの説明を参照してくださ

い。

プラットフォー

参考URL

Android http://cordova.apache.org/docs/en/6.x/guide/platforms/android/index.html

http://developer.android.com/tools/publishing/app-signing.html

iOS http://cordova.apache.org/docs/en/6.x/guide/platforms/ios/index.html

https://developer.apple.com/jp/documentation/AppDistributionGuide.pdf

Windows http://cordova.apache.org/docs/en/6.x/guide/platforms/win8/index.html

--device

USB接続しているスマートデバイスに配備します。

--device、--emulator、--targetのいずれも指定しない場合は、USB接続された端末があればそれに配備し、なければ起動してい

るエミュレータ/シミュレータに配備します。

配備可能なエミュレータが無い場合はプラットフォームによって動作が異なります。

- 237 -

Page 250: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

プラットフォーム 動作

Android エミュレータの導入を促すメッセージを表示する

iOS シミュレータが起動する

Windows Windowsマシンに配備する

--emulator

エミュレータに配備します。

--target

指定したスマートデバイスに配備します。

targetidは、cordova run --listコマンドで確認してください。

--browserify

JavaScriptファイルを実行時ではなく、ビルド時にbrowserifyを使ってコンパイルします。

browserifyフラグを有効にすることで、自動生成されるcordova.jsのサイズが縮小します。また、アプリ起動時間・実行時間が改

善します。

--archs

ビルドターゲットとなるプロセッサアーキテクチャーを指定します。 複数の値を指定する場合は、半角空白で区切って指定しま

す。 例:--archs="x86 x64" 省略した場合は、anycpuです。 指定できる値は、以下のとおりです。

値 説明

anycpu すべてのプロセッサ用にビルドします。

x86 x86用にビルドします。

x64 x64用にビルドします。

arm armプロセッサ用にビルドします。

--buildConfig <config file>|--buildConfig=<config file>

署名オプションを定義したファイルを指定します。

build.jsonファイルをCordovaプロジェクトのルートディレクトリに配置することで、本オプションを省略できます。

指定する内容は、2.2.4 パッケージングを参照してください。

platformOpts

ハイフン二つ「--」の後に空白を開けた後ろに、リリースビルド用の署名オプションやプラットフォーム固有の設定を指定します。

--buildConfigと本オプションを同時に使用した場合は、本オプションに指定した値が優先されます。

指定する内容は、2.2.4 パッケージングを参照してください。

戻り値

0

正常終了

1

異常終了

実行例

以下のように実行します。

> cd <Cordovaプロジェクトのディレクトリ>

> cordova run --release

- 238 -

Page 251: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

E.17 cordova build

形式

cordova build [--debug|--release] [--device|--emulator|--target=<targetid>] [PLATFORM...] [--browserify] [--

archs<architecture>] [-- platformOpts]

説明

対象のプラットフォームをビルドします。

PLATFORM

対象のプラットフォームを指定します。

複数のプラットフォームを一度に指定するには、半角スペースで区切って指定します。

省略すると、プロジェクトに追加されているすべてのプラットフォームを対象にします。

オプション

--debug

アプリケーションをデバッグ用にビルドします。

--debugと--releaseのどちらも指定しない場合はデバッグ用にビルドします。

Cordovaプロジェクトのルートディレクトリの下にパッケージを作成します。

表E.5 パッケージを作成する場所

プラットフォー

場所

Android platforms/android/build/outputs/apk/android-debug.apk

iOS platforms/ios/biuld/device/<アプリケーション名>.ipa

Windows platforms/windows/AppPackages/CordovaApp.Windows_<バージョン>_<archs>_debug_Test

--release

アプリケーションをリリース用にビルドします。

Cordovaプロジェクトのルートディレクトリの下にパッケージを作成します。

表E.6 パッケージを作成する場所

プラットフォー

場所

Android platforms/android/outputs/apk/android-release.apk

iOS platforms/ios/biuld/device/<アプリケーション名>.ipa

Windows platforms/windows/AppPackages/CordovaApp.Windows_<バージョン>_<archs>_Test

リリースモードでビルドする方法は、各プラットフォームベンダーの情報、および、 2.2.4 パッケージングの説明を参照してくださ

い。

プラットフォー

参考URL

Android http://cordova.apache.org/docs/en/6.x/guide/platforms/android/index.html

http://developer.android.com/tools/publishing/app-signing.html

iOS http://cordova.apache.org/docs/en/6.x/guide/platforms/ios/index.html

https://developer.apple.com/jp/documentation/AppDistributionGuide.pdf

Windows http://cordova.apache.org/docs/en/6.x/guide/platforms/win8/index.html

- 239 -

Page 252: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

--device

USB接続しているスマートデバイスに配備します。

--device、--emulator、--targetのいずれも指定しない場合は、USB接続された端末があればそれに配備し、なければ起動してい

るエミュレータ/シミュレータに配備します。

配備可能なエミュレータが無い場合はプラットフォームによって動作が異なります。

プラットフォーム 動作

Android エミュレータの導入を促すメッセージを表示する

iOS シミュレータが起動する

Windows Windowsマシンに配備する

--emulator

エミュレータに配備します。

--target

指定したスマートデバイスに配備します。

targetidは、cordova run --listコマンドで確認してください。

--buildConfig <config file>|--buildConfig=<config file>

署名オプションを定義したファイルを指定します。

build.jsonファイルをCordovaプロジェクトのルートディレクトリに配置することで、本オプションを省略できます。

指定する内容は、2.2.4 パッケージングを参照してください。

--browserify

JavaScriptファイルを実行時ではなく、ビルド時にbrowserifyを使ってコンパイルします。

browserifyフラグを有効にすることで、自動生成されるcordova.jsのサイズが縮小します。また、アプリ起動時間・実行時間が改

善します。

--archs

ビルドターゲットとなるプロセッサアーキテクチャーを指定します。 複数の値を指定する場合は、半角空白で区切って指定しま

す。 例:--archs="x86 x64" 省略した場合は、anycpuです。 指定できる値は、以下のとおりです。

値 説明

anycpu すべてのプロセッサ用にビルドします。

x86 x86用にビルドします。

x64 x64用にビルドします。

arm armプロセッサ用にビルドします。

platformOpts

ハイフン二つ「--」の後に空白を開けた後ろに、リリースビルド用の署名オプションやプラットフォーム固有の設定を指定します。

--buildConfigと本オプションを同時に使用した場合は、本オプションに指定した値が優先されます。

指定する内容は、2.2.4 パッケージングを参照してください。

戻り値

0

正常終了

1

異常終了

- 240 -

Page 253: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

実行例

以下のように実行します。

> cd <Cordovaプロジェクトのディレクトリ>

> cordova build --release

E.18 cordova emulate

形式

cordova emulate [--list|--nobuild] [--debug|--release] [--browserify] [--archs=anycpu|x86|x64|arm] [PLATFORM...] [--

platformOpts]

説明

cordova run --emulatorを実行します。

PLATFORM

対象のプラットフォームを指定します。

複数のプラットフォームを一度に指定するには、半角スペースで区切って指定します。

省略すると、プロジェクトに追加されているすべてのプラットフォームを対象にします。

オプション

--list

利用可能なスマートデバイスの一覧を表示します。

--nobuild

ビルドをスキップしてアプリケーションを配備します。

--debug

アプリケーションをデバッグ用にビルドします。

--debugと--releaseのどちらも指定しない場合はデバッグ用にビルドします。

Cordovaプロジェクトのルートディレクトリの下にパッケージを作成します。

表E.7 パッケージを作成する場所

プラットフォー

場所

Android platforms/android/build/outputs/apk/android-debug.apk

iOS platforms/ios/biuld/device/<アプリケーション名>.ipa

Windows platforms/windows/AppPackages/CordovaApp.Windows_<バージョン>_<archs>_debug_Test

--release

アプリケーションをリリース用にビルドします。

Cordovaプロジェクトのルートディレクトリの下にパッケージを作成します。

表E.8 パッケージを作成する場所

プラットフォー

場所

Android platforms/android/outputs/apk/android-release.apk

iOS platforms/ios/biuld/device/<アプリケーション名>.ipa

Windows platforms/windows/AppPackages/CordovaApp.Windows_<バージョン>_<archs>_Test

- 241 -

Page 254: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

リリースモードでビルドする方法は、各プラットフォームベンダーの情報、および、 2.2.4 パッケージングの説明を参照してくださ

い。

プラットフォー

参考URL

Android http://cordova.apache.org/docs/en/6.x/guide/platforms/android/index.html

http://developer.android.com/tools/publishing/app-signing.html

iOS http://cordova.apache.org/docs/en/6.x/guide/platforms/ios/index.html

https://developer.apple.com/jp/documentation/AppDistributionGuide.pdf

Windows http://cordova.apache.org/docs/en/6.x/guide/platforms/win8/index.html

--device

USB接続しているスマートデバイスに配備します。

--device、--emulator、--targetのいずれも指定しない場合は、USB接続された端末があればそれに配備し、なければ起動してい

るエミュレータ/シミュレータに配備します。

配備可能なエミュレータが無い場合はプラットフォームによって動作が異なります。

プラットフォーム 動作

Android エミュレータの導入を促すメッセージを表示する

iOS シミュレータが起動する

Windows Windowsマシンに配備する

--emulator

エミュレータに配備します。

--target

指定したスマートデバイスに配備します。

targetidは、cordova run --listコマンドで確認してください。

--buildConfig <config file>|--buildConfig=<config file>

署名オプションを定義したファイルを指定します。

build.jsonファイルをCordovaプロジェクトのルートディレクトリに配置することで、本オプションを省略できます。

指定する内容は、2.2.4 パッケージングを参照してください。

--archs

ビルドターゲットとなるプロセッサアーキテクチャーを指定します。 複数の値を指定する場合は、半角空白で区切って指定しま

す。 例:--archs="x86 x64" 省略した場合は、anycpuです。 指定できる値は、以下のとおりです。

値 説明

anycpu すべてのプロセッサ用にビルドします。

x86 x86用にビルドします。

x64 x64用にビルドします。

arm armプロセッサ用にビルドします。

platformOpts

ハイフン二つ「--」の後に空白を開けた後ろに、リリースビルド用の署名オプションやプラットフォーム固有の設定を指定します。

--buildConfigと本オプションを同時に使用した場合は、本オプションに指定した値が優先されます。

指定する内容は、2.2.4 パッケージングを参照してください。

- 242 -

Page 255: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

戻り値

0

正常終了

1

異常終了

実行例

以下のように実行します。

> cd <Cordovaプロジェクトのディレクトリ>

> cordova emulate android

- 243 -

Page 256: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

付録F 双方向通信アプリケーションのサンプル

F.1 サンプルアプリの種類

本製品では、以下のサンプルを提供しています。

リストアプリ以外のサンプルは、Cordovaプロジェクトの形式で提供しています。

実行に必要なCordovaプラグインとプラットフォームを追加して使用します。

実行方法は、第2章 ハイブリッドアプリケーションを参照してください。

アプリ名 内容 実行に必要なCordovaプラグイン

チャットアプリ チャットができます。 なし

点検アプリ 複数人で手分けして点検業務を行います。 なし

カメラアプリ 写真を共有し、手書きで写真に文字を書き込めます。 Camera

アンケートアプリ リアルタイムにアンケート結果を共有します。 なし

リストアプリ ルーム一覧、参加者一覧取得のサンプルです。 なし

サンプルアプリは以下のフォルダー配下に格納されています。

<製品インストールフォルダー>\sample

/opt/FJSVimsrv/sample

サンプルアプリごとの格納フォルダーは以下のとおりです。

アプリ名 格納場所

チャットアプリ sample\chat

点検アプリ sample\tenken

カメラアプリ sample\camera

アンケートアプリ sample\an

リストアプリ<製品インストールフォルダー>\rt_comm\samplehtml\list

/opt/FJSVimrtc/samplehtml/list

Webアプリケーション

双方向通信サービスを起動し、以下にブラウザでアクセスすることで、PC用のサンプルにアクセスできます。ハイブリッドアプリケー

ションとPCブラウザ間の双方向通信が行えます。

http://[サーバ名]:3300

注意

IEブラウザでは互換表示モードの場合、動作しません。

- 244 -

Page 257: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

付録G jQuery Mobile本章では、jQuery Mobileの使い方について説明します。

G.1 アプリケーション開発方法

G.1.1 提供ファイル

以下のスクリプトファイル、スタイルシートを提供します。拡張子の前に「.min」が付いているファイルは、空白、改行やコメントを削除し

てファイルサイズを縮小した圧縮版で、運用時は圧縮版のファイルを使用することを推奨します。拡張子の前に「.min」が付いていない

ファイルは、空白、改行やコメントにより可読性を向上させたファイルで、開発・デバッグ時に利用します。

提供ファイル 説明

jquery.mobile-1.4.2.js jQuery Mobileスクリプト

jquery.mobile-1.4.2.min.js jQuery Mobileスクリプト圧縮版

jquery.mobile-1.4.2.css jQuery Mobile用スタイルシート

jquery.mobile-1.4.2.min.css jQuery Mobile用スタイルシート圧縮版

jquery-2.1.0.js jQueryスクリプト

jquery-2.1.0.min.js JQueryスクリプト圧縮版

images/icons-png スタイルシートで使用するイメージ

images/icons-svg スタイルシートで使用するイメージ

images/ajax-loader.gif スタイルシートで使用するイメージ

G.1.2 アプリケーションを組み込む

jQuery Mobileは、アプリケーションに組み込んで使用します。

1. インストール先の、jQuery Mobileが格納されたディレクトリをコピーして使用します。

<製品インストールフォルダー>\development\jquerymobile\runtime

/opt/FJSVimsrv/development/jquerymobile/runtime

2. HTMLの<head>~</head>に以下の記述を追加します。

<link rel="stylesheet" href="runtime/jquery.mobile-1.4.2.min.css"/>

<script src="runtime/jquery-2.1.0.min.js"> </script>

<script src="runtime/jquery.mobile-1.4.2.min.js"> </script>

G.1.3 jQuery MobileによるHTMLページの作成方法

jQuery Mobileを利用したHTMLページの作成方法については、jQuery Mobile 公式サイト(http://jquerymobile.com/)のDemos(http://jquerymobile.com/demos/)を参照してください。

G.2 APIリファレンス

jQuery Mobile公式サイト(http://jquerymobile.com/)のAPI Documentation (http://api.jquerymobile.com/)を参照してください。

- 245 -

Page 258: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

G.3 開発を行う上での注意事項

開発を行う上での注意事項を以下にまとめます。

No. 内容 対応方法など

1 要素が多いとタグ構造解釈に時間がかかるため

にTIMEOUT ERRORが発生し、ページが表示さ

れない場合があります。

タグ構造を見直してください。

ハイブリッドアプリケーションの場合、config.xmlファイルの以下の項目を

修正してください。

<preference name="LoadUrlTimeoutValue" value="20000"/>LoadUrlTimeoutValue(既定値 20000msec)ページ読み込みからタイムアウトエラーまでの時間

2 ページの遷移時に画面効果を指定しても正しく表

示されない場合があります。

Androidの場合、4.4以降のバージョンを使用してください。

Android 4.3以前、iOSの場合、画面効果に依存しない設計にしてくださ

い。

3 Android 4.3以前の端末でハイブリッドアプリケー

ションでアイコンやボタンにテーマを指定した場

合、正しく表示されない場合があります。

Android 4.4以降のバージョン、またはiOSを使用してください。

Android 4.3以前を使用する場合、4.3以前の端末で、正しく表示される

ことを確認したテーマを使用してください。

4 Android 4.4以降の端末で画面回転に伴う

throttledresizeイベントが余計に発生する場合があ

ります。

Android 4.3以前のバージョン、またはiOSを使用してください。

Android 4.4以降を使用する場合、throttledresizeイベントに依存しない設

計にしてください。

G.4 留意事項

・ 本製品はjQuery Mobileをサポートしています。しかし、jQueryおよび、jQuery Mobileのコミュニティが本製品のサポートを表明して

いるわけではありません。

・ jQuery Mobile関連のファイルをCDNから読み込む方法は未サポートです。アプリケーションに組み込む方法は、G.1.2 アプリケー

ションを組み込むを参照してください。

・ 提供ファイルの名前を変更しないでください。

・ 提供ファイルの内容を変更しないでください。

・ 本製品の他のコンポーネントと利用する場合は、そのコンポーネントが動作保証するWebブラウザやOSとの組み合わせ条件で利

用してください。

・ jQuery Mobileの仕様により、プラットフォーム(端末、OS、Webブラウザ)によって表示が異なる要素があります。

・ 次版では非互換が発生する可能性があります。

- 246 -

Page 259: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

付録H トラブルシューティング

ここではトラブルシューティングについて記載します。

H.1 形式

アプリケーションを開発する上でのトラブルシューティングを以下の形式で記載します。

現象

発生現象を記述します。

原因

現象を発生させる元となった原因を説明します。

回避方法

回避方法を説明します。

プラットフォーム

現象が発生するプラットフォームを説明します。

機種

特定機種でだけ発生する場合、現象の発生を確認した機種を説明します。ここに記載されている機種以外の機種でも現象が発生

する可能性があります。機種が特定されない場合、「機種は特定されていません」と記述しています。

H.2 jQueryMobile使用時に発生するトラブル ページが表示されません。

現象

TIMEOUT ERRORが発生し、ページが表示されません。

原因

多くの要素(divタグ、ulタグ、liタグ)のタグ構造解釈には数十秒かかることがあるため、TIMEOUTERRORが発生し、ページが表示

されない場合があります。

回避方法

ハイブリッドアプリケーションの場合、config.xmlファイルの以下の項目を修正してください。

・ LoadUrlTimeoutValue(既定値 20000msec)

ページ読み込みからタイムアウトエラーまでの時間

プラットフォーム

特定されていません。

機種

機種は特定されていません。

ページに”Note: Navigation may not work if viewed locally”が表示されます。

現象

ページに”Note: Navigation may not work if viewed locally”が表示されます。

原因

不明です。

- 247 -

Page 260: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

回避方法

ありません。

プラットフォーム

特定されていません。

機種

機種は特定されていません。

ページの遷移時に画面効果を指定しても正しく表示されません。

現象

ハイブリッドアプリケーションでページの遷移時に画面効果を使用した場合、正しく表示されない場合があります。

原因

不明です。

回避方法

Androidの場合、4.4以降のバージョンをご使用ください。

iOSの場合、対処方法はありません。

プラットフォーム

Android 4.3以前、iOS。

機種

機種は特定されていません。

アイコンやボタンにテーマを指定しても正しく表示されません。

現象

ハイブリッドアプリケーションでアイコンやボタンにテーマを指定した場合、正しく表示されない場合があります。

原因

不明です。

回避方法

Android 4.4以降のバージョン、またはiOSをご使用ください。

プラットフォーム

Android 4.3以前。

機種

機種は特定されていません。

Select menuにフィルタリングを指定しても正しく絞り込んで表示されません。

現象

Select menuにフィルタリングを指定しても正しく絞り込んで表示されません。

原因

不明です。

回避方法

ありません。

プラットフォーム

特定されていません。

- 248 -

Page 261: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

機種

機種は特定されていません。

throttledresizeイベントが余計に発生します。

現象

Android4.4以降の端末で画面回転に伴うthrottledresizeイベントを発生させた場合、throttledresizeイベントが余計に発生する場合

があります。

原因

不明です。

回避方法

Android 4.3以前のバージョン、またはiOSをご使用ください。

プラットフォーム

Android 4.4以降。

機種

機種は特定されていません。

File not Foundが発生し、ページが表示されません。

現象

File not Foundが発生し、ページが表示されません。

原因

ファイル名が指定されていません。

回避方法

ハイブリッドアプリケーションでローカルファイルを参照する場合、必ずファイル名(例:index.html)まで指定してください。

プラットフォーム

特定されていません。

機種

機種は特定されていません。

_sampleフォルダー配下のページを表示できません。

現象

_sampleフォルダー配下のページを表示できません。

原因

ハイブリッドアプリケーションでフォルダー名の先頭にアンダースコア(_)があるとエラーが発生し、ページを表示できない場合があ

ります。

回避方法

フォルダー名の先頭にアンダースコア(_)を使用しないでください。

プラットフォーム

特定されていません。

機種

機種は特定されていません。

- 249 -

Page 262: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

H.3 Apache Cordova使用時に発生するトラブル ファイル選択ダイアログが表示されない

現象

ハイブリッドアプリケーションで、<input type="file" value="..." > を記述しても、ファイル選択ダイアログが画面上に表示されません。

原因

Apache Cordovaのバグ(https://issues.apache.org/jira/browse/CB-5294)です。

回避方法

アプリケーションで回避してください。

プラットフォーム

Android 4.4

機種

機種は特定されていません。

CordovaWebViewのgoBack、goForwardが正常動作しません

現象

CordovaWebViewのgoBack()、goForward()メソッドが正常に動作しません。

原因

不明です。

回避方法

ありません。

プラットフォーム

Android 4.4

機種

Samsung Galaxy S2 (Android 4.0.4)、Fujitsu F-01D (Android 4.0.3)で現象を確認しています。

menubuttonおよびsearchbuttonイベントが動作しません

現象

menubuttonおよびsearchbuttonイベントが動作しません。

原因

menubuttonおよびsearchbuttonイベントは、Android 3.0以降ではサポートされていません。

回避方法

ありません。

プラットフォーム

Android

機種

機種は特定されていません。

captureAudio APIが動作しません

現象

captureAudio APIを動作させると、録音アプリケーションを起動しません。

- 250 -

Page 263: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

原因

デフォルトの録音アプリケーションがインストールされていません。

回避方法

ありません。

プラットフォーム

Android

機種

Google Nexus 7で現象を確認しています。

FileTransferError.exceptionがnullになります

現象

不当なURLで動作させると、FileTransferError.exceptionがnullになります。

原因

FileTransferプラグインの内部実装による動作です。

回避方法

ありません。

プラットフォーム

AndroidおよびiOS

機種

機種は特定されていません。

InAppBrowserでwindow.openのoptionsが無視されます

現象

InAppBrowserでwindow.openのoptionsにpresentationstyleを指定してもフルスクリーン表示になります。

原因

不明です。

回避方法

ありません。

プラットフォーム

iOS

機種

iPhone 4SおよびiPad Airで現象を確認しています。

MediaプラグインのmediaStatusコールバックが呼び出されません

現象

Mediaプラグインで、Media.MEDIA_STARTINGでmeidaStatusコールバックが呼び出されません。

原因

不明です。

回避方法

ありません。

- 251 -

Page 264: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

プラットフォーム

iOS

機種

機種は特定されていません。

カメラで撮った写真を編集すると、アプリケーションが無反応になります

現象

カメラで撮影した写真を編集すると、編集するソフトウェアによってはアプリケーションが無反応になります。

原因

不明です。

回避方法

ありません。

プラットフォーム

Android

機種

Galaxy S2 (Android 4.0.4)で現象を確認しています。

カメラで撮った写真を編集できません

現象

CameraプラグインでsourceTypeをPHOTOLIBRARYあるいはSAVEDPHOTOALBUMを指定して、mediaTypeにALLMEDIAを指

定すると、allowEditパラメタが無視されます。そのため編集アプリケーションを選択するポップアップが表示されず、写真を編集す

る事ができません。

原因

不明です。

回避方法

ありません。

プラットフォーム

Android

機種

Galaxy S2 (Android 4.0.4)及びASUS Nexus 7 (Android 4.4.3)で現象を確認しています。

アンカータグ付きのURLが正しく解釈されません

現象

window.openにアンカータグ付きのURLを指定すると"webpage not available"というエラーメッセージが表示されます。

原因

Android OSでのURLの解釈に誤りがあるものと思われます。この問題はAndroid 4.1以降で修正されています。

回避方法

ありません。

プラットフォーム

Android 4.1より前のAndroidで発生が想定されます

機種

Galaxy S2 (Android 4.0.4)で現象を確認しています。

- 252 -

Page 265: アプリケーション開発ガイド - software.fujitsu.comsoftware.fujitsu.com/jp/manual/manualfiles/m160009/b1x10326/03z200/... · 2.3.27.1 Beacon受信機能 ... 2.4 プラグインの開発

H.4 そのほかのトラブル IMAPSプッシュにおいてプッシュ基盤サーバとの再接続に時間がかかる

現象

WiFi切り替えなどのネットワーク切断によりプッシュ基盤サーバとの接続が失われた後、ネットワークが復旧した後のサーバへの再

接続に時間がかかることがあります。

原因

プッシュ基盤サーバとの接続が失われた後、プッシュ部品からは接続をリトライしますが、プッシュの通信プロトコル仕様上、再接続

に成功するまで3分程度要します。

回避方法

ありません。

プラットフォーム

Android

機種

機種は特定されていません。

IMAPSプッシュにおいてプッシュ基盤サーバと接続できない場合、再接続をリトライし続けます

現象

WiFi OFFなどでネットワークが切断された環境下で、プッシュ基盤サーバとの接続を要求した場合、プッシュ基盤サーバとの接続

に成功するまで接続要求をリトライし続けます。

原因

仕様です。プッシュ機能という特性上、プッシュ基盤サーバとの接続に成功するまでアプリ側に意識させず、バックグラウンドで接

続要求をリトライし続けています。なお、電池持ち、CPU負荷を考慮したウェイトをかけているため、発熱などの問題は発生しません

(コネクション喪失から5分間は30秒間隔、以降は5分間隔)

回避方法

プッシュ基盤サーバと接続できるネットワーク環境か確認してください。

プラットフォーム

Android

機種

機種は特定されていません。

- 253 -