Skip to content

Repository files navigation

Build StatusGem Version

IonicNotification

IonicNotification is an interface for Rails to use Ionic.io's Push Notification service.

Keep in mind that Ionic.io's Push Notification is still in alpha at the moment, so this gem will probably undergo some major updates in the near future.

Getting started

gem install ionic_notification

You can add IonicNotification to your Gemfile with:

gem 'ionic_notification'

After you installed IonicNotification, you need to run the generator:

rails g ionic_notification:install

Configure the ionic_notification.rb file within config/initializers. You can use the default set environment variables, change them or hardcode those values (altough is highly NOT recommended)

IonicNotification.setupdo |config|
config.ionic_application_id=ENV["IONIC_APPLICATION_ID"]config.ionic_api_key=ENV["IONIC_API_KEY"]config.ionic_app_name="YourAppName"# ==> Configuration for the location of the API# Refer to the Ionic documentation for the correct location# Current documentation can be found here:# http://docs.ionic.io/docs/push-sending-push and# defaults to https://push.ionic.io# config.ionic_api_url = ENV["IONIC_API_URL"]end

Model setup

You can use IonicNotification directly from models. Run the proper generator:

rails g ionic_notification:model YOUR_MODEL

This creates a migration that will add a :device_tokens column to your model

classAddDeviceTokensTo_YOUR_MODEL < ActiveRecord::Migrationdefself.upadd_column:your_model_table_name,:device_tokens,:textenddefdownremove_column:your_model_table_name,:device_tokensendend

and includes IonicNotification in your model

# app/models/your_model.rbclassYourModel < ActiveRecord::Base# Include IonicNotification behaviourincludeIonicNotification::Concerns::IonicNotificable# Your stuff...end

Sending a Push Notification

# Assuming you want to send a notification to a User (yeah, weird, right?)user=User.firstuser.notifymessage: "Your super awesome notification message!"

This will simply send a notification with the provided message to all device tokens found on user.

You can also schedule notifications to be sent later, specifying either a DateTime or a delay.

user=User.firstuser.notify_atDate.tomorrow,message: "I'm a scheduled notification"user.notify_in2.hours,message: "I'm a delayed one instead"

If you have to send the same notification to a collection of, say, users, you have :notify_allavailable for use.

User.where(something: true).notify_allmessage: "Spread the word!"

If you want to learn more about all the parameters a notification accepts, please refer to the notification parameters section.

Check notification status

IonicNotification stores your last sent notifications (3 by default), so that you check their status later. You access them by calling

IonicNotification.latest_notifications

which returns an array of IonicNotification::SentNotifications, a representation of the notifications you built before.

On each of those you can call the :status method, and it will fetch the notification status from Ionic API.

# If you want to know what happened to your lost notification,# or if you're simply curious about its statusnotification=IonicNotification.latest_notifications.firstnotification.status

Notification parameters

  • :tokens: The device tokens, the targets for your notifications. It accepts an Array or a String.
  • message: The awesome message you want to display through your notification.
  • schedule: Pass a DateTime to schedule your notification. You can use :notify_at and :notify_in methods to do this.
  • payload: You can pass a Hash here to define a common payload for both iOS and Android.
  • ios_payload: You can pass a Hash to specify a payload for iOS devices.
  • android_payload: You can pass a Hash to specify a payload for Android devices.
  • production: You can override IonicNotification.ionic_app_in_production for each of your notifications. Take a look at the configuration section for further details.
  • :title: See the ionic_app_name in the configuration section for further details.

Manually send a notification

In some cases, you may want to manually instantiate and send notifications. You can:

notification=IonicNotification::Notification.new(tokens: ["array","of","tokens"],message: "Your message")# You can pass any of the parameters of course.notification.send

Configuration

Here you'll find all required and optional options

ionic_application_id

required

This is, wait for it, your Ionic application id, should be something like "258d401f"

ionic_api_key

required

This must equal your Ionic API key, should be a pretty long string.

ionic_app_name

ionic_app_name will be used as the default title for your notifications, though in most cases on devices you will see the name of the installed app. It defaults to Rails.application.class.parent_name.

ionic_app_in_production

If ionic_app_in_production is set to true, notifications will be sent to all devices which have your Ionic app running with production certificates (a.k.a apps generally coming from store). Otherwise, if set to false, they'll be sent to all devices which have your app running with developer certificates. While it is set to true by default, if you want a more flexible solution set it to Rails.env.production?, so that notifications will be sent to "production devices" only while Rails app is running in production environment.

log_level

Defaults to :debug, customize it according to your needs. Available log levels are Rails standards: :debug, :info, :warning, :fatal, :unknown.

notification_store_limit

IonicNotification stores your last 3 sent notifications, unless you specify otherwise. As they're kept in memory, I seriously advise not to go nuts on this parameter setting it trillions of trillions. :neckbeard:

process_empty_messages

By default, notifications with no message provided will be skipped, you don't want your clients to receive a notification with no message, right? Well, sometimes it can be useful to speed up development and tests. You could like to be able to do something like this, from time to time:

User.first.notify

and see what happens, without bothering writing a fake message. You can enable this, if you want, setting process_empty_messages to true, or do it in a more safe way: !Rails.env.production?.

default_message

If you're allowing IonicNotification to process empty messages (see above), you'll want to set a default message.

ionic_api_url

Refer to Ionic documentation for further information. It defaults to the standard Ionic endpoints.

License

This project uses MIT-LICENSE. This project started from the codebase of nwwatson ionic_push_repo

About

A Ruby gem that provides an interface to use Ionic.io's Push Notification service.

Resources

Stars

10 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - rentziass/ionic_notification: A Ruby gem that provides an interface to use Ionic.io's Push Notification service. · GitHub
Skip to content

