2017-03-10 31 views
-1

初めてonesignalを使用しています。私はすでにR &Dにあまりにも多くの時間を費やしていますが、出力はほとんどゼロです。だから私は私の必要条件に従います。OneSignal PHPによる通知プッシュ

  • 私はウェブサイトを持っています。サイトのiOSアプリとAndroidアプリも。ちょうどwhatsappまたはfacebookのように。
  • ユーザーは上記のいずれかにログインすると、ユーザーはデバイスにログインに基づいて、webpush通知またはiOSの通知を取得する必要があります。
  • ユーザーが一度にウェブサイトだけでなく、iOSアプリにログインしている場合、ユーザーは両方の通知を取得する必要があります。
  • ユーザーがiOS版からログアウトしてしまった場合、彼は再度ログインするまで、ユーザーはiOSデバイスに通知を取得するべきではありません。
  • 別のユーザーが同じiOSアプリにログインした場合、最後にログインしたユーザーの通知を受け取るべきではありません。彼は彼に関連する通知のみを受けるべきです。
  • ウェブサイトも同じです。

私は正常onesignalデモを開発しました。しかし、それはユーザーに依存しません。通知をトリガーすると、すべてのデバイスが通知を受け取ります。ここに私の質問があります。

  • 私はGCM(私はPHPバックグラウンドにあります)に取り組んでいます。私の知る限り、プッシュ通知はデバイスIDで機能します。だから、私は自分のmysqlデータベース(クロム、iOS、アンドロイドなどのための)に単一のユーザーの複数のデバイスIDを格納する必要がありますか?
  • どうすればそのデバイスIDを取得できますか?ユーザーがログインしていない場合は、通知を送信したくないことに注意してください。
  • データベースに保存するには? APIを呼び出すことで、そのデバイスIDをサーバーに渡し、私のサーバーはそれをデータベースに格納します。しかし、私は送るべきですか?ユーザーがログインしていない場合、どのユーザーのデバイスIDを保存する必要があるのか​​を知るにはどうすればよいですか?
  • ユーザーがデバイス上で変更されているか、同じであるか、またはログアウトしているかどうかを確認する方法を教えてください。

誰もが私の基本的な例を示すことができる場合は、それが理解されるであろう。私はPHP側からです。私がPHP開発者の視点から答えを得れば、私にとっては良いことになるでしょう。私はすでにstackoverflowにthis questionと頼んだ。しかし、答えはAndroidからのものでした。しかし、私は彼がサーバー側では、すべてのデバイスを管理する必要があることを彼は知らないと思う。だから私はその答えからもっと多くを得ていない。

+0

私は自分の製品にOnesignalを使用していますが、PHPの回避策も知っています。だから私を信頼してください。誰がプッシュ通知(backend-php apiまたは直接シグニチャダッシュボードから)を開始しているのか、どのシナリオがわかっているのでしょうか? – JTheDev

+1

@JTheDev。 backend-php apiはinitiationプッシュ通知です。 –

+1

