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

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

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

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

2回答

2313閲覧

サーバーからの受信処理について

y-shoji

総合スコア7

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

1クリップ

投稿2018/04/21 14:19

スマホアプリでグループチャットのような機能を実装しようとしています。
簡単に説明しますと、クライアント側でメッセージの送信を行い、
サーバー側でDBに登録し、その情報を受信し表示するというものです。
環境:Xcode9 Swift4

知りたいことは、何をトリガーとして受信処理を行うのが一般的かです。

思いつくのは↓

  1. サーバー側で新しいメッセージを受信したら、クライアントに通知し受信処理を行う。
  2. クライアント側で周期的に受信処理を行う。

自分はスマホアプリ開発の経験が浅いため、
通信回数の考慮や、サーバーからの通知方法等、不明点が多い状態です。

どういったものが一般的であったり理想的なのか
ご教示、よろしくお願いいたします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

最近ではFirebaseやRealmなどを使用してクライアントサイドとサーバサイドのデータベースを同期させてチャットアプリを作る例をよく見かけます。
この場合、クライアント側のデータベースオブジェクトの変更を監視するのみでサーバサイドへ定期的にチェックするようなプログラムは必要ないです。

そして、クライアント側のアプリが起動していなくてもPush通知で知らせる仕組みはFirebaseとサーバサイドアプリとの連携で実現できます。

Google公式のサンプルはCodelabにあるFriendlyChatが参考になるのではないでしょうか。

投稿2018/04/23 14:30

nakasho_dev

総合スコア2655

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

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

y-shoji

2018/04/26 11:31

回答ありがとうございます。 教えていただいたFirebaseに関して、 追加で知りたいことがあるのですが、 「すでにMySQL等で作成されたDBの更新監視をし通知を飛ばす」 という機能はないでしょうか。 というのも、 実はすでにサーバー側のDBや処理自体は作成済みで、 サーバーからの通知方法に関してのみ悩んでいたところです。 要するに「もっと早くFirebaseを知っていれば・・」という状態です。
nakasho_dev

2018/04/26 14:23

Firebaseにそのような都合の良いものはないです。なんとなくPOSTでサーバにメッセージを送ってサーバからクライアントにPush通知のようなシステムを作ろうとされているようなイメージなのですが、もしその通りだと規模によっては使い物にならなくなると思います。 DBの更新時に何か処理をしたいのであればMySQLだとTrigger機能があります。DBの更新を契機にFirebase Notificationを叩いてPush通知をする、というやり方はできるかもしれません。
y-shoji

2018/04/27 09:42

回答ありがとうございます。 教えていただいた方法で試してみようと思います。
guest

0

個人的な経験上の意見になってしまい恐縮ですが、
通信量などを考慮するとサーバーからプッシュ通知を受けるのが良いのかと思っています。
2の場合ですとメッセージがない場合にも通信する可能性もありますので。

プッシュ通知についての参考記事
https://developer.apple.com/jp/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/SupportingNotificationsinYourApp.html
http://developers.goalist.co.jp/entry/2017/08/31/175708
https://qiita.com/natsumo/items/ebba9664494ce64ca1b8

投稿2018/04/21 22:37

newmt

総合スコア1277

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

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

y-shoji

2018/04/26 11:35

回答ありがとうございます。 教えていただいた、プッシュ通知関連のサイトを見て、 試してみようと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問