Repository files navigation

Build StatusGem Version

IonicNotification

IonicNotification is an interface for Rails to use Ionic.io's Push Notification service.

Keep in mind that Ionic.io's Push Notification is still in alpha at the moment, so this gem will probably undergo some major updates in the near future.

Getting started

gem install ionic_notification

You can add IonicNotification to your Gemfile with:

gem 'ionic_notification'

After you installed IonicNotification, you need to run the generator:

rails g ionic_notification:install

Configure the ionic_notification.rb file within config/initializers. You can use the default set environment variables, change them or hardcode those values (altough is highly NOT recommended)

IonicNotification.setupdo |config|
config.ionic_application_id=ENV["IONIC_APPLICATION_ID"]config.ionic_api_key=ENV["IONIC_API_KEY"]config.ionic_app_name="YourAppName"# ==> Configuration for the location of the API# Refer to the Ionic documentation for the correct location# Current documentation can be found here:# http://docs.ionic.io/docs/push-sending-push and# defaults to https://push.ionic.io# config.ionic_api_url = ENV["IONIC_API_URL"]end

Model setup

You can use IonicNotification directly from models. Run the proper generator:

rails g ionic_notification:model YOUR_MODEL

This creates a migration that will add a :device_tokens column to your model

classAddDeviceTokensTo_YOUR_MODEL < ActiveRecord::Migrationdefself.upadd_column:your_model_table_name,:device_tokens,:textenddefdownremove_column:your_model_table_name,:device_tokensendend

and includes IonicNotification in your model

# app/models/your_model.rbclassYourModel < ActiveRecord::Base# Include IonicNotification behaviourincludeIonicNotification::Concerns::IonicNotificable# Your stuff...end

Sending a Push Notification

# Assuming you want to send a notification to a User (yeah, weird, right?)user=User.firstuser.notifymessage: "Your super awesome notification message!"

This will simply send a notification with the provided message to all device tokens found on user.

You can also schedule notifications to be sent later, specifying either a DateTime or a delay.

user=User.firstuser.notify_atDate.tomorrow,message: "I'm a scheduled notification"user.notify_in2.hours,message: "I'm a delayed one instead"

If you have to send the same notification to a collection of, say, users, you have :notify_allavailable for use.

User.where(something: true).notify_allmessage: "Spread the word!"

If you want to learn more about all the parameters a notification accepts, please refer to the notification parameters section.

Check notification status

IonicNotification stores your last sent notifications (3 by default), so that you check their status later. You access them by calling

IonicNotification.latest_notifications

which returns an array of IonicNotification::SentNotifications, a representation of the notifications you built before.

On each of those you can call the :status method, and it will fetch the notification status from Ionic API.

# If you want to know what happened to your lost notification,# or if you're simply curious about its statusnotification=IonicNotification.latest_notifications.firstnotification.status

Notification parameters

  • :tokens: The device tokens, the targets for your notifications. It accepts an Array or a String.
  • message: The awesome message you want to display through your notification.
  • schedule: Pass a DateTime to schedule your notification. You can use :notify_at and :notify_in methods to do this.
  • payload: You can pass a Hash here to define a common payload for both iOS and Android.
  • ios_payload: You can pass a Hash to specify a payload for iOS devices.
  • android_payload: You can pass a Hash to specify a payload for Android devices.
  • production: You can override IonicNotification.ionic_app_in_production for each of your notifications. Take a look at the configuration section for further details.
  • :title: See the ionic_app_name in the configuration section for further details.

Manually send a notification

In some cases, you may want to manually instantiate and send notifications. You can:

notification=IonicNotification::Notification.new(tokens: ["array","of","tokens"],message: "Your message")# You can pass any of the parameters of course.notification.send

Configuration

Here you'll find all required and optional options

ionic_application_id

required

This is, wait for it, your Ionic application id, should be something like "258d401f"

ionic_api_key

required

This must equal your Ionic API key, should be a pretty long string.

ionic_app_name

ionic_app_name will be used as the default title for your notifications, though in most cases on devices you will see the name of the installed app. It defaults to Rails.application.class.parent_name.

ionic_app_in_production

If ionic_app_in_production is set to true, notifications will be sent to all devices which have your Ionic app running with production certificates (a.k.a apps generally coming from store). Otherwise, if set to false, they'll be sent to all devices which have your app running with developer certificates. While it is set to true by default, if you want a more flexible solution set it to Rails.env.production?, so that notifications will be sent to "production devices" only while Rails app is running in production environment.

log_level

Defaults to :debug, customize it according to your needs. Available log levels are Rails standards: :debug, :info, :warning, :fatal, :unknown.

notification_store_limit

IonicNotification stores your last 3 sent notifications, unless you specify otherwise. As they're kept in memory, I seriously advise not to go nuts on this parameter setting it trillions of trillions. :neckbeard:

process_empty_messages

By default, notifications with no message provided will be skipped, you don't want your clients to receive a notification with no message, right? Well, sometimes it can be useful to speed up development and tests. You could like to be able to do something like this, from time to time:

User.first.notify

and see what happens, without bothering writing a fake message. You can enable this, if you want, setting process_empty_messages to true, or do it in a more safe way: !Rails.env.production?.

default_message

If you're allowing IonicNotification to process empty messages (see above), you'll want to set a default message.

ionic_api_url

Refer to Ionic documentation for further information. It defaults to the standard Ionic endpoints.

License

This project uses MIT-LICENSE. This project started from the codebase of nwwatson ionic_push_repo

About

A Ruby gem that provides an interface to use Ionic.io's Push Notification service.

Resources

Stars

10 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - rentziass/ionic_notification: A Ruby gem that provides an interface to use Ionic.io's Push Notification service. · GitHub
Skip to content

