世博会推送通知发送到多个设备,而不是一个

问题描述

我正在使用EXPO托管工作流开发移动应用程序。我的应用程序具有后端的PHP REST API。 在处理应用程序的推送通知部分时,我遇到了一个奇怪的问题。

我正在使用2种不同的设备(iPhone和Android手机)进行测试。两种设备都使用不同的用户帐户登录应用程序,并且两种设备都在数据库中设置了不同的博览会推送通知令牌。

管理员希望向特定用户发送新报价时,两个设备都会收到推送通知,而不是仅管理员希望向其发送消息的用户所属的设备。

这是我从后端发送通知的方式。该代码仅执行一次,所以我想我在这里做错了。

$this->expo = Expo::normalSetup();
$interest = 'new_offer';

// Subscribe the recipient to the server
$this->expo->subscribe($interest,$recipient);

// Build the notification data
$notification = [
   'title' => $this->title,'body' => $body,'data' => json_encode([
      'type' => $this->type,'inquiryId' => $this->inquiry->getId(),'offerId' => $this->offer->getId(),]),];

// Notify an interest with a notification
$this->expo->notify($interest,$notification);

这就是我在应用程序中的处理方式

    /**
     * Get Expo push token and connect it with the user
     * @see https://docs.expo.io/versions/latest/guides/push-notifications/
     * @returns {Promise<void>}
     */
    registerForPushNotificationsAsync = async () => {
        const {status: existingStatus} = await Permissions.getAsync(Permissions.NOTIFICATIONS);
        let finalStatus = existingStatus;

        // only ask if permissions have not already been determined,because
        // iOS won't necessarily prompt the user a second time.
        if (existingStatus !== 'granted') {
            // Android remote notification permissions are granted during the app
            // install,so this will only ask on iOS
            const {status} = await Permissions.askAsync(Permissions.NOTIFICATIONS);
            finalStatus = status;
        }

        // Stop here if the user did not grant permissions
        if (finalStatus !== 'granted') {
            return;
        }

        // Get the token that uniquely identifies this device
        const token = await Notifications.getExpoPushTokenAsync();

        /**
         * @token ExponentPushToken[cszdf-SKFcXkd-8e6BEtjNG]
         */

        this.pushNotificationsToken = token;
        this._notificationSubscription = Notifications.addListener(this._handleNotification);
    }

    _handleNotification = ({origin,data}) => {
        console.warn(origin,data);

        switch (data.type) {
            case PushNotificationTypes.PARTNER_SUBMITTED_NEW_OFFER: {
                return this.props.navigation.navigate('InquiryOffers',{getInquiryId: data.inquiryId});
            }
        }
    }

有什么主意我在做错什么以及如何解决

谢谢

鲍勃

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)