Push notification 仅当新邮件进入Gmail收件箱时接收推送通知

Push notification 仅当新邮件进入Gmail收件箱时接收推送通知,push-notification,google-api,gmail-api,google-cloud-pubsub,google-api-dotnet-client,Push Notification,Google Api,Gmail Api,Google Cloud Pubsub,Google Api Dotnet Client,我正在使用服务帐户成功接收gmail用户(模拟)的推送通知 但是,在呼叫watch时,我只希望在新消息到达时收到通知,而不是在发生任何更改时收到通知。(例如:消息读取、消息删除…) 我尝试通过收件箱和未读进行过滤,但即使邮件标记为已读,我也会收到通知 我的代码: this._service.Users.Watch(new WatchRequest { TopicName = "projects/my-project-id/topics/gmail", LabelFilterAct

我正在使用服务帐户成功接收gmail用户(模拟)的推送通知

但是,在呼叫
watch
时,我只希望在新消息到达时收到通知,而不是在发生任何更改时收到通知。(例如:消息读取、消息删除…)

我尝试通过
收件箱
未读
进行过滤,但即使邮件标记为已读,我也会收到通知

我的代码:

this._service.Users.Watch(new WatchRequest
{
    TopicName = "projects/my-project-id/topics/gmail",
    LabelFilterAction = "include",
    //LabelIds = new [] { "UNREAD" }
    LabelIds = new[] { "INBOX" }
}, "me").Execute();
是否只有在新邮件到达时才能收到通知

下面是订阅的代码:

var projectId = "my-project-id";
var topicId = "gmail";
var subscriptionId = "unread-gmail";

TopicName topicName = new TopicName(projectId, topicId);
SubscriptionName subscriptionName = new SubscriptionName(projectId, subscriptionId);
PublisherClient publisher = await PublisherClient.CreateAsync(topicName);
SubscriberClient subscriber = await SubscriberClient.CreateAsync(subscriptionName);
await subscriber.StartAsync((msg, cancellationToken) =>
{
    Console.WriteLine($"Received message {msg.MessageId} published at {msg.PublishTime.ToDateTime()}");
    Console.WriteLine($"Text: '{msg.Data.ToStringUtf8()}'");
    return Task.FromResult(SubscriberClient.Reply.Ack);
});

嗨,Makla,你是否只在收到新邮件时才得到通知?我也在努力做到这一点,但到目前为止还没有发现任何有用的东西…@Valip不,我认为这是不可能的,但我不确定。好的,我会继续调查,并让你知道是否有任何方法可以使这项工作成功。