Repository files navigation

Build StatusGem Version

IonicNotification

IonicNotification is an interface for Rails to use Ionic.io's Push Notification service.

Keep in mind that Ionic.io's Push Notification is still in alpha at the moment, so this gem will probably undergo some major updates in the near future.

Getting started

gem install ionic_notification

You can add IonicNotification to your Gemfile with:

gem 'ionic_notification'

After you installed IonicNotification, you need to run the generator:

rails g ionic_notification:install

Configure the ionic_notification.rb file within config/initializers. You can use the default set environment variables, change them or hardcode those values (altough is highly NOT recommended)

IonicNotification.setupdo |config|
config.ionic_application_id=ENV["IONIC_APPLICATION_ID"]config.ionic_api_key=ENV["IONIC_API_KEY"]config.ionic_app_name="YourAppName"# ==> Configuration for the location of the API# Refer to the Ionic documentation for the correct location# Current documentation can be found here:# http://docs.ionic.io/docs/push-sending-push and# defaults to https://push.ionic.io# config.ionic_api_url = ENV["IONIC_API_URL"]end

Model setup

You can use IonicNotification directly from models. Run the proper generator:

rails g ionic_notification:model YOUR_MODEL

This creates a migration that will add a :device_tokens column to your model

classAddDeviceTokensTo_YOUR_MODEL < ActiveRecord::Migrationdefself.upadd_column:your_model_table_name,:device_tokens,:textenddefdownremove_column:your_model_table_name,:device_tokensendend

and includes IonicNotification in your model

# app/models/your_model.rbclassYourModel < ActiveRecord::Base# Include IonicNotification behaviourincludeIonicNotification::Concerns::IonicNotificable# Your stuff...end

Sending a Push Notification

# Assuming you want to send a notification to a User (yeah, weird, right?)user=User.firstuser.notifymessage: "Your super awesome notification message!"

This will simply send a notification with the provided message to all device tokens found on user.

You can also schedule notifications to be sent later, specifying either a DateTime or a delay.

user=User.firstuser.notify_atDate.tomorrow,message: "I'm a scheduled notification"user.notify_in2.hours,message: "I'm a delayed one instead"

If you have to send the same notification to a collection of, say, users, you have :notify_allavailable for use.

User.where(something: true).notify_allmessage: "Spread the word!"

If you want to learn more about all the parameters a notification accepts, please refer to the notification parameters section.

Check notification status

IonicNotification stores your last sent notifications (3 by default), so that you check their status later. You access them by calling

IonicNotification.latest_notifications

which returns an array of IonicNotification::SentNotifications, a representation of the notifications you built before.

On each of those you can call the :status method, and it will fetch the notification status from Ionic API.

# If you want to know what happened to your lost notification,# or if you're simply curious about its statusnotification=IonicNotification.latest_notifications.firstnotification.status

Notification parameters

  • :tokens: The device tokens, the targets for your notifications. It accepts an Array or a String.
  • message: The awesome message you want to display through your notification.
  • schedule: Pass a DateTime to schedule your notification. You can use :notify_at and :notify_in methods to do this.
  • payload: You can pass a Hash here to define a common payload for both iOS and Android.
  • ios_payload: You can pass a Hash to specify a payload for iOS devices.
  • android_payload: You can pass a Hash to specify a payload for Android devices.
  • production: You can override IonicNotification.ionic_app_in_production for each of your notifications. Take a look at the configuration section for further details.
  • :title: See the ionic_app_name in the configuration section for further details.

Manually send a notification

In some cases, you may want to manually instantiate and send notifications. You can:

notification=IonicNotification::Notification.new(tokens: ["array","of","tokens"],message: "Your message")# You can pass any of the parameters of course.notification.send

Configuration

Here you'll find all required and optional options

ionic_application_id

required

This is, wait for it, your Ionic application id, should be something like "258d401f"

ionic_api_key

required

This must equal your Ionic API key, should be a pretty long string.

ionic_app_name

ionic_app_name will be used as the default title for your notifications, though in most cases on devices you will see the name of the installed app. It defaults to Rails.application.class.parent_name.

ionic_app_in_production

If ionic_app_in_production is set to true, notifications will be sent to all devices which have your Ionic app running with production certificates (a.k.a apps generally coming from store). Otherwise, if set to false, they'll be sent to all devices which have your app running with developer certificates. While it is set to true by default, if you want a more flexible solution set it to Rails.env.production?, so that notifications will be sent to "production devices" only while Rails app is running in production environment.

log_level

Defaults to :debug, customize it according to your needs. Available log levels are Rails standards: :debug, :info, :warning, :fatal, :unknown.

notification_store_limit

IonicNotification stores your last 3 sent notifications, unless you specify otherwise. As they're kept in memory, I seriously advise not to go nuts on this parameter setting it trillions of trillions. :neckbeard:

process_empty_messages

By default, notifications with no message provided will be skipped, you don't want your clients to receive a notification with no message, right? Well, sometimes it can be useful to speed up development and tests. You could like to be able to do something like this, from time to time:

User.first.notify

and see what happens, without bothering writing a fake message. You can enable this, if you want, setting process_empty_messages to true, or do it in a more safe way: !Rails.env.production?.

default_message

If you're allowing IonicNotification to process empty messages (see above), you'll want to set a default message.

ionic_api_url

Refer to Ionic documentation for further information. It defaults to the standard Ionic endpoints.

License

This project uses MIT-LICENSE. This project started from the codebase of nwwatson ionic_push_repo

About

A Ruby gem that provides an interface to use Ionic.io's Push Notification service.

Resources

Stars

10 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - rentziass/ionic_notification: A Ruby gem that provides an interface to use Ionic.io's Push Notification service. · GitHub
Skip to content

