|
- /*
- ==============================================================================
-
- This file is part of the JUCE 6 technical preview.
- Copyright (c) 2020 - Raw Material Software Limited
-
- You may use this code under the terms of the GPL v3
- (see www.gnu.org/licenses).
-
- For this technical preview, this file is not subject to commercial licensing.
-
- JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
- EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
- DISCLAIMED.
-
- ==============================================================================
- */
-
- namespace juce
- {
-
- //==============================================================================
- #if ! JUCE_ANDROID && ! JUCE_IOS && ! JUCE_MAC
- bool PushNotifications::Notification::isValid() const noexcept { return true; }
- #endif
-
- PushNotifications::Notification::Notification (const Notification& other)
- : identifier (other.identifier),
- title (other.title),
- body (other.body),
- subtitle (other.subtitle),
- groupId (other.groupId),
- badgeNumber (other.badgeNumber),
- soundToPlay (other.soundToPlay),
- properties (other.properties),
- category (other.category),
- triggerIntervalSec (other.triggerIntervalSec),
- repeat (other.repeat),
- icon (other.icon),
- channelId (other.channelId),
- largeIcon (other.largeIcon),
- tickerText (other.tickerText),
- actions (other.actions),
- progress (other.progress),
- person (other.person),
- type (other.type),
- priority (other.priority),
- lockScreenAppearance (other.lockScreenAppearance),
- publicVersion (other.publicVersion.get() != nullptr ? new Notification (*other.publicVersion) : nullptr),
- groupSortKey (other.groupSortKey),
- groupSummary (other.groupSummary),
- accentColour (other.accentColour),
- ledColour (other.ledColour),
- ledBlinkPattern (other.ledBlinkPattern),
- vibrationPattern (other.vibrationPattern),
- shouldAutoCancel (other.shouldAutoCancel),
- localOnly (other.localOnly),
- ongoing (other.ongoing),
- alertOnlyOnce (other.alertOnlyOnce),
- timestampVisibility (other.timestampVisibility),
- badgeIconType (other.badgeIconType),
- groupAlertBehaviour (other.groupAlertBehaviour),
- timeoutAfterMs (other.timeoutAfterMs)
- {
- }
-
- //==============================================================================
- JUCE_IMPLEMENT_SINGLETON (PushNotifications)
-
- PushNotifications::PushNotifications()
- #if JUCE_PUSH_NOTIFICATIONS
- : pimpl (new Pimpl (*this))
- #endif
- {
- }
-
- PushNotifications::~PushNotifications() { clearSingletonInstance(); }
-
- void PushNotifications::addListener (Listener* l) { listeners.add (l); }
- void PushNotifications::removeListener (Listener* l) { listeners.remove (l); }
-
- void PushNotifications::requestPermissionsWithSettings (const PushNotifications::Settings& settings)
- {
- #if JUCE_PUSH_NOTIFICATIONS && (JUCE_IOS || JUCE_MAC)
- pimpl->requestPermissionsWithSettings (settings);
- #else
- ignoreUnused (settings);
- listeners.call ([] (Listener& l) { l.notificationSettingsReceived ({}); });
- #endif
- }
-
- void PushNotifications::requestSettingsUsed()
- {
- #if JUCE_PUSH_NOTIFICATIONS && (JUCE_IOS || JUCE_MAC)
- pimpl->requestSettingsUsed();
- #else
- listeners.call ([] (Listener& l) { l.notificationSettingsReceived ({}); });
- #endif
- }
-
- bool PushNotifications::areNotificationsEnabled() const
- {
- #if JUCE_PUSH_NOTIFICATIONS
- return pimpl->areNotificationsEnabled();
- #else
- return false;
- #endif
- }
-
- void PushNotifications::getDeliveredNotifications() const
- {
- #if JUCE_PUSH_NOTIFICATIONS
- pimpl->getDeliveredNotifications();
- #endif
- }
-
- void PushNotifications::removeAllDeliveredNotifications()
- {
- #if JUCE_PUSH_NOTIFICATIONS
- pimpl->removeAllDeliveredNotifications();
- #endif
- }
-
- String PushNotifications::getDeviceToken() const
- {
- #if JUCE_PUSH_NOTIFICATIONS
- return pimpl->getDeviceToken();
- #else
- return {};
- #endif
- }
-
- void PushNotifications::setupChannels (const Array<ChannelGroup>& groups, const Array<Channel>& channels)
- {
- #if JUCE_PUSH_NOTIFICATIONS
- pimpl->setupChannels (groups, channels);
- #else
- ignoreUnused (groups, channels);
- #endif
- }
-
- void PushNotifications::getPendingLocalNotifications() const
- {
- #if JUCE_PUSH_NOTIFICATIONS
- pimpl->getPendingLocalNotifications();
- #endif
- }
-
- void PushNotifications::removeAllPendingLocalNotifications()
- {
- #if JUCE_PUSH_NOTIFICATIONS
- pimpl->removeAllPendingLocalNotifications();
- #endif
- }
-
- void PushNotifications::subscribeToTopic (const String& topic)
- {
- #if JUCE_PUSH_NOTIFICATIONS
- pimpl->subscribeToTopic (topic);
- #else
- ignoreUnused (topic);
- #endif
- }
-
- void PushNotifications::unsubscribeFromTopic (const String& topic)
- {
- #if JUCE_PUSH_NOTIFICATIONS
- pimpl->unsubscribeFromTopic (topic);
- #else
- ignoreUnused (topic);
- #endif
- }
-
-
- void PushNotifications::sendLocalNotification (const Notification& n)
- {
- #if JUCE_PUSH_NOTIFICATIONS
- pimpl->sendLocalNotification (n);
- #else
- ignoreUnused (n);
- #endif
- }
-
- void PushNotifications::removeDeliveredNotification (const String& identifier)
- {
- #if JUCE_PUSH_NOTIFICATIONS
- pimpl->removeDeliveredNotification (identifier);
- #else
- ignoreUnused (identifier);
- #endif
- }
-
- void PushNotifications::removePendingLocalNotification (const String& identifier)
- {
- #if JUCE_PUSH_NOTIFICATIONS
- pimpl->removePendingLocalNotification (identifier);
- #else
- ignoreUnused (identifier);
- #endif
- }
-
- void PushNotifications::sendUpstreamMessage (const String& serverSenderId,
- const String& collapseKey,
- const String& messageId,
- const String& messageType,
- int timeToLive,
- const StringPairArray& additionalData)
- {
- #if JUCE_PUSH_NOTIFICATIONS
- pimpl->sendUpstreamMessage (serverSenderId,
- collapseKey,
- messageId,
- messageType,
- timeToLive,
- additionalData);
- #else
- ignoreUnused (serverSenderId, collapseKey, messageId, messageType);
- ignoreUnused (timeToLive, additionalData);
- #endif
- }
-
- } // namespace juce
|