Я пытаюсь отправить уведомление FCM из моего приложения вместо POSTMAN, но ничего не происходит, пока работает нормально с Почтальоном - PullRequest
0 голосов
/ 15 апреля 2019

Я делаю приложение для Android для своего колледжского праздника и хочу добавить в приложение функцию уведомления FCM, чтобы каждый раз мне не приходилось отправлять ее из POSTMAN, но она не работала, вместо этого, когда уведомление отправлялось из POSTMAN на https://fcm.googleapis.com/fcm/send, работает отлично.Я хочу сделать это из приложения.

public class Coordinators extends AppCompatActivity {

    EditText Title, Text, Details;
    Button send;
    DatabaseReference databaseReference;
    String title, text, details;
    String url = "https://fcm.googleapis.com/fcm/send";
    String token = "key=AIzaS...";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_coordinators);

        databaseReference = FirebaseDatabase.getInstance().getReference("Notification");

        Title = (EditText) findViewById(R.id.title);
        Text = (EditText) findViewById(R.id.text);
        Details = (EditText) findViewById(R.id.details);
        send = (Button) findViewById(R.id.Send_notification);

        send.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

               title = Title.getText().toString();
               text = Text.getText().toString();
               details = Text.getText().toString();
               send_notification();
            }
        });
    }

Вот мой метод send_notification.

private void send_notification() {
        JSONObject jsonObject1 = new JSONObject();
        try {
            jsonObject1.put("extra_information", details);
            jsonObject1.put("title", title);
            jsonObject1.put("text", text);

        } catch (JSONException e) {
            e.printStackTrace();
            Log.e("CATCH Exception1: ", e.toString());

            Toast.makeText(getApplicationContext(), "Some error Occurred :(", Toast.LENGTH_LONG).show();
        }

        JSONObject jsonObject2 = new JSONObject();
        try {
            jsonObject2.put("priority", "high");

        } catch (JSONException e) {
            e.printStackTrace();
            Log.e("CATCH Exception2: ", e.toString());

            Toast.makeText(getApplicationContext(), "Some error Occurred :(", Toast.LENGTH_LONG).show();
        }

        JSONObject jsonObject = new JSONObject();
        try {
            jsonObject.put("to", "/topics/NEWS");
            jsonObject.put("collapse_key", "type_a");
            jsonObject.put("data", jsonObject1.toString());
            jsonObject.put("android", jsonObject2.toString());

        } catch (JSONException e) {
            e.printStackTrace();
            Log.e("CATCH Exception3: ", e.toString());

            Toast.makeText(getApplicationContext(), "Some error Occurred :(", Toast.LENGTH_LONG).show();
        }

        RequestQueue requestQueue = Volley.newRequestQueue(getApplicationContext());
        JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, url, jsonObject, new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject response) {
                Toast.makeText(Coordinators.this, "Successfully Sent", Toast.LENGTH_SHORT).show();
                Log.e("Response", response.toString());

            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Log.e("Error: ", error.toString());
                    Toast.makeText(getApplicationContext(), "Please try again!", Toast.LENGTH_SHORT).show();
            }
        }){
            @Override
            public Map<String, String> getHeaders() throws AuthFailureError {
                Map<String, String> params2 = new HashMap<String, String>();
                params2.put("Authorization", token);
                Log.e("HEADER", params2.toString() + "\n\n\n");
                return params2;
            }
        };
        requestQueue.add(jsonObjectRequest).setRetryPolicy(new RetryPolicy() {
            @Override
            public int getCurrentTimeout() {
                return 30000;
            }

            @Override
            public int getCurrentRetryCount() {
                return 0;
            }

            @Override
            public void retry(VolleyError error) throws VolleyError {
                Toast.makeText(getApplicationContext(), "Slow Internet Connection", Toast.LENGTH_SHORT).show();
            }
        });
    }

Это то, что я посылаю от почтальона

{
    "to": "/topics/NEWS",
    "collapse_key": "type_a",
    "data": {
        "extra_information": "This is a test notification.",
        "title": "Test",
        "text": "Test"
    }
}

Iприменили заголовки в POSTMAN:

Content-Type                 application/json
Authorization                key=AIzaS...

и отправили его по URL с использованием метода POST https://fcm.googleapis.com/fcm/send

Снимок экрана почтальона - https://drive.google.com/open?id=1GaSMmfjAAExBy4RBevuuiQKenfWZZ9iM

...