当前位置: 首页 > 知识库问答 >
问题:

如果手表配置使用iPhone,则FCM推送通知不适用于穿戴操作系统

公良鸿畅
2023-03-14

我正在为android wes-OS开发一个实时聊天应用程序。我正在使用Tic Watch Pro 4G进行开发测试。我的应用程序已经在Wear-OS Play商店中名为“IoSite”

对于推送通知,我使用FCM。我有两块手表

案例1:如果我使用Android手机和play store的下载IoSite应用程序配置手表,那么FCM推送通知在这两款手表中都有效。

案例2:如果我使用iPhone配置手表。然后当我将IoSite应用下载到watch 1并尝试使用它时。然后FCM推送通知工作正常。然后我在watch 2中下载了IoSite应用程序并尝试使用它。FCM推送通知在watch two a well中起作用。但在watch 2中安装应用程序后,FCM推送通知在watch 1中停止工作。以下是应用程序尝试获取firebase实例id时的Android studio日志:

2020-02-14 16:39:39.455 9476-9662/com.iosite。iositewatchapp W/FirebaseInstanceId:令牌检索失败,无异常html" target="_blank">消息。将重试令牌检索2020-02-14 16:39:39.459 9476-9476/com.iosite。iositewatchapp W/MyFirebaseMessagingService:getInstanceId失败的java.io。IOException:SERVICE\u NOT\u在com.google.firebase.iid.zza(com.google.firebase:firebase iid@@20.0.2:71)在com.google.firebase.iid.zzl.zza(com.google.firebase:firebase iid@@20.0.2:84)在com.google.firebase.iid.zzp。然后(com.google.firebase:firebase iid@@20.0.2:4)在com.google.android.gms.tasks.zzd。run(未知源:5)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)at java.lang.Thread.run(Thread.java:764)

在这个手表1中,如果我尝试删除InstanceID(以便FCM SDK生成一个新ID),那么我会得到以下错误:

2020-02-14 16:39:39.461 9476-9476/com.iosite.iositewatchappW/System.err:com.google.firebase.iid.Firebase InstanceId.deleteInstanceId(com.google.firebase:Firebase-iid@@20.0.2:57) 2020-02-14 16:39:39.462 9476-9476/com.iosite.iositewatchappW/System.err:com.iosite.iositewatchapp.服务。

请提出解决方案。

共有1个答案

呼延永新
2023-03-14
    public class MyFirebaseMessagingService extends FirebaseMessagingService {
        private final String TAG = "MyFirebaseMessaging";
        private Context mContext;
        public static final String CHANNEL_ID = "NotifChannel";
        public static final String CHANNEL_ID_ANN = "AnnouncementChannel";
        public static final String CHANNEL_ID_MSG = "MsgChannel";
        private String fcm_token = "";
        public static List<MessageClass> messages = new ArrayList<>();
        Location location;
        private Vibrator audioVibe;
        private VibrationEffect audioVibeEffect;
    public MyFirebaseMessagingService() {
    }

    @Override
    public void onCreate() {
        super.onCreate();
    }


    public MyFirebaseMessagingService(Context context) {
        Log.i(TAG, "MyFirebaseMessagingService started");
        mContext = context;

    }

    @RequiresApi(api = Build.VERSION_CODES.O)
    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        Log.d(TAG, "onMessageReceived called: " + remoteMessage.getData());

        Map<String, String> messageReceivedData = remoteMessage.getData();
        if (messageReceivedData.size() > 0) {
            //TODO: handle new group added notif and subscribe for the group. Also add group to group list
//            sendMessageNotification(messageReceivedData);
        }

        if (remoteMessage.getNotification() != null) {
            Log.d(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody());
        }
    }

    @Override
    public void onNewToken(String token) {
        Log.d(TAG, "New token generated: " + token);
        fcm_token = token;
//        sendRegistrationToServer(token, FirebaseInstanceId.getInstance().getId());
    }


    public boolean isGooglePlayServicesAvailable(Context context) {
        GoogleApiAvailability googleApiAvailability = GoogleApiAvailability.getInstance();
        int resultCode = googleApiAvailability.isGooglePlayServicesAvailable(context);
        return resultCode == ConnectionResult.SUCCESS;
    }

此外,将以下内容添加到应用级build.gradle:

implementation 'com.google.firebase:firebase-messaging:20.1.2'

将以下内容添加到您的清单中:

 <service
        android:name=".MyFirebaseMessagingService"
        android:exported="false">

在上面的代码之后,您还需要将您的项目添加到您的fcm帐户。添加项目后,您将获得一个google-services.json文件。将该文件保存在C:\User\{xyz}\AndroidStudioProjects\{your_app_name}\app\

您应该能够在回调方法onMessageReceived中接收所有通知。

 类似资料:
  • 问题内容: 我需要处理推送通知,这是通过较低版本的ios完成的,但是在ios 11中,从未收到任何推送通知。我使用Firebase Cloud Messaging。请任何人有解决方案,然后请分享。 问题答案: func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UI

  • 我编写了一个RESTAPI。NET Core现在需要创建一个推送通知到Firebase Cloud Messaging(FCM)。对于测试,我使用Firebase控制台,但我需要通过编程来完成。我已经通过谷歌浏览了Firebase的文档和一些例子,但我更困惑了。 我认为可以通过常规创建消息,但有人可以发布一个简单的工作示例以便我可以拿起它吗?或者也许,我的理解完全错误?

  • 我是新来的< code>Android Studio,所以我不明白。我是使用< code>FCM的< code >推送通知的新手,但我没有得到解决方案。我在运行时遇到了这种错误。 我的应用程序/Gradle 这是我的项目等级 我已经更新了android studio<code>SDK</code>我这边什么都没有了,但我不知道我哪里出错了。所以请在这方面帮助我。

  • 我们用FCM创建了一个带有通知的聊天应用程序,我的代码是正确的,我的设备也得到了推送通知数据,但一些中国制造的设备,如vivo、oppo、一加、小米,不允许通知显示,除非我在各自厂商的受保护的应用程序列表中添加应用程序。他们有没有办法解决这个问题。 https://hackernoon.com/notifications-in-android-are-horribly-broken-b8dbec6

  • 问题内容: 我想使用Java将“推送通知”消息发送到特定的iPhone设备。 我不知道该怎么做。 我对此进行了谷歌搜索,他们建议使用“ PayLoad”类,但不要从任何jar文件中获取此类。 请有人指导我通过Java将推送通知消息发送到iPhone吗? 问题答案: 使用JavaPNS。例如:

  • 以下是我的通知案例:当通知到达时,应用程序可能是前台,后台,或关闭 2.后台:当用户点击通知时,应用程序应显示在前面,并显示主要活动 3.App关闭时:当用户点击通知时,App应打开,并显示主要活动。 当我用设置intent和用设置PendingIntent时。它按预期工作,但当用户点击notification时,它不会调用Main Activity的onCreate方法。 如果您考虑了上面的代码