我正在尝试使用 fcm 使用改造类向其他应用程序发送消息,但它在改造类中出现错误



这是我尝试初始化 fcm 类对象时遇到的错误

com.example.myfoodserver E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.myfoodserver, PID: 28042
java.lang.ExceptionInInitializerError
at okhttp3.OkHttpClient.newSslSocketFactory(OkHttpClient.java:263)
at okhttp3.OkHttpClient.<init>(OkHttpClient.java:229)
at okhttp3.OkHttpClient.<init>(OkHttpClient.java:202)
at retrofit2.Retrofit$Builder.build(Retrofit.java:628)
at com.example.myfoodserver.remote.RetrofitFCMClient.getInstance(RetrofitFCMClient.java:17)
at com.example.myfoodserver.ui.order.OrderFragment.initViews(OrderFragment.java:126)
at com.example.myfoodserver.ui.order.OrderFragment.onCreateView(OrderFragment.java:106)
at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2698)
at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:320)

这是 fcm 类代码

public interface IFCMService {
@Headers({"Authorization: key=AAAAVY7Xgs4:APA91bF_OPZaLVUixFZ3yxBG2lJn2s45o1J99cvO2YW-gBOGbpUkeUUDgalJsiTuTMXBA1orPa2Uqjt1Gsd_FcbOdoMpjy7VZzwfZPzV_YKDWCXBeu",
"Content-Type:application/json"})
@POST("fcm/send")
Observable<FCMResponse> sendNotification(@Body FCMSendData body);

这是改造类,在构建线上给出错误

public class RetrofitFCMClient {
private static Retrofit instance;
public static Retrofit getInstance() {
if (instance == null)
instance = new Retrofit.Builder()
.baseUrl("https://fcm.googleapis.com/")
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.build();
return instance;
}
}

这是错误的屏幕截图

这似乎是由于okhttp在3.13+版中放弃了对5以下android版本的支持而发生的。 请参阅 https://github.com/square/okhttp/issues/4481 一种解决方案是通过添加/更改依赖项来强制执行较旧的okhttp版本

implementation ('com.squareup.okhttp3:okhttp'){
version {
strictly '3.12.12'
}
}

附带说明一下,下次上传代码时,请确保删除 api 密钥等

相关内容

  • 没有找到相关文章

最新更新