33 lines
1.0 KiB
C#
33 lines
1.0 KiB
C#
|
|
namespace Meezi.Core.Interfaces;
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// Sends push notifications through the Pushe gateway (Iran-safe; FCM is
|
||
|
|
/// unreliable inside Iran). Topics are subscribed client-side via the native
|
||
|
|
/// Pushe SDK; this service triggers the actual sends from the backend.
|
||
|
|
/// </summary>
|
||
|
|
public interface IPushSender
|
||
|
|
{
|
||
|
|
/// <summary>
|
||
|
|
/// Broadcasts to every device subscribed to a Pushe topic.
|
||
|
|
/// Topics: <c>city-{slug}</c> (marketing / new cafés),
|
||
|
|
/// <c>cafe-{slug}</c> (saved-café alerts).
|
||
|
|
/// </summary>
|
||
|
|
Task SendToTopicAsync(
|
||
|
|
string topic,
|
||
|
|
string title,
|
||
|
|
string body,
|
||
|
|
string? deepLink = null,
|
||
|
|
CancellationToken cancellationToken = default);
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// Sends to one or more specific device tokens — used for transactional
|
||
|
|
/// order / reservation updates.
|
||
|
|
/// </summary>
|
||
|
|
Task SendToTokensAsync(
|
||
|
|
IReadOnlyCollection<string> tokens,
|
||
|
|
string title,
|
||
|
|
string body,
|
||
|
|
string? deepLink = null,
|
||
|
|
CancellationToken cancellationToken = default);
|
||
|
|
}
|