Tuesday, August 25, 2015

PhoneGap-Plugin-Push Version 1.2.0 Released!

The latest release of the PushPlugin is now available on npm. This release focuses on bringing a number of enhancements to Android notifications.

Fear not fans of other platforms as subsequent releases will have more features for your OS of choice. In fact release 1.3.0 will center around iOS9 support.

Picture Notifications

Embed a large picture in your notification. You let the plugin know you want to display a picture by setting the style of the push to picture and then giving it a picture property.

For example:
    title:"Big Picture", 
    message: "This is my big picture message", 
    style: "picture",
    picture: "http://36.media.tumblr.com/c066cc2238103856c9ac506faa6f3bc2/tumblr_nmstmqtuo81tssmyno1_1280.jpg",
    summaryText: "The internet is built on cat pictures"
Produces the cat picture on the right.

Inbox Notifications

Instead of stacking notifications in the tray you can now add multiple notifications to a single entry in the tray by setting the style to inbox. The first notification that arrives looks like normal but the subsequent ones will look like an inbox.

For example:
    title:"My Title", 
    message: "My first message", 
    style: "inbox",
    summaryText: "There are %n% notifications"
Followed by:
    title:"My Title", 
    message: "My second message", 
    style: "inbox",
    summaryText: "There are %n% notifications"
Produces the notification above.

Finally, my favourite new addition...

Action Buttons

