MPGNotification

by MPGNotification

MPGNotification / MPGNotification

MPGNotifications is an iOS control that allows you to display in-app interactive notifications that ...

433 Stars 60 Forks Last release: Not found MIT License 74 Commits 9 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

MPGNotification

MPGNotifications is an iOS control that allows you to display in-app interactive notifications that are fully customisable to suit your needs.

Available via CocoaPods:

pod 'MPGNotification', '~> 1.2'

MPGNotification Screenshot

Overview

MPGNotification
objects are
UIView
objects. They are displayed on top of "everything" using self-contained logic that grabs the level of the top-most window (as reported by
UIApplciation
).

You just initialize them, configure them, and show them. That's it!

Initialization

Initializing an

MPGNotification
object is simple - just use init! Or new!
obj-c
MPGNotification *notification = [[MPGNotification alloc] init];
MPGNotification *anotherNotification = [MPGNotification new];

You may also use the following convenience method to initialize a Notification with many of the "basic" visualization properties already set:

MPGNotification *easyNotification = 
[MPGNotification notificationWithTitle:@"Greetings!"
                              subtitle:@"Did you know we have Notifications now?"
                       backgroundColor:[UIColor redColor]
                             iconImage:[UIImage imageNamed:@"radical"]];

Showing the Notification!

After you have configured your Notification, it's easy to show it on screen! Because the

MPGNotification
discovers its own superview and location in the view hierarchy, you simply need to call
show
:
[notification show];

However, simply showing the Notification can be limiting. What if you want to take action when someone taps the Notification?

Buttons and Triggering Action

If a user taps the background of a Notification, or one of the buttons you have configured, you can take action in two ways. You may set the

buttonHandler
property, like so:
notification.buttonHandler = ^(MPGNotification *notification, NSInteger buttonIndex) {
    if (buttonIndex == notification.firstButton.tag) {
        NSLog("User tapped the only button on-screen!");
    }
};

[notification show];

..or you can simply show the Notification with the following convenience method:

// easyNotification.buttonHandler == nil
[easyNotification showWithButtonHandler:^(MPGNotification *notification, NSInteger buttonIndex) {
    if (buttonIndex == notification.backgroundView.tag) {
        NSLog("User tapped the background of the Notification!");
    }
}];

Button Configuration

The following button configurations are available:

objc
typedef NS_ENUM(NSInteger, MPGNotificationButtonConfigration) {
    MPGNotificationButtonConfigrationZeroButtons    = 0,
    MPGNotificationButtonConfigrationOneButton,
    MPGNotificationButtonConfigrationTwoButton,
    MPGNotificationButtonConfigrationCloseButton
};
The buttons used in the UI adapt to the configuration as follows: ``` objc switch (self.buttonConfiguration) {
case MPGNotificationButtonConfigrationZeroButtons:
    // self.firstButton, self.secondButton, and self.closeButton == nil
    break;

case MPGNotificationButtonConfigrationOneButton: // self.firstButton != nil // self.secondButton and self.closeButton == nil break;

case MPGNotificationButtonConfigrationTwoButton: // self.firstButton and self.secondButton != nil // self.closeButton == nil break;

case MPGNotificationButtonConfigrationCloseButton: // self.closeButton != nil // self.firstButton and self.secondButton == nil break;

} // self.backgroudnView is unrelated to self.buttonConfiguration, and is always != nil, but does not always receive touches ```

Properties

All properties must be set BEFORE

show
or
showWithButtonHandler:
is called. The following properties and 'setter methods' are available: ```objc // Properties used for basic styling @property (nonatomic, strong) NSString *title; // required @property (nonatomic, strong) NSString *subtitle; // optional @property (nonatomic, strong) UIImage *iconImage; // optional @property (nonatomic, strong) UIColor *backgroundColor; // optional

// Allows actions and dismissal when the background of the Notification is tapped. // Default: YES @property (nonatomic) BOOL backgroundTapsEnabled;

// Allows 'swipe to dismiss' action on the Notification, similar to iOS Push Notifications. // Default: YES @property (nonatomic) BOOL swipeToDismissEnabled;

// Allows full-screen messages on iPad. Defaults to NO, similar to iOS Push Notifications. @property (nonatomic) BOOL fullWidthMessages;

// To set the title color of the notification. // Default: [UIColor whiteColor] @property (nonatomic, strong) UIColor *titleColor;

// To set the subtitle color of the notification. // Default: [UIColor whiteColor] @property (nonatomic, strong) UIColor *subtitleColor;

// Set this to any positive value to automatically dismiss the Notification after the given duration. // Default: 0.0 @property (nonatomic) NSTimeInterval duration;

// Used to specify the type of animation that the notification should use to show and dismiss. // Default: MPGNotificationAnimationTypeLinear @property (nonatomic) MPGNotificationAnimationType animationType;

// Sets the button handler block directly; is also be set indirectly by calling showWithButtonHandler: // Default: nil @property (nonatomic, strong) MPGNotificationButtonHandler buttonHandler;

// Sets a dismiss hanlder block that is called when the Notification is dismissed // Default: nil @property (nonatomic, copy) MPGNotificationDismissHandler dismissHandler;

// Read-only value of the current button configuration // Default: MPGNotificationButtonConfigrationZeroButtons @property (nonatomic, readonly) MPGNotificationButtonConfigration buttonConfiguration;

// Sets the configuration and titles for the Notification's visible buttons. The number of buttonTitles supplied must match the configuration. - (void)setButtonConfiguration:(MPGNotificationButtonConfigration)configuration withButtonTitles:(NSArray *)buttonTitles; ```

Example:

// construct notification
UIImage *chatImage = [[UIImage imageNamed:@"icon-chat"] colorImageWhite];

MPGNotification *notification = [MPGNotification notificationWithTitle:self.chat.playerName subtitle:self.chat.message backgroundColor:[UIColor customChatColor] iconImage:chatImage];

// auto-dismiss after desired time in seconds notification.duration = 6.0;

// button & touch handling notification.backgroundTapsEnabled = YES; [notification setButtonConfiguration:MPGNotificationButtonConfigrationOneButton withButtonTitles:@[@"Reply"]];

// set animation type notification.animationType = MPGNotificationAnimationTypeDrop;

// show the notification and handle button taps // (self.firstButton is the Reply button, self.backgroundView is the background tap) [notification showWithButtonHandler:^(MPGNotification *notification, NSInteger buttonIndex) {

if (buttonIndex == notification.firstButton.tag ||
    buttonIndex == notification.backgroundView.tag) {
    [self scrollToChat];
}

}];

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.