Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 禁止在发布到PubNub时向您发送推送通知_Ios_Chat_Pubnub - Fatal编程技术网

Ios 禁止在发布到PubNub时向您发送推送通知

Ios 禁止在发布到PubNub时向您发送推送通知,ios,chat,pubnub,Ios,Chat,Pubnub,我正在iOS上构建聊天功能。我正在使用PubNub的发布/订阅系统在客户端之间发送消息 问题: 每当我发布到订阅的频道时,我也会收到我发送的消息的推送通知。虽然,当应用程序位于前台时,我可以忽略这一点,但当通知延迟且应用程序转到后台时,问题就会出现 我只希望在其他人向频道发送消息时接收推送通知。收到你发送消息的通知是没有意义的 我正在考虑的一个解决方案是为推送通知创建额外的通道,但我发现这样做效率低下,而且有点粗糙。请告诉我还有另一种解决方案。PubNub发送者标识实现 最好的解决方案是使用静默

我正在iOS上构建聊天功能。我正在使用PubNub的发布/订阅系统在客户端之间发送消息

问题:

每当我发布到订阅的频道时,我也会收到我发送的消息的推送通知。虽然,当应用程序位于前台时,我可以忽略这一点,但当通知延迟且应用程序转到后台时,问题就会出现

我只希望在其他人向频道发送消息时接收推送通知。收到你发送消息的通知是没有意义的

我正在考虑的一个解决方案是为推送通知创建额外的通道,但我发现这样做效率低下,而且有点粗糙。请告诉我还有另一种解决方案。

PubNub发送者标识实现 最好的解决方案是使用静默推送通知,并在消息负载中包含发送者的UUID。下面是一个例子:

{
    'pn_apns': {
        'aps': {
            'content-available':1
        },
        'sender_id':'user123',
        'content':'this could be more key/values that you can process on the device'
    },
    'data': 'realtime key/values goes here'
}
然后在设备上的静默推送处理中,您可以执行以下操作:

if uuid != my_uuid then display msg; else do nothing
您可以使用我们的应用程序,在设备上收到静默推送通知时,使用静默推送通知获取历史记录,以计算准确的徽章计数。只需将历史获取代码替换为is this from me代码

您还应该查看有关静默推送工作原理的完整详细信息

Android推送通知在默认情况下是静默的,您必须显式显示它们,以便在GCM平台上也可以使用它们(如果需要)

很快就会有一个更优雅的解决方案,但在这些增强功能推出之前,以上内容应能满足您的需要。

使用pn_例外排除设备[APNS2] 最近,PubNub移动推送网关已更新为使用APNS2。 通过此更新,您现在可以使用pn_异常从推送通知中排除某些设备令牌

下面是更新后的有效负载的外观

{
    "pn_apns" : {
        "aps" : {
            "alert" : {
                "body" : "hello (via APNS)"
            }
        },
        "pn_exceptions" : [
            currentDeviceToken
        ]
    },
    "pn_gcm" : {
        "alert" : "hello (via FCM)",
        "pn_exceptions" : [
            someDeviceToken
        ]
    },
    text : "hello (in realtime)"
}

嗨,克雷格!这仍然是最好的方法,还是有其他新的解决方法?我正在从iOS 10向iOS 11发送消息。如果使用警报条目发送,iOS 11会正确显示警报,但发送者也会正确显示。如果使用您的建议,它对发送方有效,但对接收方有效,因为它是iOS 11,所以无法始终收到通知。我认为这与iOS 11和iOS上的这个问题有关。非常感谢。实际上,它适用于本机iOS,因为当应用程序按指定位于前台时,推送通知不会显示(除非您实际指定
可用内容
,否则通知将始终显示)。问题出现在React Native中,无论应用程序是否位于前台,都会显示通知。这可能需要一个单独的问题。如果你转向苹果新的APNS2推送令牌(我们将很快向公众发布),你可以添加一个带有设备推送令牌数组的,以排除接收推送通知。因此,当然,只需始终包含发送设备的推送令牌。很快就会有公告。这是个好消息,非常感谢您这么快的回答!我们找到了在应用程序处于前台的同时实际显示通知的原因。这是因为我们在应用程序中也使用了另一个库,“OneSignal”请继续关注这篇关于即将推出的新APNS2推送令牌功能的帖子的新答案。很多好东西很快就会公布。