<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('<<< Cordova ready >>>');
/* 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 <<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>
$ > cordova create push-test <my bundle id><br>
$ > cordova platform add ios<br>
$ > 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 =></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 =></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 => " + 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 => true</p>
<p dir="auto">Hope this helps</p>
<p dir="auto">On Mon, Dec 14, 2015 at 10:20 PM, Rob Willett <<br>
<a href="mailto:rob.aerogear@robertwillett.com">rob.aerogear@robertwillett.com</a>> 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' => [‘variant1’,’variant2’ ],<br>
'message' => {<br>
'additionalData' => { 'Disruption_Id' => '107546',<br>
'EpochTime' => '1450125268'<br>
},<br>
'alert' => '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' => [ ‘alias1’ ],<br>
'ttl' => 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 => {"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 => “ +<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>