<div dir="ltr">Good Morning all ! <div><br></div><div>As you might know, we are currently adding Amazon Device Messaging support to the UnifiedPush server. </div><div>The server side has been PRed and it&#39;s now time to work on the client SDK.</div><div>As you probably know, the amazon devices :  the Kindle Fire (2nd and third generation), Fire Phone and FireTV are running FireOS which is basically a fork of Android OS. And since we have an Android Push SDK I start looking if we could reuse it.<br></div><div><br></div><div>First good news, is that since AGDroid 2.0, things has been nicely isolated and is open for extension. But there is still some refactoring to do, the &quot;UPS Registration&quot; flow/logic is still in the &quot;gcm&quot; package[1]. That logic should be moved one package level higher in a new Abstract class. </div><div>In the end we will have a &quot;gcm&quot; package and a &quot;adm&quot; package (or project, see later in my questions)</div><div><br></div><div>This way the ADM logic would be able to reuse that registration code. I started to play a bit with this refactoring here[2], disclaimer here, I&#39;m not even sure that this code compiles, is just to give an idea. </div><div><br></div><div>So before I go further,  some questions (mainly for our Android Gods ;)  ) : </div><div><br></div><div>- Is this a good idea (reusing your SDK) ? I think yes, even if there is some time and effort needed for refactoring to make it completly generic.</div><div><br></div><div>- How do we build / package / deliver ? We probably want 2 distinct JAR/aar. We could use profile in Maven to only package one feature but that sounds a bit &quot;messy&quot;.</div><div>What about having sub-projects, this way we would have aerogear-android-push and then : aerogear-android-push-gcm and aerogear-push-gcm.</div><div><br></div><div>- The registration flow for ADM[3] (so device &lt;-&gt; Amazon&#39;s server) is a bit different thant the GCM one</div><div>, it&#39;s the same interface that receive the registration event and the push notification events. We have to check how this fit with the current architecture of android-push.</div><div><br></div><div>Other challenge will be shipping ADM jar, since this one is on Maven and must be downloaded manually but that is for later ;)</div><div><br></div><div>Sebi</div><div><br></div><div><br></div><div>[1]<a href="https://github.com/aerogear/aerogear-android-push/blob/master/aerogear-android-push/src/main/java/org/jboss/aerogear/android/unifiedpush/gcm/AeroGearGCMPushRegistrar.java">https://github.com/aerogear/aerogear-android-push/blob/master/aerogear-android-push/src/main/java/org/jboss/aerogear/android/unifiedpush/gcm/AeroGearGCMPushRegistrar.java</a></div><div>[2] <a href="https://github.com/sebastienblanc/aerogear-android-push/tree/refactoring">https://github.com/sebastienblanc/aerogear-android-push/tree/refactoring</a></div><div>[3] <a href="https://developer.amazon.com/public/apis/engage/device-messaging/tech-docs/04-integrating-your-app-with-adm">https://developer.amazon.com/public/apis/engage/device-messaging/tech-docs/04-integrating-your-app-with-adm</a></div></div>