【问题标题】:Cant receive push notifications from Intercom, FCM无法接收来自对讲机、FCM 的推送通知
【发布时间】:2020-07-03 03:58:21
【问题描述】:

对讲机推送通知有问题。我无法在设备上收到对讲机的任何推送通知;从 FCM 发送的标准通知可以正常工作。

已按照this 教程,并已按照建议将服务器密钥添加到对讲机。

CloudMessaging.java

public class CloudMessaging extends FirebaseMessagingService {

private final IntercomPushClient intercomPushClient = new IntercomPushClient();

public void getFirebaseInstanceID() {
        FirebaseInstanceId.getInstance().getInstanceId()
                .addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() {
                    @Override
                    public void onComplete(@NonNull Task<InstanceIdResult> task) {
                        if (!task.isSuccessful()) {
                            Log.w(TAG, "getInstanceId failed", task.getException());
                            return;
                        }
                        intercomPushClient.sendTokenToIntercom(application, token);
                      );
                    }
                 }
        });
}


@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
    Map message = remoteMessage.getData();

    if (intercomPushClient.isIntercomPush(message)) {
        Log.d(TAG, "Intercom message received");
        intercomPushClient.handlePush(getApplication(), message);
    } else {
        super.onMessageReceived(remoteMessage);
    }
}

Gradle

    <service
        android:name="com.google.firebase.messaging.FirebaseMessagingService"
        android:exported="false">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT" />
        </intent-filter>

    </service>

    <service
        android:name=".CloudMessaging"
        android:enabled="true"
        android:exported="true">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT" />
        </intent-filter>
    </service>

【问题讨论】:

  • 您下载了子文件并在您的应用中找到了吗?
  • 嗨@BitaMirshafiee;是的,我有。我们已经收到来自 Firebase 的标准推送通知。只是不是对讲机。

标签: java android intercom


【解决方案1】:

您只需要 Gradle 文件中的一个 "com.google.firebase.MESSAGING_EVENT" 实例。就我而言,我坚持使用.CloudMessaging,因为这是处理对讲通知的地方,如上所示。我的CloudMessaging 类需要有一个公共构造函数,在收到通知时打开 0 个输入字段。例如。

Gradle 文件

<service
    android:name=".CloudMessaging"
    android:enabled="true"
    android:exported="true">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT" />
    </intent-filter>
</service>

CloudMessaging 类

 public CloudMessaging() {
        //dont delete or you wont get push notifications buddy
}

CloudMessaging(Context context, Application application) {
        this.context = context;
        this.application = application;
        sharedPref = context.getSharedPreferences(FCM_ID_SHAREDPREF, MODE_PRIVATE);
    }

接下来最重要的是确保您使用的是正确的 Intercom SDK。我最初实现了一个没有推送通知功能的“基础”sdk。确保您拥有完整的 sdk。

错误的 SDK

dependencies {
    implementation 'io.intercom.android:intercom-sdk-base:x.x.+'
}

优秀的 SDK

dependencies {
    implementation 'io.intercom.android:intercom-sdk:x.x.+'
    implementation 'com.google.firebase:firebase-messaging:x.+' 
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-22
    • 2017-06-13
    • 2017-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-15
    • 1970-01-01
    相关资源
    最近更新 更多