Repository files navigation

Build StatusGem Version

IonicNotification

IonicNotification is an interface for Rails to use Ionic.io's Push Notification service.

Keep in mind that Ionic.io's Push Notification is still in alpha at the moment, so this gem will probably undergo some major updates in the near future.

Getting started

gem install ionic_notification

You can add IonicNotification to your Gemfile with:

gem 'ionic_notification'

After you installed IonicNotification, you need to run the generator:

rails g ionic_notification:install

Configure the ionic_notification.rb file within config/initializers. You can use the default set environment variables, change them or hardcode those values (altough is highly NOT recommended)

IonicNotification.setupdo |config|
config.ionic_application_id=ENV["IONIC_APPLICATION_ID"]config.ionic_api_key=ENV["IONIC_API_KEY"]config.ionic_app_name="YourAppName"# ==> Configuration for the location of the API# Refer to the Ionic documentation for the correct location# Current documentation can be found here:# http://docs.ionic.io/docs/push-sending-push and# defaults to https://push.ionic.io# config.ionic_api_url = ENV["IONIC_API_URL"]end

Model setup

You can use IonicNotification directly from models. Run the proper generator:

rails g ionic_notification:model YOUR_MODEL

This creates a migration that will add a :device_tokens column to your model

classAddDeviceTokensTo_YOUR_MODEL < ActiveRecord::Migrationdefself.upadd_column:your_model_table_name,:device_tokens,:textenddefdownremove_column:your_model_table_name,:device_tokensendend

and includes IonicNotification in your model

# app/models/your_model.rbclassYourModel < ActiveRecord::Base# Include IonicNotification behaviourincludeIonicNotification::Concerns::IonicNotificable# Your stuff...end

Sending a Push Notification

# Assuming you want to send a notification to a User (yeah, weird, right?)user=User.firstuser.notifymessage: "Your super awesome notification message!"

This will simply send a notification with the provided message to all device tokens found on user.

You can also schedule notifications to be sent later, specifying either a DateTime or a delay.

user=User.firstuser.notify_atDate.tomorrow,message: "I'm a scheduled notification"user.notify_in2.hours,message: "I'm a delayed one instead"

If you have to send the same notification to a collection of, say, users, you have :notify_allavailable for use.

User.where(something: true).notify_allmessage: "Spread the word!"

If you want to learn more about all the parameters a notification accepts, please refer to the notification parameters section.

Check notification status

IonicNotification stores your last sent notifications (3 by default), so that you check their status later. You access them by calling

IonicNotification.latest_notifications

which returns an array of IonicNotification::SentNotifications, a representation of the notifications you built before.

On each of those you can call the :status method, and it will fetch the notification status from Ionic API.

# If you want to know what happened to your lost notification,# or if you're simply curious about its statusnotification=IonicNotification.latest_notifications.firstnotification.status

Notification parameters

  • :tokens: The device tokens, the targets for your notifications. It accepts an Array or a String.
  • message: The awesome message you want to display through your notification.
  • schedule: Pass a DateTime to schedule your notification. You can use :notify_at and :notify_in methods to do this.
  • payload: You can pass a Hash here to define a common payload for both iOS and Android.
  • ios_payload: You can pass a Hash to specify a payload for iOS devices.
  • android_payload: You can pass a Hash to specify a payload for Android devices.
  • production: You can override IonicNotification.ionic_app_in_production for each of your notifications. Take a look at the configuration section for further details.
  • :title: See the ionic_app_name in the configuration section for further details.

Manually send a notification

In some cases, you may want to manually instantiate and send notifications. You can:

notification=IonicNotification::Notification.new(tokens: ["array","of","tokens"],message: "Your message")# You can pass any of the parameters of course.notification.send

Configuration

Here you'll find all required and optional options

ionic_application_id

required

This is, wait for it, your Ionic application id, should be something like "258d401f"

ionic_api_key

required

This must equal your Ionic API key, should be a pretty long string.

ionic_app_name

ionic_app_name will be used as the default title for your notifications, though in most cases on devices you will see the name of the installed app. It defaults to Rails.application.class.parent_name.

ionic_app_in_production

If ionic_app_in_production is set to true, notifications will be sent to all devices which have your Ionic app running with production certificates (a.k.a apps generally coming from store). Otherwise, if set to false, they'll be sent to all devices which have your app running with developer certificates. While it is set to true by default, if you want a more flexible solution set it to Rails.env.production?, so that notifications will be sent to "production devices" only while Rails app is running in production environment.

log_level

Defaults to :debug, customize it according to your needs. Available log levels are Rails standards: :debug, :info, :warning, :fatal, :unknown.

notification_store_limit

IonicNotification stores your last 3 sent notifications, unless you specify otherwise. As they're kept in memory, I seriously advise not to go nuts on this parameter setting it trillions of trillions. :neckbeard:

process_empty_messages

By default, notifications with no message provided will be skipped, you don't want your clients to receive a notification with no message, right? Well, sometimes it can be useful to speed up development and tests. You could like to be able to do something like this, from time to time:

User.first.notify

and see what happens, without bothering writing a fake message. You can enable this, if you want, setting process_empty_messages to true, or do it in a more safe way: !Rails.env.production?.

default_message

If you're allowing IonicNotification to process empty messages (see above), you'll want to set a default message.

ionic_api_url

Refer to Ionic documentation for further information. It defaults to the standard Ionic endpoints.

License

This project uses MIT-LICENSE. This project started from the codebase of nwwatson ionic_push_repo

About

A Ruby gem that provides an interface to use Ionic.io's Push Notification service.

Resources

Stars

