2017-08-09 7 views
0

私はSwiftには新しく、今はリアルタイムのユーザーからユーザーへの通知を送信する必要があるiOSアプリケーションを開発しています。チャットアプリと同じように、ユーザーが新しいメッセージを受け取ると、iPhoneは通知を送信する必要があります。私の場合は、通知のみが必要ですが、リアルタイムで行わなければなりません。 1人のユーザーがボタンをクリックすると、もう1人が通知を受け取るはずです。私は多くの記事や質問を読んだことがありますが、良い例は見つけられませんでした。私はOneSignalとFireBaseのpodファイルを自分のアプリにインストールしました。私は自分のサーバーからアプリに通知を送ることができますが、今はデバイス間で通知を送る必要があります。次のコードでswift 3を使用してデバイスのデバイス通知にリアルタイムデバイスを送信するにはどうすればよいですか?

私は、ユーザーIDを取得します:

func onOSSubscriptionChanged(_ stateChanges: OSSubscriptionStateChanges!) { 
    if !stateChanges.from.subscribed && stateChanges.to.subscribed { 
     print("Subscribed for OneSignal push notifications!") 
    } 
    print("SubscriptionStateChange: \n\(stateChanges)") 

    //The player id is inside stateChanges. But be careful, this value can be nil if the user has not granted you permission to send notifications. 
    if let playerId = stateChanges.to.userId { 
     print("Current playerId \(playerId)") 
    } 
} 

しかし、どのように私はそれに通知を送信するために、このIDを使用することができます。 例や示唆をいただければ幸いです。

+0

[Firebase機能を使用してFCMをユーザーに送信するにはどうすればいいですか?](https://stackoverflow.com/questions/42770005/how-can-i-use-firebase-functions-to-send-fcm -to-user) – the4kman

+0

デバイスメッセージをデバイスに送信するには、Webサービスを設定してリクエストを処理し、必要なデータをFirebaseサービスに送信する必要があります。 – Barns

+0

あなたが私に送ったリンクを見ましたが残念ながらそれは私の問題に対する答えを提供しません:( – Dakata

答えて

1

私はFirebaseを使用しました。私は必要なすべての機能を提供しました。私は信号を調べなかった。

私が使用した解決策を説明します。はい、他にも解決策があります。

ウェブサーバーが必要です。 Stratoのようなプロバイダーからのものがあります(あなたが持っていれば、自分でも使うことができます)。少なくとも、仮想サーバーが必要です。

私は私のwebserviceにPHPを使用しています。そのウェブサービスは、私のメッセージをiOSおよびAndroidデバイスに送信するように設定します。 iOSとAndroid端末では特定の種類のメッセージを別々に処理するため、どの種類の通知が最適なのかを判断する必要があります。

Firebase(鍵、認証、URL)から取得したクレジットを使用して、Firebase通知スクリプトで使用した設定ファイルを作成しました。 (あなたが送信するメッセージの種類を--decide実際のメッセージを送ることができる前に、あなたがやるべき仕事がたくさんあります

$headers = array(); 
$headers[] = 'Content-Type: application/json'; 
$headers[] = 'Authorization: key='.$server_key; 

//Setup curl, add headers and post parameters. 
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                  
curl_setopt($ch, CURLOPT_POSTFIELDS, $json); 
curl_setopt($ch, CURLOPT_HTTPHEADER,$headers); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

$error = "0"; 
//Send the request 
$curl_result = curl_exec($ch); 
if($curl_result == FALSE){ 
    $error = curl_error($ch); 
} 

//Close request 
curl_close($ch); 

:私はFirebaseサービスでこのような

何かを伝えるためにカール使用しましたデータのペイロード、または単に通知)。それに応じてフォーマットします。これについては、Firebaseのマニュアルを参照してください!

デバイスから、Webサービスと通信する必要があります。このために私はURLRequestを使ってサーバーと通信しました。リクエストを送信する方法(私はPOSTを使用した)を決定し、それに応じてパラメータを追加してください。

あなたのリクエストに対する応答として、Webサービスからの返信を返すことをお勧めします。これは、通常、メッセージが正常に送信されたかどうかについての情報を返すJSON文字列で行われます。必要に応じてコード内のレスポンスを使用します。エラー処理。

はい、これは単なるスケッチです。それは多くの仕事です!しかし、あなたは自分でそれをすることによって多くを学ぶでしょう。

関連する問題