Your notification can include action buttons. If you wish to include an icon along with the button name they must be placed in the res/drawable directory of your Android project. Then you can send the following JSON from GCM:
    title:"AUX Scrum", 
    message: "Scrum: Daily touchbase @ 10am Please be on time so we can cover everything on the agenda.", 
    actions: [
        { icon: "emailGuests", title: "EMAIL GUESTS", callback: "app.emailGuests"},
        { icon: "snooze", title: "SNOOZE", callback: "app.snooze"},
This will produce the following notification in your tray:

When the user clicks on one of the buttons it will execute the JavaScript code you specified as a callback for that button.

Check out the plugin's README for more details.

Full Change Log
1.2.0 (2015-08-25)

Implemented enhancements:
  • Implement Big Picture Style for Android #75
  • Implement Inbox style for Android #74
  • on("registration" is not getting called... #66
  • multi-line text support #63
  • Add image property to iOS and Android #39
  • Programmatically register #31
Fixed bugs:
  • Pushes being deleted from notification bar when cold start #67
  • No default sound in Android #53
  • Multiple push notification problem #48
Closed issues:
  • oficial push plugin and windows and wp8 compatibility #71
  • On Android, GCMIntentService.onError() doesn't get passed to the JavaScript "error" event #65
  • Android: add property to vibrate phone on received notification #61
  • push.on => "registration" will trigger twice times that only in iOS #57
  • Publish plugin to PhoneGap Build #22
Merged pull requests:

Monday, July 27, 2015

PhoneGap-Plugin-Push Version 1.1.1 Released!

Back during PhoneGap Day EU 2015 I announced our new PushPlugin with it's normalized API and a promise of continued support. With the release of the 1.1.1 version of the plugin we continue to fulfill that promise with some new features and bug fixes.

The most exciting new feature in this release is official support for the Windows platform! This is thanks to the wonderful team at Microsoft who contributed to the plugin to make it happen. Special thanks to Raghav Katyal and Nikhi Khandelwal!

On the Android side of things you now have way more options on how to set what icon is displayed with your push notifications:

Check out the plugin's README for more details on how to setup the each of the image types.

Full Changelog
Implemented enhancements:
  • iOS doesn't add foreground key #41
  • Android: Notification icon problem #20
  • iOS badge number #18
  • How i can set icons for push notifications in status bar and push view in android #14
  • Support Win8.1 + Phone 8.1 Universal Apps (WNS), drop support for WP8.0 (MPNS) #13
Fixed bugs:
  • iOS only reads out "aps" payload #29
  • Event not fired when in background #24
  • Custom notification sound in background mode? #17
Closed issues:
  • iOS only receives first notification in foreground #42
  • Cannot register on iOS #30
  • Fix Android paths in src folder #23
  • PushNotification not defined #21
  • Error trying to remove the plugin #19
  • Handling multiple notifications on Android devices #12
  • PGB (build.phonegap.com) problem #11
  • reporting location via gcm #6
Merged pull requests:

Friday, June 19, 2015

Including Plugins with Cordova Command Line Interface 5

You may have noticed that things have changed up a bit as of Cordova CLI 5.0.0 release. Specifically, we are now encouraging the the use of <plugin> tags in your config.xml file over the previously used <feature> tags.

You may be wondering why you should use the <plugin> tag. The main reason is that when you use the <plugin> tag it will fetch and install the plugin for you during the cordova prepare phase of building your project.

So if you have the following feature tags in your current config.xml:
<feature name="org.apache.cordova.file">
    <param name="id" value="org.apache.cordova.file@1.0.1"/>
<feature name="org.apache.cordova.file-transfer">
    <param name="id" value="org.apache.cordova.file-transfer@0.4.2"/>
<feature name="org.apache.cordova.device">
    <param name="id" value="org.apache.cordova.device@0.2.8"/>
<feature name="com.telerik.plugins.nativepagetransitions">
    <param name="id" value="https://github.com/Telerik-Verified-Plugins/NativePageTransitions#0.2.11"/>
<feature name="com.phonegap.plugins.pushplugin">
    <param name="id" value="https://github.com/phonegap-build/PushPlugin#1979d972b6ab37e28cf2077bc7ebfe706cc4dacd"/>
Then you'd just replace it with:
<plugin name="cordova-plugin-file" spec="^2.0.0" />
<plugin name="cordova-plugin-file-transfer" spec="^1.0.0" />
<plugin name="cordova-plugin-device" spec="^1.0.0" />
<plugin name="com.telerik.plugins.nativepagetransitions" spec="https://github.com/Telerik-Verified-Plugins/NativePageTransitions#0.2.11" />
<plugin name="com.phonegap.plugins.pushplugin" spec="https://github.com/phonegap-build/PushPlugin#1979d972b6ab37e28cf2077bc7ebfe706cc4dacd" />
You may have noticed that the package ID for org.apache.cordova.file has changed to cordova-plugin-file. The is part of the way plugins are now hosted on npm. You'll notice that all the core plugins (org.apache.cordova) have been renamed (see table below).

For non-core plugins you can still download them from a git repository. In order to specify a specific version you use #versionNumber for example, NativePageTransistion above or to download from a specific commit use #commitHash for example, PushPlugin above.

org.apache.cordova.battery-status cordova-plugin-battery-status
org.apache.cordova.camera cordova-plugin-camera
org.apache.cordova.contacts cordova-plugin-contacts
org.apache.cordova.device cordova-plugin-device
org.apache.cordova.device-motion cordova-plugin-device-motion
org.apache.cordova.device-orientation cordova-plugin-device-orientation
org.apache.cordova.dialogs cordova-plugin-dialogs
org.apache.cordova.file cordova-plugin-file
org.apache.cordova.file-transfer cordova-plugin-file-transfer
org.apache.cordova.geolocation cordova-plugin-geolocation
org.apache.cordova.globalization cordova-plugin-globalization
org.apache.cordova.inappbrowser cordova-plugin-inappbrowser
org.apache.cordova.media-capture cordova-plugin-media-capture
org.apache.cordova.media cordova-plugin-media
org.apache.cordova.network-information cordova-plugin-network-information
org.apache.cordova.splashscreen cordova-plugin-splashscreen
org.apache.cordova.statusbar cordova-plugin-statusbar
org.apache.cordova.whitelist cordova-plugin-whitelist
org.apache.cordova.vibration cordova-plugin-vibration

Saturday, June 13, 2015

Mud Hero 2015

So last Saturday Anna and I participated in the Mud Hero Ottawa run. It was an absolute blast as you can probably tell by looking at the smiles on our faces. We took a bunch of pictures during the day which I have in an album over here.
First up Anna ran the kids course which was three 500 meter laps with 6 obstacles. The announcer constantly mentioned to parents to make sure that the kids schools were on tight or else they would lose them in the mud pit. Predictably, this led to a bunch of parents having to dig in the mud pit for their child's missing shoe.

Anna escaped with both of her shoes but as you can see she got super muddy which I encouraged whole heartedly.
Then I finally had my chance to run the 6km course with 20 obstacles with my buddy Hicham and one of his neighbours. There were some really fun obstacles like walls, tires, ropes, slides but by far the most fun was the waist deep (or deeper) mud. You can see in this pic I've just come down the slide and luckily retrieved my hat from the mud puddle.

After the race the team from Muscle Mlk was there to hand out ready to drink protein shakes. I don't know if it was because I just ran 6km but that was the best vanilla shake I've had in a long time.

For anyone who is interested in these types of races I can offer a few tips:

  1. Bring a complete change of clothes including shoes. You will not want to put your muddy shoes on after getting clean.
  2. Wear non-cotton underwear. You really need something that isn't going to trap in a pound of dirt in your skivvies. 
  3. Bring a big fluffy towel to get warm. The "showers" are generally hoses of cold water so you will go from being over heated to freezing in no time. The fluffy towel will help.
Next up is the Bad Ass Dash on July 18th in Nepean. Anyone interested in joining?

Wednesday, June 10, 2015

Tuesday, May 19, 2015

PhoneGap Day EU 2015 - Push N' Pull

Yesterday, I was happy to present at PhoneGap Day EU in Amsterdam. It's one of my favourite days of the year. Besides getting to hang out with all of my co-workers who I rarely get to see in person as we are separated by half a continent I get to talk in person with the people who use our software.

At PG Day I was presenting on the work that we've been doing in order to make the lives of developers easier. My presentation introduces the new and improved Push Plugin as well as the completely new Content Sync Plugin. I'll be blogging more about these two new plugins in the up coming weeks but for now if anyone wants to check out the slides they are embedded below:

Tuesday, December 2, 2014

VideoPlayer Plugin Updated for Cordova/PhoneGap 3.x and Above

Happily, I'm getting the chance to go back and visit some of my older plugins. I've just updated the VideoPlayer plugin so you can install it via the command line tools. To install via the command line just do:

cordova plugin add https://github.com/macdonst/VideoPlayer

For more information on how the plugin works check out my old post on the topic.