10 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - rentziass/ionic_notification: A Ruby gem that provides an interface to use Ionic.io's Push Notification service. · GitHub
Skip to content

Repository files navigation

Build StatusGem Version

IonicNotification

IonicNotification is an interface for Rails to use Ionic.io's Push Notification service.

Keep in mind that Ionic.io's Push Notification is still in alpha at the moment, so this gem will probably undergo some major updates in the near future.

Getting started

gem install ionic_notification

You can add IonicNotification to your Gemfile with:

gem 'ionic_notification'

After you installed IonicNotification, you need to run the generator:

rails g ionic_notification:install

Configure the ionic_notification.rb file within config/initializers. You can use the default set environment variables, change them or hardcode those values (altough is highly NOT recommended)

IonicNotification.setupdo |config|
config.ionic_application_id=ENV["IONIC_APPLICATION_ID"]config.ionic_api_key=ENV["IONIC_API_KEY"]config.ionic_app_name="YourAppName"# ==> Configuration for the location of the API# Refer to the Ionic documentation for the correct location# Current documentation can be found here:# http://docs.ionic.io/docs/push-sending-push and# defaults to https://push.ionic.io# config.ionic_api_url = ENV["IONIC_API_URL"]end

Model setup

You can use IonicNotification directly from models. Run the proper generator:

rails g ionic_notification:model YOUR_MODEL

This creates a migration that will add a :device_tokens column to your model

classAddDeviceTokensTo_YOUR_MODEL < ActiveRecord::Migrationdefself.upadd_column:your_model_table_name,:device_tokens,:textenddefdownremove_column:your_model_table_name,:device_tokensendend

and includes IonicNotification in your model

# app/models/your_model.rbclassYourModel < ActiveRecord::Base# Include IonicNotification behaviourincludeIonicNotification::Concerns::IonicNotificable# Your stuff...end

Sending a Push Notification

# Assuming you want to send a notification to a User (yeah, weird, right?)user=User.firstuser.notifymessage: "Your super awesome notification message!"

This will simply send a notification with the provided message to all device tokens found on user.

You can also schedule notifications to be sent later, specifying either a DateTime or a delay.

user=User.firstuser.notify_atDate.tomorrow,message: "I'm a scheduled notification"user.notify_in2.hours,message: "I'm a delayed one instead"

If you have to send the same notification to a collection of, say, users, you have :notify_allavailable for use.

User.where(something: true).notify_allmessage: "Spread the word!"

If you want to learn more about all the parameters a notification accepts, please refer to the notification parameters section.

Check notification status

IonicNotification stores your last sent notifications (3 by default), so that you check their status later. You access them by calling

IonicNotification.latest_notifications

which returns an array of IonicNotification::SentNotifications, a representation of the notifications you built before.

On each of those you can call the :status method, and it will fetch the notification status from Ionic API.

# If you want to know what happened to your lost notification,# or if you're simply curious about its statusnotification=IonicNotification.latest_notifications.firstnotification.status

Notification parameters

  • :tokens: The device tokens, the targets for your notifications. It accepts an Array or a String.
  • message: The awesome message you want to display through your notification.
  • schedule: Pass a DateTime to schedule your notification. You can use :notify_at and :notify_in methods to do this.
  • payload: You can pass a Hash here to define a common payload for both iOS and Android.
  • ios_payload: You can pass a Hash to specify a payload for iOS devices.
  • android_payload: You can pass a Hash to specify a payload for Android devices.
  • production: You can override IonicNotification.ionic_app_in_production for each of your notifications. Take a look at the configuration section for further details.
  • :title: See the ionic_app_name in the configuration section for further details.

Manually send a notification

In some cases, you may want to manually instantiate and send notifications. You can:

notification=IonicNotification::Notification.new(tokens: ["array","of","tokens"],message: "Your message")# You can pass any of the parameters of course.notification.send

Configuration

Here you'll find all required and optional options

ionic_application_id

required

This is, wait for it, your Ionic application id, should be something like "258d401f"

ionic_api_key

required

This must equal your Ionic API key, should be a pretty long string.

ionic_app_name

ionic_app_name will be used as the default title for your notifications, though in most cases on devices you will see the name of the installed app. It defaults to Rails.application.class.parent_name.

ionic_app_in_production

If ionic_app_in_production is set to true, notifications will be sent to all devices which have your Ionic app running with production certificates (a.k.a apps generally coming from store). Otherwise, if set to false, they'll be sent to all devices which have your app running with developer certificates. While it is set to true by default, if you want a more flexible solution set it to Rails.env.production?, so that notifications will be sent to "production devices" only while Rails app is running in production environment.

log_level

Defaults to :debug, customize it according to your needs. Available log levels are Rails standards: :debug, :info, :warning, :fatal, :unknown.

notification_store_limit

IonicNotification stores your last 3 sent notifications, unless you specify otherwise. As they're kept in memory, I seriously advise not to go nuts on this parameter setting it trillions of trillions. :neckbeard:

process_empty_messages

By default, notifications with no message provided will be skipped, you don't want your clients to receive a notification with no message, right? Well, sometimes it can be useful to speed up development and tests. You could like to be able to do something like this, from time to time:

User.first.notify

and see what happens, without bothering writing a fake message. You can enable this, if you want, setting process_empty_messages to true, or do it in a more safe way: !Rails.env.production?.

default_message

If you're allowing IonicNotification to process empty messages (see above), you'll want to set a default message.

ionic_api_url

Refer to Ionic documentation for further information. It defaults to the standard Ionic endpoints.

License

This project uses MIT-LICENSE. This project started from the codebase of nwwatson ionic_push_repo

About

A Ruby gem that provides an interface to use Ionic.io's Push Notification service.

Resources

Stars

