1

私はモバイル開発に不慣れで、やらなければならないプロジェクトがあり、迷子になるまで問題の解決策を探していたので、ここで最終的な答えを見つけられることを願っています.

サーバー (php & MySQL DB) があり、サーバーからデータを取得する iOS + Android でモバイルアプリを開発しています。モバイル アプリは、最初の実行時にサーバーからデータを取得し、電話に保存する必要があります。これにより、再度実行するたびに、保存されたデータが取得されます。

アプリがすぐにデータを更新できるように、変更が行われるたびに、サーバーは「ユーザーが気付かないうちに」アプリに通知する必要があります。

Webサービス(おそらくRESTKitを使用したREST)を使用するか、サーバーレコードにある種のタイムスタンプを適用することを考えましたが、これらはすべて問題ではありません.

私の問題は、変更が発生するたびにサーバー自体が変更についてアプリに通知し、アプリが新しいデータを更新できるようにする方法が見つからないことです。プッシュ通知の使用を考えましたが、特に iOS では、ユーザーから非表示にすることはできません。

それで、それを行う可能な方法はありますか?複雑ですか?それは価値がありますか?他の提案?

私が言ったように、私は新しいので、私の考えが間違っているかもしれません。

4

5 に答える 5

1

少なくとも iOS では、解決策は Apple プッシュ通知を使用することです。押し付けがましくせず、できるだけ透明にしたい場合は、次のように、必要な「通知」シグナルの種類を定義できます。

[[UIApplication sharedApplication] registerForRemoteNotificationTypes:
         (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];

バックグラウンドプロセスに関しては、それができるとは思いません。Apple は、バックグラウンドでできること (バックグラウンド スレッドではなく、アプリケーションにいない間の作業プロセスとしてのバックグラウンド) について非常に厳格です。私がアドバイスするのは、通知バッジを使用することです。これにより、ユーザーは何か新しいものがあることを知り、アプリケーションに入ったときに更新を開始できます。


私はヤセに同意しなければなりません:

ユーザーが認識していないのに、なぜデータを更新するのですか?

できるだけユーザーフレンドリーにする必要があります。私の意見では、アプリケーションがリソースを消費する可能性があることをユーザーに知らせないのは悪いことです。2 MB の情報を更新していて、ユーザーが 3G を使用していると想像してください...

于 2012-06-27T09:55:39.153 に答える
1

何をしようとしているのか説明できますか?ここでの古典的なイディオムは、アプリケーションの起動時にデータを更新することです (キャッシュされたバージョンがまだ最新であり、ユーザーが接続していない場合は、キャッシュされたバージョンを使用できます) ユーザーが認識していない場合にデータを更新する理由?

于 2012-06-27T09:59:54.080 に答える
1

私があなたの質問に正しく従っているかどうかはわかりませんが、変更が行われたことをサーバーに認識させ、それらの変更をユーザーに通知したいようです。

cron ジョブを実行して、必要な時間サイクルでサーバーをチェックしてから、ユーザーにプッシュ通知を送信してみませんか (iOS の場合)。

iOS プッシュ通知チュートリアル

私は Android の経験がほとんどありませんが、それらのデバイスでプッシュ通知を行うのはより粘着性があるようです。(私は誰かがすぐにそれについて私を修正すると確信しています:D)

これは役立つかもしれません:

Android プッシュ通知

于 2012-06-27T10:14:15.247 に答える
1

ユーザーがアプリを認識していない場合、iOS では不可能です。サーバー側からアプリケーション データを更新できる唯一の方法は、次の場合です。

  1. ...アプリケーションが開いていて、tcp 接続を開いたままにしている
  2. ...プッシュメッセージを送信します(ユーザーがアプリケーションを開くように)

どちらの場合も、ユーザーはアプリケーションが実行中であることを認識しています。できることは、ユーザーがアプリを使用している間にバックグラウンドでデータを更新することです。プッシュ メッセージを使用して、ユーザーにアプリを開かせることができます。しかし、それだけです。

Android では、アプリケーションにバックグラウンド サービスを実行させると、さらにいくつかの可能性が生じる可能性がありますが、バッテリーが消耗している場合などにユーザーがアプリを削除することを忘れないでください。

于 2012-06-27T10:32:53.303 に答える
0

アプリケーション データの更新については、サーバー上のデータのバージョンを確認する必要があります。これに対する最善の方法は、ユーザーがアプリケーションを起動するたびにアプリがサーバーに問い合わせるようにすることです。ユーザーがアプリを起動 -> アプリがサーバーに RESTful API スタイルの新しいデータがあるかどうかを問い合わせる -> サーバーの応答が yes/no -> 存在する場合は新しいデータであり、アプリケーションはそれをデバイスにロードします。

于 2012-06-27T10:36:36.680 に答える