2016-05-19 6 views
0

デバイスからデバイスへの通知にGCMを使用する方法を簡単に理解できるリンク先を教えてください。サーバーと受信機としてデバイスを作るために必要なものデバイスをデバイスに送信するgcm通知

君たちは私の問題へのよりよい解決策を持っているかもしれませんが、私は私の要件を説明しましょう私は、他のユーザーができるボタンクリックで人々の1つのまたはグループに通知(事前定義されたメッセージ)を送信したい

同じことをする。

おかげ

+0

gcm https://developers.googleでデバイスグループを使用する必要があります。com/cloud-messaging/notifications#sending_upstream_messages_to_device_group_on_ios –

+0

メッセージの送信は、送信するためにapiキーを公開する必要があるため、サーバー上でのみ行う必要があります。サーバーにメッセージを送信して、サーバーに作業をさせたいプッシュを示してください – tyczj

答えて

0

は、私は基本的な作業 あなたは携帯電話の両方が接続サーバーを持っているサーバーと2つの携帯電話

ステップ1をneed-を説明してみましょう。

ステップ2あなたは、あなたがそこに新しいプロジェクトを作成し、プロジェクトにGCM APIを追加し、このlink

ステップ3では、Google Developersページに移動します。プロジェクトのsender_idを保存します。また、APIの資格情報を確認し、新しいブラウザキーを追加し、そのキーを保存します。

ステップ4プロジェクトにGCMを追加します。そのためには、Eclipseがインストールされているルートディレクトリに移動します。次に、フォルダextras/google/google-play-services/libsproject/に移動し、そこにあるフォルダを別の場所にコピーします。その後、そのフォルダをEclipseのワークスペースにインポートし、そのプロパティを変更してライブラリにします。次に、これをあなたのアプリプロジェクトに追加します。

ステップ5モバイルをGCMに登録する必要があります。そのために、あなたはこの

// to start process 
public void registerDevice() { 
    // TODO Auto-generated method stub 
    try { 
     if (checkPlayServices()) { 
      regid = getRegistrationId(); 

      if (regid.isEmpty()) { // creating a new reg id 
       registerInBackground(); 
      } else 
       saveid(); 
     } else{ 

     } 
    } catch (Exception e) { 
    } 
} 

// to create a new id 
private void registerInBackground() { 
    // TODO Auto-generated method stub 
    try { 

     AsyncRegister logMeIn = new AsyncRegister("<you project id here>", context); 

     logMeIn.doneWith = this; 
     logMeIn.execute(); 

     System.out.println("execute complete"); 

    } catch (Exception e) { 
    } 
} 

// to fetch stored registration id 
private String getRegistrationId() { 
    // TODO Auto-generated method stub 
    try { 


     int i=myPrefs.getInt("cuid", 0); 

     if(id!=i){ 
      myPrefs.edit().putInt("cuid", id).commit(); 

      int registeredVersion = myPrefs.getInt("appversion", 
        Integer.MIN_VALUE); // to check if app is updated 
      int currentVersion = getAppVersion(); 

      if (registeredVersion != currentVersion) { 
       myPrefs.edit().putInt("appversion",currentVersion).commit(); 
      } 

      return ""; 
     } 

     String registrationId = myPrefs.getString("regid", ""); 

     if (registrationId.isEmpty()) { 
      return ""; 
     } 

     int registeredVersion = myPrefs.getInt("appversion", 
       Integer.MIN_VALUE); // to check if app is updated 
     int currentVersion = getAppVersion(); 

     if (registeredVersion != currentVersion) { 
      myPrefs.edit().putInt("appversion", currentVersion).commit(); 
      return ""; 
     } 

     // when id is stored previously then this is called 
     return registrationId; 
    } catch (Exception e) { 
    } 
} 

//to fetch the current app version 
private int getAppVersion() throws NameNotFoundException { 
    // TODO Auto-generated method stub 

     PackageInfo packageInfo = context.getPackageManager().getPackageInfo(
       context.getPackageName(), 0); 
     return packageInfo.versionCode; 
} 

// to check if play services are there on the device 
private boolean checkPlayServices() { 
    // TODO Auto-generated method stub 
    try { 

     int resultCode = GooglePlayServicesUtil 
       .isGooglePlayServicesAvailable(context); 
     if (resultCode != ConnectionResult.SUCCESS) { 
      if (GooglePlayServicesUtil.isUserRecoverableError(resultCode)) { 
       toSend = new Bundle(); 
        //tell user google play needs to be updated 

      } else { 
       //tell user their system does not support GCM 
      } 

      myPrefs.edit().putBoolean("support", false).commit(); 

      return false; 
     } 
     myPrefs.edit().putBoolean("support", true).commit(); 
     return true; 
    } catch (Exception e) { 
    } 
} 

ステップ6保存登録IDのようなサンプルコードで動作することができますし、それを保存するようにサーバーに渡します。

手順7ユーザーが[送信]ボタンをクリックすると、サーバーにメッセージを渡します。サーバーはDBに格納されているIDのリストを引き出し、それらのIDと共にGCMにメッセージをプッシュします。

ステップ8ここで、GCMは、そのメッセージが与えられたすべての電話機にそのメッセージを送信します。

ステップ9 GCMからテキストを受け取った受信者をアプリに追加して、それをユーザーに表示します。

これは簡単な説明です。これを詳細に理解したい場合は、オンラインチュートリアルをお読みください。それ以外の場合は、私のグループのテキスト(私のプロフィールの説明にあるリンク)を教えてください。私は喜んであなたを助けます。

0
String postData = "{ \"registration_ids\": [ \"" + OtherDeviceToken+ "\" ], " + 
          "\"delay_while_idle\": true, " + 
          "\"data\": {\"tickerText\":\"Your title\", "+ 
          "\"contentTitle\":\"AppName\", " + 
        "\"message\": \" " + edtYourMessage.getText().toString() + "\"}}"; 

MediaType JSON= MediaType.parse("application/json; charset=utf-8"); 
RequestBody body = RequestBody.create(JSON, postData); 
OkHttpClient client = new OkHttpClient(); 
Request request = new Request.Builder() 
.url("https://android.googleapis.com/gcm/send") 
.addHeader("Content-Type", "application/json") 
.addHeader("Authorization", "key=" + SERVER_API_KEY) 
.post(body) 
.build(); 

okkhttp要求を実行します。

関連する問題