<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Mar 15, 2013 at 8:10 AM, Matthias Wessendorf <span dir="ltr"><<a href="mailto:matzew@apache.org" target="_blank">matzew@apache.org</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Sebi,<div><br></div><div>I don't like that the Unified Push manager is the central entry point for:</div><div>-query/finding</div>
<div>-sending</div><div>-registration</div></blockquote><div><br></div><div style>+1 - The "native" push service should be simple and separate from some of these functions.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><br></div><div>However, I like the concept (name) of registration - let me rename my ```UnifiedPushManager```. It will be called ```PushApplicationRegistry```;</div></blockquote><div><br></div><div>+1</div><div> </div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><br></div><div>I like the concept of the```ApplicationQuery```, but that's IMO a layer on top the pure send. At the end of the day, for the plain message delivery, it does not matter why a token/device has been chosen. It only matters that it was chosen, and it is about to receive a message.</div>
</blockquote><div><br></div><div>+1</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><br></div><div>The matching APIs - for now - are just pure model abstractions. However, having something like the `ApplicationQuery` in mind is not bad - thanks for the feedback</div><div class="HOEnZb"><div class="h5">
<div><br><br><div class="gmail_quote">
On Fri, Mar 15, 2013 at 11:56 AM, Matthias Wessendorf <span dir="ltr"><<a href="mailto:matzew@apache.org" target="_blank">matzew@apache.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br><br><div class="gmail_quote"><div><div>On Fri, Mar 15, 2013 at 11:27 AM, Sebastien Blanc <span dir="ltr"><<a href="mailto:scm.blanc@gmail.com" target="_blank">scm.blanc@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br><br><div class="gmail_quote"><div>On Fri, Mar 15, 2013 at 10:58 AM, Matthias Wessendorf <span dir="ltr"><<a href="mailto:matzew@apache.org" target="_blank">matzew@apache.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br><br><div class="gmail_quote"><div>On Fri, Mar 15, 2013 at 10:48 AM, Sebastien Blanc <span dir="ltr"><<a href="mailto:scm.blanc@gmail.com" target="_blank">scm.blanc@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Great Job,<div>see my comments inline.<br><br><div class="gmail_quote"><div>On Fri, Mar 15, 2013 at 10:07 AM, Matthias Wessendorf <span dir="ltr"><<a href="mailto:matzew@apache.org" target="_blank">matzew@apache.org</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><p style="margin:0px 0px 15px;font-family:Helvetica,arial,freesans,clean,sans-serif;font-size:13.63636302947998px;line-height:20px">
As discussed on the earlier theard, we have some raw APIs... Below a little summary:</p><p style="margin:15px 0px;font-family:Helvetica,arial,freesans,clean,sans-serif;font-size:13.63636302947998px;line-height:20px">
We have a <code style="font-size:12px;line-height:normal;font-family:Consolas,'Liberation Mono',Courier,monospace;margin:0px 2px;padding:0px 5px;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;white-space:nowrap">UnifiedPushManager(.java)</code> defined, which is basically a registry for "push enabled" apps (<code style="font-size:12px;line-height:normal;font-family:Consolas,'Liberation Mono',Courier,monospace;margin:0px 2px;padding:0px 5px;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;white-space:nowrap">PushApplication.java</code>). Such a <code style="font-size:12px;line-height:normal;font-family:Consolas,'Liberation Mono',Courier,monospace;margin:0px 2px;padding:0px 5px;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;white-space:nowrap">PushApplication</code> is a logical construct on the backend which is allowed/enabled to send notifications to mobile clients. One example could be the "Twitter Backend" (e.g. for push notification on direct messages).</p>
</blockquote></div><div>As you said the manager is here more a registry than a manager in the current state, maybe we should have a <b>PushApplicationRegistry</b> interface which has as only responsibility to hold the register state, </div>
</div></div></blockquote><div><br></div></div><div>Can you gist ?</div></div></blockquote><div><br></div></div><div>Take a look at my fork <a href="https://github.com/sebastienblanc/ag-unified-push-api/tree/registry" target="_blank">https://github.com/sebastienblanc/ag-unified-push-api/tree/registry</a> ;) </div>
<div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="gmail_quote"><div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><div class="gmail_quote">
<div>the implementation of the registry will connect to the chosen persistence unit (JPA/Mongo/Oracle ...). </div></div></div></blockquote><div><br></div></div><div>Not sure I really want to that - now :) I am (for first iteration) fine to have something running, instead of being that flexible and be able to go with any existing "data source" :-)</div>
</div></blockquote><div><br></div></div><div>Well, for sure, for the first iteration we will provide a default implementation. </div><div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="gmail_quote"><div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="gmail_quote"><div>This way we could have a concrete implementation of the <b>UnifiedPushManager</b> than can be used by different backend/customers (think DRY) , they just have to inject the needed <b>PushApplicationRegistry</b> implementation. </div>
</div></div></blockquote><div><br></div></div><div>Not sure what exactly you mean - perhaps a gist / pseudo code is helpful here too ?</div></div></blockquote><div><br></div></div><div>Again, my fork should help you understanding <a href="https://github.com/sebastienblanc/ag-unified-push-api/tree/registry" target="_blank">https://github.com/sebastienblanc/ag-unified-push-api/tree/registry</a> but basically, it is the same as your code except I apply the delegate pattern. </div>
<div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="gmail_quote"><div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><div class="gmail_quote"><div>
<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><p style="margin:15px 0px;font-family:Helvetica,arial,freesans,clean,sans-serif;font-size:13.63636302947998px;line-height:20px">
Now each of the <code style="font-size:12px;line-height:normal;font-family:Consolas,'Liberation Mono',Courier,monospace;margin:0px 2px;padding:0px 5px;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;white-space:nowrap">PushApplication</code> can have a few mobile applications, that receive those push messages (e.g. the offical Twitter iOS client and the offical Twitter Android client). These "mobile apps" are represented - on the server - with the <code style="font-size:12px;line-height:normal;font-family:Consolas,'Liberation Mono',Courier,monospace;margin:0px 2px;padding:0px 5px;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;white-space:nowrap">MobileApplication.java</code> class. Usually there is only one iOS app and one Android... <strong>BUT</strong> imagine the case of a "paid/premium app" versus a free app (e.g. something like TwitterPro-iOS and Twitter-free-iOS... <strong>NOTE</strong>: there is NOTHING like that, I just made these two apps up, to explain the concept).</p>
<p style="margin:15px 0px;font-family:Helvetica,arial,freesans,clean,sans-serif;font-size:13.63636302947998px;line-height:20px">Of course there are several installations of the iOS(and Android...) app. Each installation is represented with the<code style="font-size:12px;line-height:normal;font-family:Consolas,'Liberation Mono',Courier,monospace;margin:0px 2px;padding:0px 5px;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;white-space:nowrap">MobileApplicationInstance.java</code> class. Each installation is registered by a "device registration service": The actual app on the device submits its token/regId (and some other infos) to a HTTP endpoint....</p>
<p style="margin:15px 0px;font-family:Helvetica,arial,freesans,clean,sans-serif;font-size:13.63636302947998px;line-height:20px">Now the <code style="font-size:12px;line-height:normal;font-family:Consolas,'Liberation Mono',Courier,monospace;margin:0px 2px;padding:0px 5px;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;white-space:nowrap">UnifiedPushManager(.java)</code> is the central API to <em>register</em> PushApps and their mobile views, including (device)registration of installations (-> <code style="font-size:12px;line-height:normal;font-family:Consolas,'Liberation Mono',Courier,monospace;margin:0px 2px;padding:0px 5px;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;white-space:nowrap">MobileApplication</code> and <code style="font-size:12px;line-height:normal;font-family:Consolas,'Liberation Mono',Courier,monospace;margin:0px 2px;padding:0px 5px;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;white-space:nowrap">MobileApplicationInstance</code>).</p>
<p style="margin:15px 0px;font-family:Helvetica,arial,freesans,clean,sans-serif;font-size:13.63636302947998px;line-height:20px">Any backend app, can now use the <strong>Sender API</strong> to actually send the message to these different devices/appications, from the UnifiedPushManager, assuming they have permission :-)</p>
<p style="margin:15px 0px;font-family:Helvetica,arial,freesans,clean,sans-serif;font-size:13.63636302947998px;line-height:20px">A simple example is here (java code for registration AND sending); Note it's a Unit test.......: <a href="https://github.com/matzew/ag-unified-push-api/blob/master/src/test/java/org/jboss/aerogear/push/UnifiedPushManagerTest.java#L41-L81" style="color:rgb(65,131,196);text-decoration:none" target="_blank">https://github.com/matzew/ag-unified-push-api/blob/master/src/test/java/org/jboss/aerogear/push/UnifiedPushManagerTest.java#L41-L81</a></p>
</blockquote><div><br></div></div><div>Maybe the <b>Sender</b> interface should be an attribute of the <b>PushManager</b>, the customer can set his <b>Sender</b> impl (pushManager.setSender(...) ) and the UnifiedManager act as a facade for the "sending" actions. </div>
</div></div></blockquote><div><br></div><div><br></div></div><div>Hrm - you really think folks will write their own "Senders"? I think... if they want to add support for "Windows Mobile", they just have to extend the abstract MobileApplicationImpl and implement it's send() to talk to the Windows Push infrastrucuture</div>
</div></blockquote><div><br></div></div><div>Again, we will provide a default sender implementation. But I seee indedd issues, having a single senders for different platforms , hum, let me think about this ;) </div></div>
</blockquote><div><br></div><div><br></div></div></div><div>
<p>the Sender() is an aggregate of the different mobile Application's "send()" - it will enqueue the message for the different platforms </p><p><br></p><p>thanks for the feedback - will check ur fork</p><span><font color="#888888">
<p><br></p><p>-M</p></font></span></div><div><div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="gmail_quote"><div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="gmail_quote">
<div><br></div><div><br></div><div>PERHAPS... just using interfaces was confusing - there will be concrete classes (first impl is in the TEST project (see other thread)), but the interfaces are a highlevel view of the "domain model"</div>
<div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="gmail_quote"><div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<h2 style="margin:20px 0px 10px;padding:0px;font-size:24px;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgb(204,204,204);font-family:Helvetica,arial,freesans,clean,sans-serif"><a name="13d6df59851cdf74_13d6db1512a43b2d_13d6d976136e05f9_13d6d7cd49850b05_13d6d73b500b2020_13d6d4dfd3ec7340_so-far-so-good---but-why-this-abstraction-" href="https://gist.github.com/matzew/73d478a42c093e21a6b9#so-far-so-good---but-why-this-abstraction-" style="color:rgb(65,131,196);text-decoration:none;display:block;padding-left:30px" target="_blank"></a>So far, so good - but why this abstraction ????</h2>
<p style="margin:0px 0px 15px;font-family:Helvetica,arial,freesans,clean,sans-serif;font-size:13.63636302947998px;line-height:20px"><strong>Goal</strong>: We want that any (JBoss/AeroGear powered) mobile application, that is backed by JBoss technology, is able to easily work with push messages. For a JBoss "backend application" it should be as simple as possible, to send messages to its different mobile clients</p>
<h3 style="margin:20px 0px 10px;padding:0px;font-size:18px;font-family:Helvetica,arial,freesans,clean,sans-serif"><a name="13d6df59851cdf74_13d6db1512a43b2d_13d6d976136e05f9_13d6d7cd49850b05_13d6d73b500b2020_13d6d4dfd3ec7340_some-scenarios" href="https://gist.github.com/matzew/73d478a42c093e21a6b9#some-scenarios" style="color:rgb(65,131,196);text-decoration:none;display:block;padding-left:30px" target="_blank"></a>Some Scenarios</h3>
<ul style="margin:15px 0px;padding:0px 0px 0px 30px;font-family:Helvetica,arial,freesans,clean,sans-serif;font-size:13.63636302947998px;line-height:20px"><li>MyWarehouseInc-backend can send messages to different "customer" groups (e.g. discounts for only iOS (or only Android) users).</li>
<li>MyInsuranceCorp-backend can send important "info messages" to diffenrent variants of its mobile Applications (e.g. to the MyInsuranceCustomer-APP (regardless of the OS) AND to the app for their own agents (MyInsuranceAgent-APP))</li>
<li>MyPublishing-Company-backend sends updates to all of its apps (free and premium - regardless of the mobile OS). Advanced content is only push to the paying customers...</li><li>A company has different backends (small apps for different tasks) - and these different backends could be able to reach all of the company's mobile apps</li>
</ul><p style="margin:15px 0px;font-family:Helvetica,arial,freesans,clean,sans-serif;font-size:13.63636302947998px;line-height:20px">So... the <code style="font-size:12px;line-height:normal;font-family:Consolas,'Liberation Mono',Courier,monospace;margin:0px 2px;padding:0px 5px;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;white-space:nowrap">Sender</code> somewhat acts as a broker (for accessable apps on the 'registry' <code style="font-size:12px;line-height:normal;font-family:Consolas,'Liberation Mono',Courier,monospace;margin:0px 2px;padding:0px 5px;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;white-space:nowrap">UnifiedPushManager</code>)...</p>
</blockquote><div><br></div></div><div>Maybe we should define some kind of "Application" Collection, as smart/specific Java Collection implementation to be able to create easily groups of apps etc .. just a rough idea that needs to be cleaned up ;)</div>
</div></div></blockquote><div><br></div><div><br></div></div><div>Something like that would be neat, for more advanced queries / selection etc</div></div></blockquote><div><br></div></div><div>We could have a (very) simple query language specific for Push Apps, like hibernate, we could query by example. In my fork you will see an extremely basic Query object ... </div>
<div><div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="gmail_quote"><div><br></div><div>Thanks for the feedback!</div><span><font color="#888888"><div>
-M</div></font></span><div><div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><div class="gmail_quote"><div><div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<p style="margin:15px 0px;font-family:Helvetica,arial,freesans,clean,sans-serif;font-size:13.63636302947998px;line-height:20px"><br></p><p style="margin:15px 0px;font-family:Helvetica,arial,freesans,clean,sans-serif;font-size:13.63636302947998px;line-height:20px">
BTW... none!!!!!!! of the API names are final - happy to hear better names!!!</p><p style="margin-top:15px;margin-right:0px;margin-left:0px;font-family:Helvetica,arial,freesans,clean,sans-serif;font-size:13.63636302947998px;line-height:20px;margin-bottom:0px!important">
Please provide feedback (here and on the other thread), for missing/wrong/good items.!</p><p style="margin-top:15px;margin-right:0px;margin-left:0px;font-family:Helvetica,arial,freesans,clean,sans-serif;font-size:13.63636302947998px;line-height:20px;margin-bottom:0px!important">
<br></p><p style="margin-top:15px;margin-right:0px;margin-left:0px;font-family:Helvetica,arial,freesans,clean,sans-serif;font-size:13.63636302947998px;line-height:20px;margin-bottom:0px!important">Greetings,<br>Matthias</p>
<p style="margin-top:15px;margin-right:0px;margin-left:0px;font-family:Helvetica,arial,freesans,clean,sans-serif;font-size:13.63636302947998px;line-height:20px;margin-bottom:0px!important"><br></p><p style="margin-top:15px;margin-right:0px;margin-left:0px;font-family:Helvetica,arial,freesans,clean,sans-serif;font-size:13.63636302947998px;line-height:20px;margin-bottom:0px!important">
<br></p><br><div class="gmail_quote">On Thu, Mar 14, 2013 at 6:58 PM, Matthias Wessendorf <span dir="ltr"><<a href="mailto:matzew@apache.org" target="_blank">matzew@apache.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
here is, including device registration:<div><br></div><div><a href="https://github.com/matzew/ag-unified-push-api/blob/master/src/test/java/org/jboss/aerogear/push/UnifiedPushManagerTest.java#L41-L81" target="_blank">https://github.com/matzew/ag-unified-push-api/blob/master/src/test/java/org/jboss/aerogear/push/UnifiedPushManagerTest.java#L41-L81</a></div>
<div><br></div><div>All hammered in java... since this is a test - most of the code will be executed, when interacting with HTTP endpoints of the thing;</div><div><br></div><div>Yes, there is no JS application in the test - but we do have an abstraction interface for it:</div>
<div><a href="https://github.com/matzew/ag-unified-push-api/blob/master/src/main/java/org/jboss/aerogear/push/application/ConnectedJavaScriptApplication.java" target="_blank">https://github.com/matzew/ag-unified-push-api/blob/master/src/main/java/org/jboss/aerogear/push/application/ConnectedJavaScriptApplication.java</a></div>
<div><br></div><div>Connected? Since only "online" JS clients are receiving message - there no real "push to device" for the JS world...</div><span><font color="#888888"><div><br></div>
</font></span><div><span><font color="#888888">-Matthias</font></span><div><div><br><br><div class="gmail_quote">
On Thu, Mar 14, 2013 at 3:41 PM, Matthias Wessendorf <span dir="ltr"><<a href="mailto:matzew@apache.org" target="_blank">matzew@apache.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Pushed FIRST/TEST impl + actually test case.....<div><br></div><div><a href="https://github.com/matzew/ag-unified-push-api" target="_blank">https://github.com/matzew/ag-unified-push-api</a></div><div><br></div><div>YEs.... I have 'xxx'd out the KEY and certs :) <div>
<div><br>
<br><div class="gmail_quote">On Thu, Mar 14, 2013 at 11:04 AM, Matthias Wessendorf <span dir="ltr"><<a href="mailto:matzew@apache.org" target="_blank">matzew@apache.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
My UNIT test looks (currently) like:<div><br></div><div><a href="https://gist.github.com/matzew/3d7f9915afd8f6705da5" target="_blank">https://gist.github.com/matzew/3d7f9915afd8f6705da5</a></div><span><font color="#888888"><div>
<br></div><div><br></div><div><br></div>
<div>-M</div></font></span><div><div><div><br></div><div><br></div><div><br><br><div class="gmail_quote">On Wed, Mar 13, 2013 at 11:03 PM, Matthias Wessendorf <span dir="ltr"><<a href="mailto:matzew@apache.org" target="_blank">matzew@apache.org</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br><br><div class="gmail_quote"><div>On Wed, Mar 13, 2013 at 10:06 PM, <a href="mailto:tech4j@gmail.com" target="_blank">tech4j@gmail.com</a> <span dir="ltr"><<a href="mailto:tech4j@gmail.com" target="_blank">tech4j@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">I think this is look really good!<div><br></div><div>Here some thoughts, and/or possible additional use-cases</div>
<div><br></div><div>* How do we want to handle multiple devices for one user?</div></div></blockquote><div><br></div></div><div>Instance of 'MobileApplicationInstance'; each device has (per app) a different token;</div>
<div>What the apps do themselves, with multiple installs is something different.</div><div><br></div><div>Twitter, for instance, sends the push-messages to EVERY device - but that's app specific sync</div><div>(yes, i wish there was something like IMAP, for twitter)</div>
<div>
<div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">
<div><br></div><div>* How do we want to handle the other side of unified push (non-native)?</div><div>** Might just not be there yet, but want to make sure we're still thinking the same thing :-)</div>
<div>** Would there be an additional abstraction above this for that?</div></div></blockquote><div><br></div></div><div>some sub type of 'MobileApplication' can/will cover that "mobile web" (JS client) side:</div>
<div><a href="https://github.com/matzew/ag-unified-push-api/blob/master/src/main/java/org/jboss/aerogear/push/application/MobileApplication.java#L23" target="_blank">https://github.com/matzew/ag-unified-push-api/blob/master/src/main/java/org/jboss/aerogear/push/application/MobileApplication.java#L23</a></div>
<div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><br></div><div>* I'm assuming there is no good way for apps to notify you when they are uninstalled?</div>
<div>** As a way of removing clutter in our tables.</div></div></blockquote><div><br></div></div><div>In apple land these are invalid tokens (see <a href="https://github.com/notnoop/java-apns/blob/master/src/main/java/com/notnoop/apns/ApnsService.java#L161" target="_blank">https://github.com/notnoop/java-apns/blob/master/src/main/java/com/notnoop/apns/ApnsService.java#L161</a>)</div>
<div>So, on a scheduled base they can be remove;</div><div><br></div><div>Google has similar API (on their MulticastResult (returned by the sender))</div><div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">
<div><br></div><div>* Push filtering - I would think IDM would be very good here. </div><div>** Sending to roles, groups, etc...</div></div></blockquote><div><br></div></div><div>have different users (==roles), but not spec'd out</div>
<div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>** When we store the device and app info what sub-system are you thinking?</div>
<div>*** I know you were using mongo for some of the prototyping</div><div>*** Would be possible to abstract to the IDM?</div></div></blockquote><div><br></div></div><div>yes, it should be possible (desirable) to use IDM - but does not really matter</div>
<div><br></div><div><br></div><div>Thanks for the feedback!!!</div><span><font color="#888888"><div><br></div><div>-Matthias</div></font></span><div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr"><div class="gmail_extra"><div><div><br><div class="gmail_quote">On Wed, Mar 13, 2013 at 12:58 PM, Douglas Campos <span dir="ltr"><<a href="mailto:qmx@qmx.me" target="_blank">qmx@qmx.me</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><br>
On 13/03/2013, at 10:28, Matthias Wessendorf <<a href="mailto:matzew@apache.org" target="_blank">matzew@apache.org</a>> wrote:<br>
<br>
> ome more APIs, for some basic (initial) functionality:<br>
><br>
> <a href="https://gist.github.com/matzew/c5fbc23bc97dfead46e1" target="_blank">https://gist.github.com/matzew/c5fbc23bc97dfead46e1</a><br>
<br>
</div>I like the current form, but I'm sure we'll get asked about more OO(ish) APIs, like device.send(Message) - is this on the plans?<br>
<div><br>
> User/Dev enrollment can be addressed by (hopefully) reusing the ag-security.<br>
<br>
</div>+1<br>
<br>
-- qmx<br>
<div><div><br>
<br>
_______________________________________________<br>
aerogear-dev mailing list<br>
<a href="mailto:aerogear-dev@lists.jboss.org" target="_blank">aerogear-dev@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br>
</div></div></blockquote></div><br><br clear="all"><div><br></div></div></div><span><font color="#888888">-- <br>blog: <a href="http://in.relation.to/Bloggers/Jay" target="_blank">http://in.relation.to/Bloggers/Jay</a>
</font></span></div></div>
<br>_______________________________________________<br>
aerogear-dev mailing list<br>
<a href="mailto:aerogear-dev@lists.jboss.org" target="_blank">aerogear-dev@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br></blockquote></div></div><br><br clear="all"><div><br></div>-- <br><div>
<div>Matthias Wessendorf <br>
<br>blog: <a href="http://matthiaswessendorf.wordpress.com/" target="_blank">http://matthiaswessendorf.wordpress.com/</a><br>sessions: <a href="http://www.slideshare.net/mwessendorf" target="_blank">http://www.slideshare.net/mwessendorf</a><br>
twitter: <a href="http://twitter.com/mwessendorf" target="_blank">http://twitter.com/mwessendorf</a>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br>Matthias Wessendorf <br><br>blog: <a href="http://matthiaswessendorf.wordpress.com/" target="_blank">http://matthiaswessendorf.wordpress.com/</a><br>
sessions: <a href="http://www.slideshare.net/mwessendorf" target="_blank">http://www.slideshare.net/mwessendorf</a><br>twitter: <a href="http://twitter.com/mwessendorf" target="_blank">http://twitter.com/mwessendorf</a>
</div>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br>Matthias Wessendorf <br><br>blog: <a href="http://matthiaswessendorf.wordpress.com/" target="_blank">http://matthiaswessendorf.wordpress.com/</a><br>
sessions: <a href="http://www.slideshare.net/mwessendorf" target="_blank">http://www.slideshare.net/mwessendorf</a><br>twitter: <a href="http://twitter.com/mwessendorf" target="_blank">http://twitter.com/mwessendorf</a>
</div></div></div>
</blockquote></div><br><br clear="all"><span><font color="#888888"><div><br></div>-- <br>Matthias Wessendorf <br><br>blog: <a href="http://matthiaswessendorf.wordpress.com/" target="_blank">http://matthiaswessendorf.wordpress.com/</a><br>
sessions: <a href="http://www.slideshare.net/mwessendorf" target="_blank">http://www.slideshare.net/mwessendorf</a><br>
twitter: <a href="http://twitter.com/mwessendorf" target="_blank">http://twitter.com/mwessendorf</a>
</font></span></div></div></div><span><font color="#888888">
</font></span></blockquote></div><span><font color="#888888"><br><br clear="all"><div><br></div>-- <br>Matthias Wessendorf <br><br>blog: <a href="http://matthiaswessendorf.wordpress.com/" target="_blank">http://matthiaswessendorf.wordpress.com/</a><br>
sessions: <a href="http://www.slideshare.net/mwessendorf" target="_blank">http://www.slideshare.net/mwessendorf</a><br>
twitter: <a href="http://twitter.com/mwessendorf" target="_blank">http://twitter.com/mwessendorf</a>
</font></span><br>_______________________________________________<br>
aerogear-dev mailing list<br>
<a href="mailto:aerogear-dev@lists.jboss.org" target="_blank">aerogear-dev@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br></blockquote></div></div></div><br></div>
<br>_______________________________________________<br>
aerogear-dev mailing list<br>
<a href="mailto:aerogear-dev@lists.jboss.org" target="_blank">aerogear-dev@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br></blockquote></div></div></div><div><div><br><br clear="all">
<div><br></div>-- <br>Matthias Wessendorf <br>
<br>blog: <a href="http://matthiaswessendorf.wordpress.com/" target="_blank">http://matthiaswessendorf.wordpress.com/</a><br>sessions: <a href="http://www.slideshare.net/mwessendorf" target="_blank">http://www.slideshare.net/mwessendorf</a><br>
twitter: <a href="http://twitter.com/mwessendorf" target="_blank">http://twitter.com/mwessendorf</a>
</div></div><br>_______________________________________________<br>
aerogear-dev mailing list<br>
<a href="mailto:aerogear-dev@lists.jboss.org" target="_blank">aerogear-dev@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br></blockquote></div></div></div><br>
<br>_______________________________________________<br>
aerogear-dev mailing list<br>
<a href="mailto:aerogear-dev@lists.jboss.org" target="_blank">aerogear-dev@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br></blockquote></div></div></div><div><div><br><br clear="all">
<div><br></div>-- <br>Matthias Wessendorf <br>
<br>blog: <a href="http://matthiaswessendorf.wordpress.com/" target="_blank">http://matthiaswessendorf.wordpress.com/</a><br>sessions: <a href="http://www.slideshare.net/mwessendorf" target="_blank">http://www.slideshare.net/mwessendorf</a><br>
twitter: <a href="http://twitter.com/mwessendorf" target="_blank">http://twitter.com/mwessendorf</a>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br>Matthias Wessendorf <br><br>blog: <a href="http://matthiaswessendorf.wordpress.com/" target="_blank">http://matthiaswessendorf.wordpress.com/</a><br>
sessions: <a href="http://www.slideshare.net/mwessendorf" target="_blank">http://www.slideshare.net/mwessendorf</a><br>twitter: <a href="http://twitter.com/mwessendorf" target="_blank">http://twitter.com/mwessendorf</a>
</div>
</div></div><br>_______________________________________________<br>
aerogear-dev mailing list<br>
<a href="mailto:aerogear-dev@lists.jboss.org">aerogear-dev@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br></blockquote></div><br><br clear="all"><div><br></div>-- <br>blog: <a href="http://in.relation.to/Bloggers/Jay">http://in.relation.to/Bloggers/Jay</a>
</div></div>