如何将 FCM 令牌发送到我的 php 服务器

Posted

技术标签:

【中文标题】如何将 FCM 令牌发送到我的 php 服务器【英文标题】:How can I do to send FCM token to my php server 【发布时间】:2022-01-21 19:31:14 【问题描述】:

我的问题与How to send FCM Token ID to php server? 完全相同,但我没有足够的声誉在那里发表评论。 我花了两天时间,我变得疯狂。 我尝试了很多解决方案,但从未得到结果。 我发现的所有内容对于我的初学者水平(或我的英语水平)来说都太复杂了,或者被弃用了。

我想以最简单的方式将 POST Token 和 Device_ID(我知道如何获取两者)发送到我的服务器。没关系它是 JSON、GET 或 POST 方法,还是其他任何方法。 只是一个简单的方法来做到这一点。 我不想要任何 UI 或其他类似的东西。一种在生成时自动发送 FCM 令牌的方式。

public class MyFirebaseMessagingService extends FirebaseMessagingService 
    private static final String TAG = "MyFirebaseMsgService";
    @Override
    public void onNewToken(String token) 
        String id = Settings.Secure.getString(getContentResolver(), Settings.Secure.android_ID);
        sendRegistrationToServer(token, id);
    

我只需要 sendRegistrationToServer()

非常感谢。

编辑 我终于让它工作了: DeviceService.java

public interface DeviceService 
    @FormUrlEncoded
    @POST("fcm_token_register.php")
    Call<String> insertToken(@Field("token") String token, @Field("id") String id);
    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl("https://*myserver*/")
            .addConverterFactory(GsonConverterFactory.create())
            .build();

调用它:

DeviceService service = DeviceService.retrofit.create(DeviceService.class);
Call<String> call = service.insertToken(token,id);
call.enqueue(new Callback<String>() 
    @Override
    public void onResponse(Call<String> call, Response<String> response) 
        Log.d(TAG, "OK : "+response.toString());
    
    @Override
    public void onFailure(Call<String> call, Throwable t) 
        Log.d(TAG, "Error : "+t.toString());
    
);

【问题讨论】:

【参考方案1】:

尝试使用Retrofit向PHP服务器请求。

interface YourService 

    @POST("your endpoint")
    fun registerFcmToken(@Body body: RegistrationBody): Call<Response>

...
data class RegistrationBody(val token: String, val deviceId: String)

【讨论】:

我已经尝试过改造。我知道这可能是解决方案,但我做不到,而且你的例子对我来说似乎不够详细。对不起。 究竟有什么难度?您需要一种如何通过改造提出请求的方法吗? 是的。 (谷歌翻译因为我的英语)我发现了很多非常麻烦的解决方案,与我的需求相比,这些解决方案在我看来过于庞大,此外,我无法在我需要的框架内实施它们。我不知道我应该创建什么作为一个类,一个接口,以及如何调用它们。

以上是关于如何将 FCM 令牌发送到我的 php 服务器的主要内容,如果未能解决你的问题,请参考以下文章

如何将推送通知令牌存储到外部数据库 - iOS 10,Swift 3

FCM 保持令牌同步

Firebase 云消息传递 - 如何验证令牌?

PHP中的Auth0 JWT令牌验证

如何显示随服务器发送的FCM Firebase通知

处理 FCM 设备组的刷新令牌