質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.51%
Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

App Store

App Storeは、Apple社が運営する、iPhone、iPod touch、iPad向けアプリケーションソフトのダウンロードサービスです。携帯電話、Wi-Fiによる無線通信に対応しており、多くのアプリケーションをダウンロード、インストールすることができます。世界中の開発者によってアプリケーションが登録されており、有償のソフトもあればフリーソフトも多く登録されています。

Q&A

1回答

3975閲覧

ハイブリッドアプリにおけるサーバー連携

1nakaji

総合スコア187

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

App Store

App Storeは、Apple社が運営する、iPhone、iPod touch、iPad向けアプリケーションソフトのダウンロードサービスです。携帯電話、Wi-Fiによる無線通信に対応しており、多くのアプリケーションをダウンロード、インストールすることができます。世界中の開発者によってアプリケーションが登録されており、有償のソフトもあればフリーソフトも多く登録されています。

0グッド

2クリップ

投稿2015/10/27 15:29

現在、ハイブリッドアプリを開発しています。

ハイブリッドアプリはHTMLやJava Scriptなどを含めて、
すべてサーバーからダウンロードするようにしています。
(サーバーサイドはPHPで記述しています)

この場合、スマフォアプリのHTML側には、
サーバー連携部分はどのように書くのがいいのでしょうか。

・location.hrefでPHPにリダイレクトさせる

最初に思いついた方法はこれでした。

ただ、当然最初のページでPHPリダイレクトして、
あとはすべてWebアプリとしての動きになります。
アプリというよりは本当にWebアプリのようになります。

もちろんきちんと動作はしますし、
オフラインでは使えないアプリなのでいいのですが、
そもそもこれで審査等は問題なく通るのでしょうか。

・ajax通信

HTMLからajax通信させる方法も考えたのですが、
「クロスオリジン要求をブロックしました」
とセキュリティで読み込みが拒否されます。

どのような方法で解決するのがよいか、
アドバイス頂けますと幸いです。

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

1nakajiさんが開発中のアプリで「どんな機能を実現したいか」によるのではないでしょうか?

大手銀行のアプリでも、ログイン後は文字通りWebアプリになっちゃうものもあります。提供したいサービスがそれで十分に提供出来ているなら、それで十分です。

でもせっかくネイティブアプリを開発しているのだし・・・とか、提供したいサービスの内容からするとWebアプリ的な挙動では十分なユーザーエクスペリエンスを提供出来ないというのであれば、Ajaxを使用すれば良いです。

クロスドメイン問題は回避可能です。但し、セキュリティ上の要件でわざわざ設けられた制限なので、それを回避するからには自己責任でセキュリティ対策を施す必要があります。

探せば情報はたくさん見つかりますので、手始めに下記ページ辺りをご参考になさってみてください。

[Ajaxのクロスドメイン制約とは?](http://tutty.info/496)

《 2015年10月28日 22:05 追記 》

クロスドメイン制約を回避する方法は幾つもあり、それぞれに一長一短があるようです。下記ページが結構詳しいので、そちらを御覧ください。

  JSONP などクロス ドメイン (Cross-Domain) 問題の回避と諸注意

この中には以下のような説明がありました。

一方、ここで説明する JSONP を使った回避方法の最大の利点は、Old Browser でも使用できる という点です。このため、広く一般で使用されるようなサービス (例えば、Bing Map、Google Map など) で多く採用されています。ただし、この方法のデメリットもありますので注意してください。(後述しますが、JSONP は、厳格なセキュリティを要求しないような汎用のサービスに向いています。)

先の回答では、一例として「JSONP」を使用した回避方法について情報連携させて頂きましたが、自由度が高い分、セキュリティ面ではリスクも高くなるようです。

ですので、結局は提供するサービスの内容とセキュリティ要件から、最適な方法を選択するのが重要ということになると思います。(ここが一番大変なのだと思いますが)

投稿2015/10/27 23:43

編集2015/10/28 13:04
pi-chan

総合スコア5936

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

1nakaji

2015/10/28 06:42

ご回答ありがとうございます。 こちらの実現したい機能によりなくはないわけですね。 >大手銀行のアプリでも、ログイン後は文字通りWebアプリになっちゃうものもあります。 >提供したいサービスがそれで十分に提供出来ているなら、それで十分です。 今回はログイン画面からWebアプリになるのですが、 そういったアプリもあるなら問題なさそうですね。 そうなるとトップページは単純に以下のタグだけになり、 あとはWebアプリとしての動作になると思います。 これで機能実現ができるのであれば、 これでも問題はないということですよね。 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script> location.href = "http://example.com"; </script> </head> <body> </body> </html> >クロスドメイン問題は回避可能です。但し、セキュリティ上の要件でわざわざ設けられた制限なので、 >それを回避するからには自己責任でセキュリティ対策を施す必要があります。 セキュリティ対策というのはCSRFインジェクションなどですよね。 ひとつ追加で筆問があるのですが、 例えば世の中には様々なAPIがあるかと思います。 Google mapなど。 そういうものはajax通信でいろいろなサイトで使用できますが、 これらはセキュリティ対策をした上でクロスドメイン問題を回避して、 使わせているということになるのでしょうか。
pi-chan

2015/10/28 12:56

自分はセキュリティ問題については全くの素人なので、詳しくは回答できませんが… 参考になるページがありましたので、回答欄に追記しておきますね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.51%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問