如何通过改型在博客中使用FCM通知

时间:2019-02-06 09:23:27

标签: android json firebase firebase-cloud-messaging retrofit

如果没有像博客模板那样的托管/自有服务器
Managed by google,我正在寻找一种设置FCM服务器协议的方法,并设置对项目的依赖关系。
我在此question中看到了。一些答案包含类似于使用“ okhttp3”的改造代码的代码

String SCOPE = "https://www.googleapis.com/auth/firebase.messaging";
String FCM_ENDPOINT
     = "https://fcm.googleapis.com/v1/projects/zoftino-stores/messages:send";

GoogleCredential googleCredential = GoogleCredential
    .fromStream(new FileInputStream("firebase-private-key.json"))
    .createScoped(Arrays.asList(SCOPE));
googleCredential.refreshToken();
String token = googleCredential.getAccessToken();



final MediaType mediaType = MediaType.parse("application/json");

OkHttpClient httpClient = new OkHttpClient();

Request request = new Request.Builder()
    .url(FCM_ENDPOINT)
    .addHeader("Content-Type", "application/json; UTF-8")
    .addHeader("Authorization", "Bearer " + token)
    .post(RequestBody.create(mediaType, jsonMessage))
    .build();


Response response = httpClient.newCall(request).execute();
if (response.isSuccessful()) {
    log.info("Message sent to FCM server");
}

目前,我在Android应用中使用Blogger API,通过使用翻新和REST API作为JSON对象将Blogger内容与其集成在一起。 这是我用来检索博客的BloggerAPI类

public class BloggerAPI {

    public static final String BASE_URL =
            "https://www.googleapis.com/blogger/v3/blogs/2399953/posts/";
    public static final String KEY = "THE-KEY";

    public static PostService postService = null;

    public static PostService getService() {

        if (postService == null) {
            Retrofit retrofit = new Retrofit.Builder()
                    .baseUrl(BASE_URL)
                    .addConverterFactory(GsonConverterFactory.create())
                    .build();
            postService = retrofit.create(PostService.class);
        }

        return postService;
    }

    public interface PostService {
        @GET
        Call<PostList> getPostList(@Url String url);
    }
}

因此被使用

private void getData(){

    String url = BloggerAPI.BASE_URL + "?key=" + BloggerAPI.KEY;

    if(token != ""){
        url = url+ "&pageToken="+token;
    }
    if(token == null){
        return;
    }

   final Call<PostList> postList = BloggerAPI.getService().getPostList(url);
    postList.enqueue(new Callback<PostList>() {
        @Override
        public void onResponse(Call<PostList> call, Response<PostList> response) {
            PostList list = response.body();
            token = list.getNextPageToken();
            items.addAll(list.getItems());
            adapter.notifyDataSetChanged();
            Toast.makeText(MainActivity.this, "Sucess", Toast.LENGTH_LONG).show();
        }

        @Override
        public void onFailure(Call<PostList> call, Throwable t) {
            Toast.makeText(MainActivity.this,"Error occured",Toast.LENGTH_LONG).show();
            Log.i(TAG, "onFailure: "+t.toString());
        }
    });

}

到目前为止,我已经成功安装了Firebase,并且它依赖于项目,因此能够通过Firebase控制台手动发送通知,我要做的是尝试在向博客发布新帖子时自动发送通知< / p>

3 个答案:

答案 0 :(得分:1)

您需要使用https://fcm.googleapis.com/fcm/send发送通知。这是official documentation

这是要导入和测试的邮递员收藏 https://www.getpostman.com/collections/1d2e1f755d25f361c52f

答案 1 :(得分:0)

我以前没有使用过Blogger API,但是正如您所说的,您是通过Blogger API创建帖子的,我可以为您提供解决问题的线索。

例如,您已经在PHP中创建了一个API以发送通知(所有用户必须同时管理1000个用户),可以使用 this link

我看到了Adding Post的工作方式。添加新帖子时,它会给您成功的响应。

在添加帖子后获得成功响应时,可以调用Notification的PHP API。

希望您会将我的文字转换为代码。这将帮助您确定。

如果您有任何疑问,请告诉我。

答案 2 :(得分:-2)

您可以使用发送FCM通知给Blog的订阅者。参考:- FCM topic messaging