10 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - rentziass/ionic_notification: A Ruby gem that provides an interface to use Ionic.io's Push Notification service. · GitHub
Skip to content

Repository files navigation

Build StatusGem Version

IonicNotification

IonicNotification is an interface for Rails to use Ionic.io's Push Notification service.

Keep in mind that Ionic.io's Push Notification is still in alpha at the moment, so this gem will probably undergo some major updates in the near future.

Getting started

gem install ionic_notification

You can add IonicNotification to your Gemfile with:

gem 'ionic_notification'

After you installed IonicNotification, you need to run the generator:

rails g ionic_notification:install

Configure the ionic_notification.rb file within config/initializers. You can use the default set environment variables, change them or hardcode those values (altough is highly NOT recommended)

IonicNotification.setupdo |config|
config.ionic_application_id=ENV["IONIC_APPLICATION_ID"]config.ionic_api_key=ENV["IONIC_API_KEY"]config.ionic_app_name="YourAppName"# ==> Configuration for the location of the API# Refer to the Ionic documentation for the correct location# Current documentation can be found here:# http://docs.ionic.io/docs/push-sending-push and# defaults to https://push.ionic.io# config.ionic_api_url = ENV["IONIC_API_URL"]end

Model setup

You can use IonicNotification directly from models. Run the proper generator:

rails g ionic_notification:model YOUR_MODEL

This creates a migration that will add a :device_tokens column to your model

classAddDeviceTokensTo_YOUR_MODEL < ActiveRecord::Migrationdefself.upadd_column:your_model_table_name,:device_tokens,:textenddefdownremove_column:your_model_table_name,:device_tokensendend

and includes IonicNotification in your model

# app/models/your_model.rbclassYourModel < ActiveRecord::Base# Include IonicNotification behaviourincludeIonicNotification::Concerns::IonicNotificable# Your stuff...end

Sending a Push Notification

# Assuming you want to send a notification to a User (yeah, weird, right?)user=User.firstuser.notifymessage: "Your super awesome notification message!"

This will simply send a notification with the provided message to all device tokens found on user.

You can also schedule notifications to be sent later, specifying either a DateTime or a delay.

user=User.firstuser.notify_atDate.tomorrow,message: "I'm a scheduled notification"user.notify_in2.hours,message: "I'm a delayed one instead"

If you have to send the same notification to a collection of, say, users, you have :notify_allavailable for use.

User.where(something: true).notify_allmessage: "Spread the word!"

If you want to learn more about all the parameters a notification accepts, please refer to the notification parameters section.

Check notification status

IonicNotification stores your last sent notifications (3 by default), so that you check their status later. You access them by calling

IonicNotification.latest_notifications

which returns an array of IonicNotification::SentNotifications, a representation of the notifications you built before.

On each of those you can call the :status method, and it will fetch the notification status from Ionic API.

# If you want to know what happened to your lost notification,# or if you're simply curious about its statusnotification=IonicNotification.latest_notifications.firstnotification.status

Notification parameters

  • :tokens: The device tokens, the targets for your notifications. It accepts an Array or a String.
  • message: The awesome message you want to display through your notification.
  • schedule: Pass a DateTime to schedule your notification. You can use :notify_at and :notify_in methods to do this.
  • payload: You can pass a Hash here to define a common payload for both iOS and Android.
  • ios_payload: You can pass a Hash to specify a payload for iOS devices.
  • android_payload: You can pass a Hash to specify a payload for Android devices.
  • production: You can override IonicNotification.ionic_app_in_production for each of your notifications. Take a look at the configuration section for further details.
  • :title: See the ionic_app_name in the configuration section for further details.

Manually send a notification

In some cases, you may want to manually instantiate and send notifications. You can:

notification=IonicNotification::Notification.new(tokens: ["array","of","tokens"],message: "Your message")# You can pass any of the parameters of course.notification.send

Configuration

Here you'll find all required and optional options

ionic_application_id

required

This is, wait for it, your Ionic application id, should be something like "258d401f"

ionic_api_key

required

This must equal your Ionic API key, should be a pretty long string.

ionic_app_name

ionic_app_name will be used as the default title for your notifications, though in most cases on devices you will see the name of the installed app. It defaults to Rails.application.class.parent_name.

ionic_app_in_production

If ionic_app_in_production is set to true, notifications will be sent to all devices which have your Ionic app running with production certificates (a.k.a apps generally coming from store). Otherwise, if set to false, they'll be sent to all devices which have your app running with developer certificates. While it is set to true by default, if you want a more flexible solution set it to Rails.env.production?, so that notifications will be sent to "production devices" only while Rails app is running in production environment.

log_level

Defaults to :debug, customize it according to your needs. Available log levels are Rails standards: :debug, :info, :warning, :fatal, :unknown.

notification_store_limit

IonicNotification stores your last 3 sent notifications, unless you specify otherwise. As they're kept in memory, I seriously advise not to go nuts on this parameter setting it trillions of trillions. :neckbeard:

process_empty_messages

By default, notifications with no message provided will be skipped, you don't want your clients to receive a notification with no message, right? Well, sometimes it can be useful to speed up development and tests. You could like to be able to do something like this, from time to time:

User.first.notify

and see what happens, without bothering writing a fake message. You can enable this, if you want, setting process_empty_messages to true, or do it in a more safe way: !Rails.env.production?.

default_message

If you're allowing IonicNotification to process empty messages (see above), you'll want to set a default message.

ionic_api_url

Refer to Ionic documentation for further information. It defaults to the standard Ionic endpoints.

License

This project uses MIT-LICENSE. This project started from the codebase of nwwatson ionic_push_repo

About

A Ruby gem that provides an interface to use Ionic.io's Push Notification service.

Resources

Stars