@JTheDev。どのような景観があるのですか? 1つの通知トリガーイベントについて説明しましょう。投稿にコメントがある場合、投稿を投稿したユーザーは通知を受け取る必要があります。私はあなたがラベールの人だと思っています。あなたの理解を深めるために、私はlaravel 5.3の通知(https://github.com/laravel-notification-channels/onesignal)を使っています。私の頭痛は「ONE_SIGNAL_PLAYER_ID」です。それを取得し、維持する方法。私はそれがどのように機能するかわからない。 –

答えて

5

Onesignalは、さまざまな種類のデバイスにプッシュ通知を送信するのに適したプラットフォームです。私は私のプロジェクトで同じものを使用しています。私がやっているのは、ユーザーがログインしているときはいつでも、クライアントからデバイストークンを取得し、そのAPIを使用してユーザーの信号を作成するということです。我々は維持する必要があり

  • Androidの視点(私は...あなたはアンドロイドのためのGoogleのプロジェクト番号& GoogleのAPIキー、iOS用P12ファイルなどでonesignalを設定する方法を知っていると信じて) Googleのプロジェクト番号とGoogle APIキーが変更されていない限り、デバイスのgcmトークンは常に同じになります。

  • 同じプロジェクトにb2b、b2cなど(同じDBとバックエンドを持つ)のような別のアプリケーションがある場合は、gcmトークンも変更されますので、oneignalプレーヤーIDも変更されます。

したがって、同じgoogle APIキーの場合、ユーザーを再度作成して削除しても、onesignalは常に同じプレーヤーIDを返します。 大きなプロジェクトでは、開発者は、ユーザーが異なるデバイス(android、iosなど)にログインしている可能性があります。したがって、ユーザーは複数のトークンを持つことができ、プレイヤーIDも同じです。もう1つの要件は、ユーザーがログインしていない場合に通知を受けたくないということです。

あなたの要件を念頭に置いて、1つのMySQLテーブル構造。

  1. この2つのテーブルがonesignalために必要とされるトークンとプレイヤーID

    -token_id 
        -user_id 
        -device_id 
        -device_token 
        -onesignal_player_id 
        -subscription 
    

を格納するデバイスのタイプ(オプション)

-id 
    -device_type 
  • 一つを格納するためのテーブルを働く

    ケース1:ユーザーが最初のトークンのテーブルをチェックし、ログインするためにしようとするたびに

    。同じトークンを持つ他のユーザーがいるかどうかを確認します(同じデバイスで別のユーザーがログインしたことを意味します)。そのようなトークンがあればそれを削除してください。次に、1つの信号に新しいプレーヤーを作成し、詳細をトークンテーブルに保存します。サブスクリプションを1に設定します。サブスクリプションは通知用です。ユーザーがログアウトするたびに、サブスクリプションを0に設定します。通知はサブスクライブされません。

    ケース2

    ユーザがログインするたびに、それはすでにテーブル内に存在しているかどうか、トークンをチェック。トークンの所有者が同じであれば、サブスクリプションを1とマークするだけで、それ以上の通知を受け取ることができます。

    ケース3:ユーザーが(一度に複数のデバイスを)ログインする別のデバイスを使用しています

    、GCMトークンは確かに異なるだろう。したがって、同じユーザーの別のトークンとして保存し、サブスクリプションを1とマークします。したがって、両方のデバイスが通知を受け取ります。

    最終的に、通知を送信する前に、購読されているその特定のユーザーのすべてのトークンを取り出し、すべてのユーザーに通知します。それはあなたの問題を解決します。

    これはちょっと混乱するかもしれません。しかし、心配しないで、修正することができます。

    enter image description here

  • +0

    あなたの努力に感謝します。しかし、私はアンドロイドのためのGoogleのプロジェクト番号とGoogleのAPIキー、iOSなどのためのp12ファイルでonesvalsalを設定する方法がわかりません。 –

    +0

    そして、ユーザーがウェブサイト(クロム、Firefoxなど) ? –

    +0

    Androidデベロッパーは、デバイスのgcmトークンを生成する方法を知っています。そのプロジェクトで使用されているGoogle APIキーによって異なります。 Google開発者用コンソールから取得するGoogleのプロジェクト番号。両方をコピーします。 1つの信号ダッシュボードを開きます。作成したアプリケーションを選択します。それ以外の場合は、作成します。アプリの設定では、プラットフォームタブがあります。その中で、近くのGoogle Androidセクションの設定ボタンをクリックします。 – JTheDev

    -1
    • 1人のユーザー用の複数のデバイスを格納する場合は、何らかの方法で で識別する必要があります。あなたはウェブフックをオンにすることができます。新しいユーザーが登録すると、 は自分の識別情報(ID、電子メールなど)を送信できます。このデータを使って 新しいデバイスIDを取得します。それであなたはあなたが何であるかのようにそれを保存しなければなりません が好きです。
    • トラッキングはユーザーのログインであるかどうかを確認するには、 のID情報を使用します。ログインしてログアウトすると、APIにリクエストを送信します。 ユーザーは1台のデバイスにログインして、 otherにログアウトすることができます。
    • だからこそ私はデバイスIDを送信し、記録されたステータスをペアで保存しますが、好きな方法でそれを行うことができます。
    0

    This tutorial PHPで通知を送信されお手伝いを致します。

    +0

    ソリューションへのリンクは大歓迎ですが、あなたの答えはそれがなくても有用であることを確認してください:[リンクの前後関係を追加](http://meta.stackexchange.com/a/8259)ターゲットページが利用できない場合にリンクするページの最も関連性の高い部分を引用します。 [リンク以上の回答は削除されるかもしれません](http://stackoverflow.com/help/deleted-answers)。 – mrun

    関連する問題