On Jul 13, 2013, at 9:54, Matthias Wessendorf <matzew(a)apache.org> wrote:
Hi,
today I played with Apache Cordova, the PushPlugin, AeroGear.js (Notifier branch) and our
UnifiedPush Server.
Setup
These steps from the iOS Tutorial are required for an iOS-Cordova app as well:
Apple App ID and SSL Certificate for APNs
Apple Provisioning Profile
The AeroGear Unified Push Server
TL;DR: You need a new App-ID, a SSL-cert and a provisioning profile (for that APP-ID). On
the UnifiedPush Server, you need a PushApplication and an iOS Variant :-)
Cordova stuff
PushPlugin
Get the Cordova PushPlugin (there is a downloadable tarball) and extract the tarball to
some location.
Cordova App
Creating a Corodva app is simple:
cordova create FolderOfTheApp com.my.id.AppName AppName
cd FolderOfTheApp
cordova platform add ios
cordova plugin add folder_of_PushPlugin-1.3.3
HINT: Make sure your Apple ID matches the above "com.my.id.AppName" value...
Install aerogear.js (checkout (and build) the Notifier branch) and jquery.min.js -> I
basically copied the files into the "www" folder;
afterwards build the project:
cordova build
Now open the generated Xcode project, and start "hacking".
In the index.html I just linked the "required" JavaScript sources.
The index.JS contains some JavaScript, that takes care of:
Trigger the PushPlugin/UnifiedPush setup
Setup of the Cordova PushPlugin
The received (APNs) device-token is "submitted" to the UnifiedPush Server
(using AeroGear.js)
Handling iOS/APNs notifications
This all works well. However, I had to do some "hack" to be able to use the
registerWithPushServer()function:
var tokenContainer = {};
tokenContainer.channelID = deviceToken;
That is because the JS does expect the token/channelID as the above
".channelID". I am sure that can be made a bit more flexible.
Yep, can you file a JIRA on AGJS under the unifiedpush component and I will fix
that.
Also, the "metadata" currently is only able to specify the
following values:
deviceToken
alias
category
I am sure we can make it more generic here as well.
So again, without too much work, I got it
working:https://twitter.com/mwessendorf/status/356027736780836865
However I had some issues.
PushPlugin:
I had to copy the ObjC bits by hand. See here.
AeroGear.js
Uncaught TypeError: Cannot read property 'simplePushServerURL' of undefined
aerogear.js:955 (anonymous function) aerogear.js:955 (anonymous function)
at least in the browser.... However, I could remove it, on the Corodva app .... and the
app still seams to work.... So, not sure :-)
This should be fixed. I must not have
pushed my latest changes.
looks like the Notifier branch requires sockjs Uncaught
ReferenceError: SockJS is not defined aerogear.js:942 (anonymous function)
But again in the browser...., I could remove that "import" in my Cordova app.
So, not sure here too :-)
As Luke said, this is fixed in master and I just need to
merge into Notifier.
The (ugly) code is posted on my GH account.
I guess we could convert this into a more "official" guide/tutorial at some
point. This email should give some hints on getting started.
Another question:
Perhaps we want to fork the PushPlugin and stick our AeroGear.js bits in there? So that
all is ready ? I am not sure, just some idea.
Feedback welcome!
--
Matthias Wessendorf
blog:
http://matthiaswessendorf.wordpress.com/
sessions:
http://www.slideshare.net/mwessendorf
twitter:
http://twitter.com/mwessendorf
_______________________________________________
aerogear-dev mailing list
aerogear-dev(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/aerogear-dev