10 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - rentziass/ionic_notification: A Ruby gem that provides an interface to use Ionic.io's Push Notification service. · GitHub
Skip to content

Repository files navigation

Build StatusGem Version

IonicNotification

IonicNotification is an interface for Rails to use Ionic.io's Push Notification service.

Keep in mind that Ionic.io's Push Notification is still in alpha at the moment, so this gem will probably undergo some major updates in the near future.

Getting started

gem install ionic_notification

You can add IonicNotification to your Gemfile with:

gem 'ionic_notification'

After you installed IonicNotification, you need to run the generator:

rails g ionic_notification:install

Configure the ionic_notification.rb file within config/initializers. You can use the default set environment variables, change them or hardcode those values (altough is highly NOT recommended)

IonicNotification.setupdo |config|
config.ionic_application_id=ENV["IONIC_APPLICATION_ID"]config.ionic_api_key=ENV["IONIC_API_KEY"]config.ionic_app_name="YourAppName"# ==> Configuration for the location of the API# Refer to the Ionic documentation for the correct location# Current documentation can be found here:# http://docs.ionic.io/docs/push-sending-push and# defaults to https://push.ionic.io# config.ionic_api_url = ENV["IONIC_API_URL"]end

Model setup

You can use IonicNotification directly from models. Run the proper generator:

rails g ionic_notification:model YOUR_MODEL

This creates a migration that will add a :device_tokens column to your model

classAddDeviceTokensTo_YOUR_MODEL < ActiveRecord::Migrationdefself.upadd_column:your_model_table_name,:device_tokens,:textenddefdownremove_column:your_model_table_name,:device_tokensendend

and includes IonicNotification in your model

# app/models/your_model.rbclassYourModel < ActiveRecord::Base# Include IonicNotification behaviourincludeIonicNotification::Concerns::IonicNotificable# Your stuff...end

Sending a Push Notification

# Assuming you want to send a notification to a User (yeah, weird, right?)user=User.firstuser.notifymessage: "Your super awesome notification message!"

This will simply send a notification with the provided message to all device tokens found on user.

You can also schedule notifications to be sent later, specifying either a DateTime or a delay.

user=User.firstuser.notify_atDate.tomorrow,message: "I'm a scheduled notification"user.notify_in2.hours,message: "I'm a delayed one instead"

If you have to send the same notification to a collection of, say, users, you have :notify_allavailable for use.

User.where(something: true).notify_allmessage: "Spread the word!"

If you want to learn more about all the parameters a notification accepts, please refer to the notification parameters section.

Check notification status

IonicNotification stores your last sent notifications (3 by default), so that you check their status later. You access them by calling

IonicNotification.latest_notifications

which returns an array of IonicNotification::SentNotifications, a representation of the notifications you built before.

On each of those you can call the :status method, and it will fetch the notification status from Ionic API.

# If you want to know what happened to your lost notification,# or if you're simply curious about its statusnotification=IonicNotification.latest_notifications.firstnotification.status

Notification parameters

  • :tokens: The device tokens, the targets for your notifications. It accepts an Array or a String.
  • message: The awesome message you want to display through your notification.
  • schedule: Pass a DateTime to schedule your notification. You can use :notify_at and :notify_in methods to do this.
  • payload: You can pass a Hash here to define a common payload for both iOS and Android.
  • ios_payload: You can pass a Hash to specify a payload for iOS devices.
  • android_payload: You can pass a Hash to specify a payload for Android devices.
  • production: You can override IonicNotification.ionic_app_in_production for each of your notifications. Take a look at the configuration section for further details.
  • :title: See the ionic_app_name in the configuration section for further details.

Manually send a notification

In some cases, you may want to manually instantiate and send notifications. You can:

notification=IonicNotification::Notification.new(tokens: ["array","of","tokens"],message: "Your message")# You can pass any of the parameters of course.notification.send

Configuration

Here you'll find all required and optional options

ionic_application_id

required

This is, wait for it, your Ionic application id, should be something like "258d401f"

ionic_api_key

required

This must equal your Ionic API key, should be a pretty long string.

ionic_app_name

ionic_app_name will be used as the default title for your notifications, though in most cases on devices you will see the name of the installed app. It defaults to Rails.application.class.parent_name.

ionic_app_in_production

If ionic_app_in_production is set to true, notifications will be sent to all devices which have your Ionic app running with production certificates (a.k.a apps generally coming from store). Otherwise, if set to false, they'll be sent to all devices which have your app running with developer certificates. While it is set to true by default, if you want a more flexible solution set it to Rails.env.production?, so that notifications will be sent to "production devices" only while Rails app is running in production environment.

log_level

Defaults to :debug, customize it according to your needs. Available log levels are Rails standards: :debug, :info, :warning, :fatal, :unknown.

notification_store_limit

IonicNotification stores your last 3 sent notifications, unless you specify otherwise. As they're kept in memory, I seriously advise not to go nuts on this parameter setting it trillions of trillions. :neckbeard:

process_empty_messages

By default, notifications with no message provided will be skipped, you don't want your clients to receive a notification with no message, right? Well, sometimes it can be useful to speed up development and tests. You could like to be able to do something like this, from time to time:

User.first.notify

and see what happens, without bothering writing a fake message. You can enable this, if you want, setting process_empty_messages to true, or do it in a more safe way: !Rails.env.production?.

default_message

If you're allowing IonicNotification to process empty messages (see above), you'll want to set a default message.

ionic_api_url

Refer to Ionic documentation for further information. It defaults to the standard Ionic endpoints.

License

This project uses MIT-LICENSE. This project started from the codebase of nwwatson ionic_push_repo

About

A Ruby gem that provides an interface to use Ionic.io's Push Notification service.

Resources

Stars

