<div class="markdown">
<p dir="auto">Sebastien</p>

<p dir="auto">Yes, we do it at that point, $ionicPlatform.ready. I include the whole of that area of code for reference but we’re not expecting you to debug it for us. Merely to demonstrate its there.</p>

<p dir="auto">At the moment all we want the code to do is put an alert up.</p>

<pre><code>.run(function($ionicPlatform , CordovaService) {
    $ionicPlatform.ready(function() {
        if (window.StatusBar) {
            // org.apache.cordova.statusbar required
            StatusBar.styleDefault();
        }

        ConsoleLog('&lt;&lt;&lt; Cordova ready &gt;&gt;&gt;');

        /* This seems to remove an annoying page flicker on iOS when the keyboard is displayed */
        cordova.plugins.Keyboard.disableScroll(true);

       isDeviceReady = true;

        var uuid = "D26FBAF1-2EF2-4614-875F-4497EC4212D5/JFL1-0/ios_app";

        var aeroGearPushConfig = {
            pushServerURL: "https://push-jambuster.rhcloud.com/ag-push/",
            ios: {
                variantID: “XXXXX”,
                variantSecret: “YYYYYYY”
            } ,
            // sendMetricInfo: true,
            alias: uuid
        };

        push.register(function (event) {
            alert("EVENT = " + JSON.stringify(event));

        } ,  function () {
            if (1)
            {
                // alert("AeroGearSuccessHandler: OK " + JSON.stringify(uuid));
                // ConsoleLog("UUID = " + uuid);
            }
        } , function () {
    } , aeroGearPushConfig);
</code></pre>

<p dir="auto">We were still loading up another 18,000 lines of code so we need to start pruning that back until we have something that works.</p>

<p dir="auto">Rob</p>

<p dir="auto">On 16 Dec 2015, at 16:04, Sebastien Blanc wrote:</p>

<blockquote>
<p dir="auto">In the ionic app when do you do the registration of UPS ? on the<br>
platformReady event ?</p>

<p dir="auto">On Wed, Dec 16, 2015 at 4:54 PM, Rob Willett &lt;<a href="mailto:rob.aerogear@robertwillett.com">rob.aerogear@robertwillett.com</a></p>

<blockquote>
<p dir="auto">wrote:</p>

<p dir="auto">Erik,</p>

<p dir="auto">We have built the simplest possible app we can that uses the Aerogear<br>
push plugin but using the ionic tabs starter kit.</p>

<p dir="auto"><a href="http://ionicframework.com/getting-started/">http://ionicframework.com/getting-started/</a></p>

<p dir="auto">We have taken the code directly from the Cordova simple app that we have<br>
got working and put it into the Ionic app.</p>

<p dir="auto">if we follow your tests as below:</p>

<ol>
<li value=1><p dir="auto">IOS App in foreground, we send a simple push notification from the<br>
Aerogear console - Works OK, We can see the event. Good</p></li>
<li value=2><p dir="auto">IOS App in background, we send a simple push notification from the<br>
Aerogear console - Works OK, We can see the event. Good</p></li>
<li value=3><p dir="auto">IOS App killed, we send a simple push notification from the Aerogear<br>
console and some of the time when we click on the notification in the<br>
notification drawer we do NOT get the notification handler called. Not<br>
so good</p></li>
</ol>

<p dir="auto">However it does appear to work most of the time with our minimal Ionic<br>
app, but some of the time it fails. We had a run of 1 in 2 failures when<br>
we click on the notification. Now we have just done 20 runs in a row,<br>
each time killing the app after receiving the notification and not a<br>
single failure. Nothing changed.</p>

<p dir="auto">We cannot find any obvious reason for this so we are still<br>
investigating.</p>

<p dir="auto">We have reconfigured our main app to work the same way as the minimal<br>
app but we are still getting the same issues as before, we can see the<br>
notification in the drawer but clicking on it does NOT call the same<br>
handler with the same code as the minimal app. We get zero calls to the<br>
notification event handler.</p>

<p dir="auto">We are wondering if there is a timing issue somewhere in our code, but<br>
we can’t see it. We also wondered if the size of the code we are<br>
loading is the cause of a timing issue as well.</p>

<p dir="auto">Is there any way of adding more debugging into the Aerogear push plugin<br>
to see if we can track things down that way?</p>

<p dir="auto">Its very frustrating, but thanks for your help to date. It does look<br>
like its an interaction with our code, Ionic and the Aerogear plugin. My<br>
money is on our code though. We’ll now start pulling working code out<br>
of our app until we get back to the minimal app. Only 18,604 lines to go<br>
:)</p>

<p dir="auto">Rob</p>

<p dir="auto">On 15 Dec 2015, at 10:36, Erik Jan de Wit wrote:</p>

<blockquote>
<p dir="auto">Hi Rob,</p>

<p dir="auto">That would be a bug, although I can not reproduce it, to test it this<br>
is<br>
what I've done to test it:<br>
$ &gt; cordova create push-test &lt;my bundle id&gt;<br>
$ &gt; cordova platform add ios<br>
$ &gt; cordova plugin add aerogear-cordova-push</p>

<p dir="auto">copy paste your js code into www/js/index.js onDeviceReady, changed<br>
pushServerUrl and variant info and changed quotes to " (this is your<br>
email<br>
client no doubt) and changed : into ; after console.log("Success")</p>

<p dir="auto">Attach Safari debugger and send a message when the app is in the<br>
foreground<br>
and get in the console:</p>

<p dir="auto">HandleAeroGearNotification: event =&gt;</p>
</blockquote>

<p dir="auto">{"alert":"test","foreground":true,"coldstart":false,"sound":"default","badge":-1,"payload":{}}</p>

<blockquote>
<p dir="auto">I press the home button and send the app to the background send<br>
another<br>
message and 'touch' the message to launch the app:</p>

<p dir="auto">HandleAeroGearNotification: event =&gt;</p>
</blockquote>

<p dir="auto">{"alert":"background","foreground":false,"coldstart":false,"sound":"default","badge":-1,"payload":{}}</p>

<blockquote>
<p dir="auto">The I kill the app by pressing home twice and swiping over the app to<br>
remove it send another message and 'touch' it to launch the app. This<br>
kills<br>
my safari debugger so no way to see the console log, but in this case<br>
coldstart should be true. To test this better changed the code to<br>
alert<br>
instead of console:</p>

<p dir="auto">function HandleAeroGearNotification(event) {<br>
alert("HandleAeroGearNotification: event =&gt; " + event.coldstart);</p>

<p dir="auto">// Stuff cut for clarity<br>
}</p>

<p dir="auto">I send another notification 'touch' it to launch the app and see the<br>
alert<br>
box display the text:</p>

<p dir="auto">HandleAeroGearNotification: event =&gt; true</p>

<p dir="auto">Hope this helps</p>

<p dir="auto">On Mon, Dec 14, 2015 at 10:20 PM, Rob Willett &lt;<br>
<a href="mailto:rob.aerogear@robertwillett.com">rob.aerogear@robertwillett.com</a>&gt; wrote:</p>

<blockquote>
<p dir="auto">Hi,</p>

<p dir="auto">We think we have found a possible bug in the Aerogear Cordova 2.0.4<br>
push<br>
plugin specifically on the iOS side.<br>
Summary</p>

<p dir="auto">We have two versions of our app, an Android and an IOS version. Both<br>
use<br>
the latest Cordova push plugin 2.0.4. They also both have the latest<br>
Cordova platforms, android 4.1.1, ios 3.9.2. Both the iOS and Android<br>
versions are compiled at the same time. We are running cordova 5.3.3<br>
with<br>
Ionic 1.7.8 (?).</p>

<p dir="auto">1.</p>

<p dir="auto">We make sure that both apps are NOT started up on each device. We<br>
also<br>
check they are NOT in the background.<br>
2.</p>

<p dir="auto">We send the same simple notification to each device. This<br>
notification<br>
config is as below, we have anonymised the variants and alias in this<br>
JSON<br>
structure, though we can report that the UPS server sends the data<br>
correctly. We use the additionalData flag to provide the information<br>
necessary to decide which notification has been clicked in the<br>
notification<br>
drawer.</p>

<p dir="auto">'variants' =&gt; [‘variant1’,’variant2’ ],<br>
'message' =&gt; {<br>
'additionalData' =&gt; { 'Disruption_Id' =&gt; '107546',<br>
                   'EpochTime' =&gt; '1450125268'<br>
                  },<br>
'alert' =&gt; 'Cannon Street (EC4N) (All Directions) at the junction of<br>
King William Street - To facilitate a heavy lift in Cannon Street,<br>
Cannon Street will be closed. Traffic is slow moving on diversion.'<br>
},<br>
'alias' =&gt; [ ‘alias1’ ],<br>
'ttl' =&gt; 600<br>
};</p>

<p dir="auto">1.</p>

<p dir="auto">Both devices show the message, the Android device stacks the message<br>
and the iOS device display an individual message. This looks correct.<br>
2.</p>

<p dir="auto">Clicking on the Android stacked message starts up the app and the<br>
Javascript notification handler we have defined,<br>
HandleAeroGearNotification<br>
is called</p>

<p dir="auto">HandleAeroGearNotification: event =&gt; {"alert":"Cannon Street (EC4N)<br>
(All Directions) at the junction of King William Street - To<br>
facilitate a heavy lift in Cannon Street, Cannon Street will be<br>
closed. Traffic is slow moving on</p>
</blockquote>
</blockquote>

<p dir="auto">diversion.","coldstart":true,"foreground":true,"payload":{"alert":"Cannon</p>

<blockquote>
<blockquote>
<p dir="auto">Street (EC4N) (All Directions) at the junction of King William Street<br>
- To facilitate a heavy lift in Cannon Street, Cannon Street will be<br>
closed. Traffic is slow moving on diversion.","badge":"-1"}}</p>

<p dir="auto">1.</p>

<p dir="auto">Clicking on the notification in the notification drawer on the iOS<br>
device also starts our app up correctly but the notification handler,<br>
HandleAeroGearNotification(), is NOT called. The app starts up as<br>
normal as<br>
if the notification had not been clicked. We would expect the<br>
notification<br>
handler to be called in iOS as it is in Android.<br>
2.</p>

<p dir="auto">All notifications are cleared on both Android and iOS correctly when<br>
the app is started up.<br>
3.</p>

<p dir="auto">We define HandleAeroGearNotification as</p>

<p dir="auto">var aeroGearPushConfig = {<br>
  pushServerURL: "<a href="https://push-jambuster.rhcloud.com/ag-push/">https://push-jambuster.rhcloud.com/ag-push/</a>",<br>
  ios: {<br>
      variantID: “variantid_obscured”,<br>
       variantSecret: “variant_secret_obscured”<br>
      } ,<br>
   android: {<br>
          senderID: "variantid_obscured" ,<br>
      variantID: "variant_id_obscured" ,<br>
      variantSecret: "variant_secret_obscured"<br>
   } ,<br>
  sendMetricInfo: true,<br>
  alias: alias1<br>
};</p>

<p dir="auto">function HandleAeroGearNotification(event) {<br>
  console.log(“HandleAeroGearNotification: event =&gt; “ +<br>
JSON.stringify(event));</p>

<p dir="auto">// Stuff cut for clarity<br>
}</p>

<p dir="auto">// Slightly simplified registration event.<br>
push.register(HandleAeroGearNotification , function () {<br>
  console.log(“Success”):<br>
} , function () {<br>
  console.log(“Failure”);<br>
} , aeroGearPushConfig);</p>

<p dir="auto">We cannot see any reference to this issue in the JIRA database and<br>
wondered if it is a bug or not.</p>

<p dir="auto">If its a bug we are happy to raise it accordingly.</p>

<p dir="auto">Please let us know,</p>

<p dir="auto">Thanks</p>

<p dir="auto">Rob</p>

<hr>

<p dir="auto">Aerogear-users mailing list<br>
<a href="mailto:Aerogear-users@lists.jboss.org">Aerogear-users@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/aerogear-users">https://lists.jboss.org/mailman/listinfo/aerogear-users</a></p>
</blockquote>

<p dir="auto">--<br>
Cheers,<br>
 Erik Jan</p>

<hr>

<p dir="auto">Aerogear-users mailing list<br>
<a href="mailto:Aerogear-users@lists.jboss.org">Aerogear-users@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/aerogear-users">https://lists.jboss.org/mailman/listinfo/aerogear-users</a></p>
</blockquote>

<hr>

<p dir="auto">Aerogear-users mailing list<br>
<a href="mailto:Aerogear-users@lists.jboss.org">Aerogear-users@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/aerogear-users">https://lists.jboss.org/mailman/listinfo/aerogear-users</a></p>
</blockquote>

<hr>

<p dir="auto">Aerogear-users mailing list<br>
<a href="mailto:Aerogear-users@lists.jboss.org">Aerogear-users@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/aerogear-users">https://lists.jboss.org/mailman/listinfo/aerogear-users</a></p>
</blockquote>

</div>