[Aerogear-users] Possible bug in Aerogear Push Cordova/iOS implementation but not in the Cordova/Android version

Sebastien Blanc scm.blanc at gmail.com
Wed Dec 16 11:04:16 EST 2015


In the ionic app when do you do the registration of UPS ? on the
platformReady event ?

On Wed, Dec 16, 2015 at 4:54 PM, Rob Willett <rob.aerogear at robertwillett.com
> wrote:

> Erik,
>
> We have built the simplest possible app we can that uses the Aerogear
> push plugin but using the ionic tabs starter kit.
>
> http://ionicframework.com/getting-started/
>
> We have taken the code directly from the Cordova simple app that we have
> got working and put it into the Ionic app.
>
> if we follow your tests as below:
>
> 1. IOS App in foreground, we send a simple push notification from the
> Aerogear console - Works OK, We can see the event. Good
>
> 2. IOS App in background, we send a simple push notification from the
> Aerogear console - Works OK, We can see the event. Good
>
> 3. IOS App killed, we send a simple push notification from the Aerogear
> console and some of the time when we click on the notification in the
> notification drawer we do NOT get the notification handler called. Not
> so good
>
> However it does appear to work most of the time with our minimal Ionic
> app, but some of the time it fails. We had a run of 1 in 2 failures when
> we click on the notification. Now we have just done 20 runs in a row,
> each time killing the app after receiving the notification and not a
> single failure. Nothing changed.
>
> We cannot find any obvious reason for this so we are still
> investigating.
>
> We have reconfigured our main app to work the same way as the minimal
> app but we are still getting the same issues as before, we can see the
> notification in the drawer but clicking on it does NOT call the same
> handler with the same code as the minimal app. We get zero calls to the
> notification event handler.
>
> We are wondering if there is a timing issue somewhere in our code, but
> we can’t see it. We also wondered if the size of the code we are
> loading is the cause of a timing issue as well.
>
> Is there any way of adding more debugging into the Aerogear push plugin
> to see if we can track things down that way?
>
> Its very frustrating, but thanks for your help to date. It does look
> like its an interaction with our code, Ionic and the Aerogear plugin. My
> money is on our code though. We’ll now start pulling working code out
> of our app until we get back to the minimal app. Only 18,604 lines to go
> :)
>
> Rob
>
> On 15 Dec 2015, at 10:36, Erik Jan de Wit wrote:
>
> > Hi Rob,
> >
> > That would be a bug, although I can not reproduce it, to test it this
> > is
> > what I've done to test it:
> > $ > cordova create push-test <my bundle id>
> > $ > cordova platform add ios
> > $ > cordova plugin add aerogear-cordova-push
> >
> > copy paste your js code into www/js/index.js onDeviceReady, changed
> > pushServerUrl and variant info and changed quotes to " (this is your
> > email
> > client no doubt) and changed : into ; after console.log("Success")
> >
> >
> > Attach Safari debugger and send a message when the app is in the
> > foreground
> > and get in the console:
> >
> > HandleAeroGearNotification: event =>
> >
> {"alert":"test","foreground":true,"coldstart":false,"sound":"default","badge":-1,"payload":{}}
> >
> > I press the home button and send the app to the background send
> > another
> > message and 'touch' the message to launch the app:
> >
> > HandleAeroGearNotification: event =>
> >
> {"alert":"background","foreground":false,"coldstart":false,"sound":"default","badge":-1,"payload":{}}
> >
> > The I kill the app by pressing home twice and swiping over the app to
> > remove it send another message and 'touch' it to launch the app. This
> > kills
> > my safari debugger so no way to see the console log, but in this case
> > coldstart should be true. To test this better changed the code to
> > alert
> > instead of console:
> >
> > function HandleAeroGearNotification(event) {
> >    alert("HandleAeroGearNotification: event => " + event.coldstart);
> >
> >    // Stuff cut for clarity
> > }
> >
> > I send another notification 'touch' it to launch the app and see the
> > alert
> > box display the text:
> >
> > HandleAeroGearNotification: event => true
> >
> > Hope this helps
> >
> >
> >
> > On Mon, Dec 14, 2015 at 10:20 PM, Rob Willett <
> > rob.aerogear at robertwillett.com> wrote:
> >
> >> Hi,
> >>
> >> We think we have found a possible bug in the Aerogear Cordova 2.0.4
> >> push
> >> plugin specifically on the iOS side.
> >> Summary
> >>
> >> We have two versions of our app, an Android and an IOS version. Both
> >> use
> >> the latest Cordova push plugin 2.0.4. They also both have the latest
> >> Cordova platforms, android 4.1.1, ios 3.9.2. Both the iOS and Android
> >> versions are compiled at the same time. We are running cordova 5.3.3
> >> with
> >> Ionic 1.7.8 (?).
> >>
> >> 1.
> >>
> >> We make sure that both apps are NOT started up on each device. We
> >> also
> >> check they are NOT in the background.
> >> 2.
> >>
> >> We send the same simple notification to each device. This
> >> notification
> >> config is as below, we have anonymised the variants and alias in this
> >> JSON
> >> structure, though we can report that the UPS server sends the data
> >> correctly. We use the additionalData flag to provide the information
> >> necessary to decide which notification has been clicked in the
> >> notification
> >> drawer.
> >>
> >> 'variants' => [‘variant1’,’variant2’ ],
> >> 'message' => {
> >>  'additionalData' => { 'Disruption_Id' => '107546',
> >>                       'EpochTime' => '1450125268'
> >>                      },
> >>  'alert' => 'Cannon Street (EC4N) (All Directions) at the junction of
> >> King William Street - To facilitate a heavy lift in Cannon Street,
> >> Cannon Street will be closed. Traffic is slow moving on diversion.'
> >> },
> >>  'alias' => [ ‘alias1’ ],
> >>  'ttl' => 600
> >> };
> >>
> >>
> >> 1.
> >>
> >> Both devices show the message, the Android device stacks the message
> >> and the iOS device display an individual message. This looks correct.
> >> 2.
> >>
> >> Clicking on the Android stacked message starts up the app and the
> >> Javascript notification handler we have defined,
> >> HandleAeroGearNotification
> >> is called
> >>
> >> HandleAeroGearNotification: event => {"alert":"Cannon Street (EC4N)
> >> (All Directions) at the junction of King William Street - To
> >> facilitate a heavy lift in Cannon Street, Cannon Street will be
> >> closed. Traffic is slow moving on
> >>
> diversion.","coldstart":true,"foreground":true,"payload":{"alert":"Cannon
> >> Street (EC4N) (All Directions) at the junction of King William Street
> >> - To facilitate a heavy lift in Cannon Street, Cannon Street will be
> >> closed. Traffic is slow moving on diversion.","badge":"-1"}}
> >>
> >>
> >> 1.
> >>
> >> Clicking on the notification in the notification drawer on the iOS
> >> device also starts our app up correctly but the notification handler,
> >> HandleAeroGearNotification(), is NOT called. The app starts up as
> >> normal as
> >> if the notification had not been clicked. We would expect the
> >> notification
> >> handler to be called in iOS as it is in Android.
> >> 2.
> >>
> >> All notifications are cleared on both Android and iOS correctly when
> >> the app is started up.
> >> 3.
> >>
> >> We define HandleAeroGearNotification as
> >>
> >>
> >>  var aeroGearPushConfig = {
> >>      pushServerURL: "https://push-jambuster.rhcloud.com/ag-push/",
> >>      ios: {
> >>          variantID: “variantid_obscured”,
> >>           variantSecret: “variant_secret_obscured”
> >>          } ,
> >>       android: {
> >>              senderID: "variantid_obscured" ,
> >>          variantID: "variant_id_obscured" ,
> >>          variantSecret: "variant_secret_obscured"
> >>       } ,
> >>      sendMetricInfo: true,
> >>      alias: alias1
> >>  };
> >>
> >>  function HandleAeroGearNotification(event) {
> >>      console.log(“HandleAeroGearNotification: event => “ +
> >> JSON.stringify(event));
> >>
> >>      // Stuff cut for clarity
> >>  }
> >>
> >>  // Slightly simplified registration event.
> >>  push.register(HandleAeroGearNotification , function () {
> >>      console.log(“Success”):
> >>  } , function () {
> >>      console.log(“Failure”);
> >>  } , aeroGearPushConfig);
> >>
> >> We cannot see any reference to this issue in the JIRA database and
> >> wondered if it is a bug or not.
> >>
> >> If its a bug we are happy to raise it accordingly.
> >>
> >> Please let us know,
> >>
> >> Thanks
> >>
> >> Rob
> >>
> >> _______________________________________________
> >> Aerogear-users mailing list
> >> Aerogear-users at lists.jboss.org
> >> https://lists.jboss.org/mailman/listinfo/aerogear-users
> >>
> >>
> >
> >
> > --
> > Cheers,
> >     Erik Jan
> > _______________________________________________
> > Aerogear-users mailing list
> > Aerogear-users at lists.jboss.org
> > https://lists.jboss.org/mailman/listinfo/aerogear-users
>
> _______________________________________________
> Aerogear-users mailing list
> Aerogear-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/aerogear-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/aerogear-users/attachments/20151216/c57c30cd/attachment-0001.html 


More information about the Aerogear-users mailing list