10 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - rentziass/ionic_notification: A Ruby gem that provides an interface to use Ionic.io's Push Notification service. · GitHub
Skip to content

Repository files navigation

Build StatusGem Version

IonicNotification

IonicNotification is an interface for Rails to use Ionic.io's Push Notification service.

Keep in mind that Ionic.io's Push Notification is still in alpha at the moment, so this gem will probably undergo some major updates in the near future.

Getting started

gem install ionic_notification

You can add IonicNotification to your Gemfile with:

gem 'ionic_notification'

After you installed IonicNotification, you need to run the generator:

rails g ionic_notification:install

Configure the ionic_notification.rb file within config/initializers. You can use the default set environment variables, change them or hardcode those values (altough is highly NOT recommended)

IonicNotification.setupdo |config|
config.ionic_application_id=ENV["IONIC_APPLICATION_ID"]config.ionic_api_key=ENV["IONIC_API_KEY"]config.ionic_app_name="YourAppName"# ==> Configuration for the location of the API# Refer to the Ionic documentation for the correct location# Current documentation can be found here:# http://docs.ionic.io/docs/push-sending-push and# defaults to https://push.ionic.io# config.ionic_api_url = ENV["IONIC_API_URL"]end

Model setup

You can use IonicNotification directly from models. Run the proper generator:

rails g ionic_notification:model YOUR_MODEL

This creates a migration that will add a :device_tokens column to your model

classAddDeviceTokensTo_YOUR_MODEL < ActiveRecord::Migrationdefself.upadd_column:your_model_table_name,:device_tokens,:textenddefdownremove_column:your_model_table_name,:device_tokensendend

and includes IonicNotification in your model

# app/models/your_model.rbclassYourModel < ActiveRecord::Base# Include IonicNotification behaviourincludeIonicNotification::Concerns::IonicNotificable# Your stuff...end

Sending a Push Notification

# Assuming you want to send a notification to a User (yeah, weird, right?)user=User.firstuser.notifymessage: "Your super awesome notification message!"

This will simply send a notification with the provided message to all device tokens found on user.

You can also schedule notifications to be sent later, specifying either a DateTime or a delay.

user=User.firstuser.notify_atDate.tomorrow,message: "I'm a scheduled notification"user.notify_in2.hours,message: "I'm a delayed one instead"

If you have to send the same notification to a collection of, say, users, you have :notify_allavailable for use.

User.where(something: true).notify_allmessage: "Spread the word!"

If you want to learn more about all the parameters a notification accepts, please refer to the notification parameters section.

Check notification status

IonicNotification stores your last sent notifications (3 by default), so that you check their status later. You access them by calling

IonicNotification.latest_notifications

which returns an array of IonicNotification::SentNotifications, a representation of the notifications you built before.

On each of those you can call the :status method, and it will fetch the notification status from Ionic API.

# If you want to know what happened to your lost notification,# or if you're simply curious about its statusnotification=IonicNotification.latest_notifications.firstnotification.status

Notification parameters

  • :tokens: The device tokens, the targets for your notifications. It accepts an Array or a String.
  • message: The awesome message you want to display through your notification.
  • schedule: Pass a DateTime to schedule your notification. You can use :notify_at and :notify_in methods to do this.
  • payload: You can pass a Hash here to define a common payload for both iOS and Android.
  • ios_payload: You can pass a Hash to specify a payload for iOS devices.
  • android_payload: You can pass a Hash to specify a payload for Android devices.
  • production: You can override IonicNotification.ionic_app_in_production for each of your notifications. Take a look at the configuration section for further details.
  • :title: See the ionic_app_name in the configuration section for further details.

Manually send a notification

In some cases, you may want to manually instantiate and send notifications. You can:

notification=IonicNotification::Notification.new(tokens: ["array","of","tokens"],message: "Your message")# You can pass any of the parameters of course.notification.send

Configuration

Here you'll find all required and optional options

ionic_application_id

required

This is, wait for it, your Ionic application id, should be something like "258d401f"

ionic_api_key

required

This must equal your Ionic API key, should be a pretty long string.

ionic_app_name

ionic_app_name will be used as the default title for your notifications, though in most cases on devices you will see the name of the installed app. It defaults to Rails.application.class.parent_name.

ionic_app_in_production

If ionic_app_in_production is set to true, notifications will be sent to all devices which have your Ionic app running with production certificates (a.k.a apps generally coming from store). Otherwise, if set to false, they'll be sent to all devices which have your app running with developer certificates. While it is set to true by default, if you want a more flexible solution set it to Rails.env.production?, so that notifications will be sent to "production devices" only while Rails app is running in production environment.

log_level

Defaults to :debug, customize it according to your needs. Available log levels are Rails standards: :debug, :info, :warning, :fatal, :unknown.

notification_store_limit

IonicNotification stores your last 3 sent notifications, unless you specify otherwise. As they're kept in memory, I seriously advise not to go nuts on this parameter setting it trillions of trillions. :neckbeard:

process_empty_messages

By default, notifications with no message provided will be skipped, you don't want your clients to receive a notification with no message, right? Well, sometimes it can be useful to speed up development and tests. You could like to be able to do something like this, from time to time:

User.first.notify

and see what happens, without bothering writing a fake message. You can enable this, if you want, setting process_empty_messages to true, or do it in a more safe way: !Rails.env.production?.

default_message

If you're allowing IonicNotification to process empty messages (see above), you'll want to set a default message.

ionic_api_url

Refer to Ionic documentation for further information. It defaults to the standard Ionic endpoints.

License

This project uses MIT-LICENSE. This project started from the codebase of nwwatson ionic_push_repo

About

A Ruby gem that provides an interface to use Ionic.io's Push Notification service.

Resources

Stars

10 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages