Shiny.Extensions.Push
Manage your push notification without Azure Notification Hubs. Adds logging, registration, tagging, etc to Apple and Google push. Great for small apps on ASP.NET Core or bigger apps on an Azure Function
Deprecated Package Version
Reason: Legacy
Install
| Product | Versions |
|---|---|
| .NET |
README
SHINY SERVICE EXTENSIONS FOR .NET
FEATURES
- Push Notification Management without a 3rd Party (think Azure Notification Hubs for your on-prem servers)
- Mail Templating On Steroids! Loaders, parsers, converters, & senders!
- Localization done right
- Looks like Microsoft.Extensions.Configuration
- Loads from a database, resx files, and more out of the box
- Allows you to serialize to JSON easily for your frontend
- Existing strongly typed classes generated for RESX, no worries - we have solutions for that too!
- Want to use in your XAML, yup - we got that covered properly too
LINKS
SUPPORT SHINY
While Shiny is free and will continue to be so, maintenance and support takes a heavy toll on sustainability. If you or your company have the resources, please consider becoming a GitHub Sponsor. GitHub Sponsorships help to make Open Source Development more sustainable.
Depending on your Sponsorship Tier, you may also get access to some great benefits on Sponsor Connect (https://sponsorconnect.dev) including:
- The Sponsor Only Discord server
- Training available ONLY to sponsors on Sponsor Connect
- Special sponsor-only packages
How about some Shiny Gear
BUILDS
| Branch | Status |
|---|---|
| Master | |
| Dev | |
| Preview |
NUGETS
| Name | Stable | Preview |
|---|---|---|
| Shiny.Extensions.Push | ||
| Shiny.Extensions.Push.Ef | ||
| Shiny.Extensions.Mail | ||
| Shiny.Extensions.Mail.DotLiquid | ||
| Shiny.Extensions.Mail.StorageNet | ||
| Shiny.Extensions.Localization | ||
| Shiny.Extensions.Localization.SqlServer |
SQL Scripts
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[MailTemplates](
[MailTemplateId] [uniqueidentifier] NOT NULL,
[TemplateName] [nvarchar](255) NOT NULL,
[CultureCode] [varchar](5) NULL,
[Content] [nvarchar](max) NOT NULL,
CONSTRAINT [PK_MailTemplates] PRIMARY KEY CLUSTERED
(
[MailTemplateId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY],
CONSTRAINT [UK_MailTemplates] UNIQUE NONCLUSTERED
(
[TemplateName] ASC,
[CultureCode] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
Localization
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Localizations](
[LocalizationId] [uniqueidentifier] NOT NULL,
[Section] [varchar](50) NOT NULL,
[ResourceKey] [varchar](50) NOT NULL,
[CultureCode] [varchar](5) NULL,
[Value] [nvarchar](4000) NOT NULL,
CONSTRAINT [PK_Localizations] PRIMARY KEY CLUSTERED
(
[LocalizationId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY],
CONSTRAINT [UK_Localizations] UNIQUE NONCLUSTERED
(
[Section] ASC,
[ResourceKey] ASC,
[CultureCode] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
Push
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[PushRegistrations](
[PushRegistrationId] [uniqueidentifier] NOT NULL,
[Platform] [int] NOT NULL,
[DeviceToken] [varchar](512) NOT NULL,
[UserId] [varchar](50) NULL,
[DateUpdated] [datetimeoffset](7) NOT NULL,
[DateCreated] [datetimeoffset](7) NOT NULL,
CONSTRAINT [PK_PushRegistrations] PRIMARY KEY CLUSTERED
(
[PushRegistrationId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY],
CONSTRAINT [UK_PushRegistrations] UNIQUE NONCLUSTERED
(
[DeviceToken] ASC,
[Platform] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[PushTags] Script Date: 12/16/2021 3:27:13 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[PushTags](
[PushTagId] [uniqueidentifier] NOT NULL,
[PushRegistrationId] [uniqueidentifier] NOT NULL,
[Value] [nvarchar](50) NOT NULL,
CONSTRAINT [PK_PushTags] PRIMARY KEY CLUSTERED
(
[PushTagId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY],
CONSTRAINT [UK_PushTags] UNIQUE NONCLUSTERED
(
[PushRegistrationId] ASC,
[Value] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[PushTags] WITH CHECK ADD CONSTRAINT [FK_PushTags_PushRegistrations] FOREIGN KEY([PushRegistrationId])
REFERENCES [dbo].[PushRegistrations] ([PushRegistrationId])
GO
ALTER TABLE [dbo].[PushTags] CHECK CONSTRAINT [FK_PushTags_PushRegistrations]
GO
Changes from Previous Version
Adoption Assessment
A verified publisher signal is available. Assess fit from the package's supported frameworks, license and dependency graph rather than popularity alone.
Related Guides & Workflows
Learn how to evaluate, integrate, or audit this package in your .NET project.