<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">Hi,<div><br></div><div>With the upcoming windows support and simple push change (making simple push more like 'normal') the number of ‘special’ keys in our message is increasing. Right now we are mixing our ‘special’ keys with those the user can add, but we keep simple push out of it:</div><div><br></div><div><pre style="box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 14px; margin-top: 0px; margin-bottom: 0px; padding: 16px; overflow: auto; line-height: 1.45; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; word-wrap: normal; word-break: normal; color: rgb(51, 51, 51); background-color: rgb(247, 247, 247);"><span class="p" style="box-sizing: border-box;">{</span>
       <span class="nt" style="box-sizing: border-box; color: navy;">"variants"</span> <span class="p" style="box-sizing: border-box;">:</span> <span class="p" style="box-sizing: border-box;">[</span><span class="s2" style="box-sizing: border-box; color: rgb(221, 17, 68);">"c3f0a94f-48de-4b77-a08e-68114460857e"</span><span class="p" style="box-sizing: border-box;">,</span> <span class="s2" style="box-sizing: border-box; color: rgb(221, 17, 68);">"444939cd-ae63-4ce1-96a4-de74b77e3737"</span> <span class="err" style="box-sizing: border-box; color: rgb(166, 23, 23); background-color: rgb(227, 210, 210);">....</span><span class="p" style="box-sizing: border-box;">],</span>
       <span class="nt" style="box-sizing: border-box; color: navy;">"alias"</span> <span class="p" style="box-sizing: border-box;">:</span> <span class="p" style="box-sizing: border-box;">[</span><span class="s2" style="box-sizing: border-box; color: rgb(221, 17, 68);">"<a href="mailto:user@account.com">user@account.com</a>"</span><span class="p" style="box-sizing: border-box;">,</span> <span class="s2" style="box-sizing: border-box; color: rgb(221, 17, 68);">"<a href="mailto:someone@aerogear.org">someone@aerogear.org</a>"</span><span class="p" style="box-sizing: border-box;">,</span> <span class="err" style="box-sizing: border-box; color: rgb(166, 23, 23); background-color: rgb(227, 210, 210);">....</span><span class="p" style="box-sizing: border-box;">],</span>
       <span class="nt" style="box-sizing: border-box; color: navy;">"categories"</span> <span class="p" style="box-sizing: border-box;">:</span> <span class="p" style="box-sizing: border-box;">[</span><span class="s2" style="box-sizing: border-box; color: rgb(221, 17, 68);">"someCategory"</span><span class="p" style="box-sizing: border-box;">,</span> <span class="s2" style="box-sizing: border-box; color: rgb(221, 17, 68);">"otherCategory"</span><span class="p" style="box-sizing: border-box;">],</span>
       <span class="nt" style="box-sizing: border-box; color: navy;">"deviceType"</span> <span class="p" style="box-sizing: border-box;">:</span> <span class="p" style="box-sizing: border-box;">[</span><span class="s2" style="box-sizing: border-box; color: rgb(221, 17, 68);">"iPad"</span><span class="p" style="box-sizing: border-box;">,</span> <span class="s2" style="box-sizing: border-box; color: rgb(221, 17, 68);">"AndroidTablet"</span><span class="p" style="box-sizing: border-box;">],</span>
       <span class="nt" style="box-sizing: border-box; color: navy;">"ttl"</span> <span class="p" style="box-sizing: border-box;">:</span> <span class="mi" style="box-sizing: border-box; color: rgb(0, 153, 153);">3600</span><span class="p" style="box-sizing: border-box;">,</span>
       <span class="nt" style="box-sizing: border-box; color: navy;">"message"</span><span class="p" style="box-sizing: border-box;">:</span> <span class="p" style="box-sizing: border-box;">{</span>
         <span class="nt" style="box-sizing: border-box; color: navy;">"alert"</span><span class="p" style="box-sizing: border-box;">:</span><span class="s2" style="box-sizing: border-box; color: rgb(221, 17, 68);">"HELLO!"</span><span class="p" style="box-sizing: border-box;">,</span>
         <span class="nt" style="box-sizing: border-box; color: navy;">"sound"</span><span class="p" style="box-sizing: border-box;">:</span><span class="s2" style="box-sizing: border-box; color: rgb(221, 17, 68);">"default"</span><span class="p" style="box-sizing: border-box;">,</span>
         <span class="nt" style="box-sizing: border-box; color: navy;">"badge"</span><span class="p" style="box-sizing: border-box;">:</span><span class="mi" style="box-sizing: border-box; color: rgb(0, 153, 153);">7</span><span class="p" style="box-sizing: border-box;">,</span>
         <span class="nt" style="box-sizing: border-box; color: navy;">"content-available"</span> <span class="p" style="box-sizing: border-box;">:</span> <span class="kc" style="box-sizing: border-box; font-weight: bold;">true</span><span class="p" style="box-sizing: border-box;">,</span>
         <span class="nt" style="box-sizing: border-box; color: navy;">"action-category"</span> <span class="p" style="box-sizing: border-box;">:</span> <span class="s2" style="box-sizing: border-box; color: rgb(221, 17, 68);">"some_category"</span><span class="p" style="box-sizing: border-box;">,</span>
         
         <span class="nt" style="box-sizing: border-box; color: navy;">"someKey"</span><span class="p" style="box-sizing: border-box;">:</span><span class="s2" style="box-sizing: border-box; color: rgb(221, 17, 68);">"some value"</span><span class="p" style="box-sizing: border-box;">,</span>
         <span class="nt" style="box-sizing: border-box; color: navy;">"anotherCustomKey"</span><span class="p" style="box-sizing: border-box;">:</span><span class="s2" style="box-sizing: border-box; color: rgb(221, 17, 68);">"some other value"</span>
       <span class="p" style="box-sizing: border-box;">},</span></pre><pre style="box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 14px; margin-top: 0px; margin-bottom: 0px; padding: 16px; overflow: auto; line-height: 1.45; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; word-wrap: normal; word-break: normal; color: rgb(51, 51, 51); background-color: rgb(247, 247, 247);"><span class="nt" style="line-height: 1.45; box-sizing: border-box; color: navy;">"simple-push"</span><span class="p" style="line-height: 1.45; box-sizing: border-box;">:</span><span style="line-height: 1.45;"> </span><span class="s2" style="line-height: 1.45; box-sizing: border-box; color: rgb(221, 17, 68);">"version=123”</span></pre><pre style="box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 14px; margin-top: 0px; margin-bottom: 0px; padding: 16px; overflow: auto; line-height: 1.45; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; word-wrap: normal; word-break: normal; color: rgb(51, 51, 51); background-color: rgb(247, 247, 247);"><span style="line-height: 1.45;">}</span></pre><div><br></div></div><div><br></div><div>As simple push is going to be more like ‘normal’ push why not move the simple-push into the message as well. As for the windows support there are a lot more types of messages you can send. The most normal form is called ‘toast’, but there are other ones for when you app is pinned to the home screen. Then one can send message that contain pictures. To support all of this we need something like this:&nbsp;<a href="https://gist.github.com/edewit/305d76c31960aa6254a9">https://gist.github.com/edewit/305d76c31960aa6254a9</a></div><div><br></div><div>Adding all these ‘special’ keys will make it easier to get into a conflict with the users own data, so I propose we put the user data into a separate data object, like so:</div><div><br></div><div><pre style="box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 14px; margin-top: 0px; margin-bottom: 0px; padding: 16px; overflow: auto; line-height: 1.45; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; word-wrap: normal; word-break: normal; color: rgb(51, 51, 51); background-color: rgb(247, 247, 247);"><span class="p" style="box-sizing: border-box;">{</span>
       <span class="nt" style="box-sizing: border-box; color: navy;">"variants"</span> <span class="p" style="box-sizing: border-box;">:</span> <span class="p" style="box-sizing: border-box;">[</span><span class="s2" style="box-sizing: border-box; color: rgb(221, 17, 68);">"c3f0a94f-48de-4b77-a08e-68114460857e"</span><span class="p" style="box-sizing: border-box;">,</span> <span class="s2" style="box-sizing: border-box; color: rgb(221, 17, 68);">"444939cd-ae63-4ce1-96a4-de74b77e3737"</span> <span class="err" style="box-sizing: border-box; color: rgb(166, 23, 23); background-color: rgb(227, 210, 210);">....</span><span class="p" style="box-sizing: border-box;">],</span>
       <span class="nt" style="box-sizing: border-box; color: navy;">"alias"</span> <span class="p" style="box-sizing: border-box;">:</span> <span class="p" style="box-sizing: border-box;">[</span><span class="s2" style="box-sizing: border-box; color: rgb(221, 17, 68);">"<a href="mailto:user@account.com">user@account.com</a>"</span><span class="p" style="box-sizing: border-box;">,</span> <span class="s2" style="box-sizing: border-box; color: rgb(221, 17, 68);">"<a href="mailto:someone@aerogear.org">someone@aerogear.org</a>"</span><span class="p" style="box-sizing: border-box;">,</span> <span class="err" style="box-sizing: border-box; color: rgb(166, 23, 23); background-color: rgb(227, 210, 210);">....</span><span class="p" style="box-sizing: border-box;">],</span>
       <span class="nt" style="box-sizing: border-box; color: navy;">"categories"</span> <span class="p" style="box-sizing: border-box;">:</span> <span class="p" style="box-sizing: border-box;">[</span><span class="s2" style="box-sizing: border-box; color: rgb(221, 17, 68);">"someCategory"</span><span class="p" style="box-sizing: border-box;">,</span> <span class="s2" style="box-sizing: border-box; color: rgb(221, 17, 68);">"otherCategory"</span><span class="p" style="box-sizing: border-box;">],</span>
       <span class="nt" style="box-sizing: border-box; color: navy;">"deviceType"</span> <span class="p" style="box-sizing: border-box;">:</span> <span class="p" style="box-sizing: border-box;">[</span><span class="s2" style="box-sizing: border-box; color: rgb(221, 17, 68);">"iPad"</span><span class="p" style="box-sizing: border-box;">,</span> <span class="s2" style="box-sizing: border-box; color: rgb(221, 17, 68);">"AndroidTablet"</span><span class="p" style="box-sizing: border-box;">],</span>
       <span class="nt" style="box-sizing: border-box; color: navy;">"ttl"</span> <span class="p" style="box-sizing: border-box;">:</span> <span class="mi" style="box-sizing: border-box; color: rgb(0, 153, 153);">3600</span><span class="p" style="box-sizing: border-box;">,</span>
       <span class="nt" style="box-sizing: border-box; color: navy;">"message"</span><span class="p" style="box-sizing: border-box;">:</span> <span class="p" style="box-sizing: border-box;">{</span>
         <span class="nt" style="box-sizing: border-box; color: navy;">"alert"</span><span class="p" style="box-sizing: border-box;">:</span><span class="s2" style="box-sizing: border-box; color: rgb(221, 17, 68);">"HELLO!"</span><span class="p" style="box-sizing: border-box;">,</span>
         <span class="nt" style="box-sizing: border-box; color: navy;">"sound"</span><span class="p" style="box-sizing: border-box;">:</span><span class="s2" style="box-sizing: border-box; color: rgb(221, 17, 68);">"default"</span><span class="p" style="box-sizing: border-box;">,</span>
         <span class="nt" style="box-sizing: border-box; color: navy;">"badge"</span><span class="p" style="box-sizing: border-box;">:</span><span class="mi" style="box-sizing: border-box; color: rgb(0, 153, 153);">7</span><span class="p" style="box-sizing: border-box;">,</span>
         <span class="nt" style="box-sizing: border-box; color: navy;">"content-available"</span> <span class="p" style="box-sizing: border-box;">:</span> <span class="kc" style="box-sizing: border-box; font-weight: bold;">true</span><span class="p" style="box-sizing: border-box;">,</span>
         <span class="nt" style="box-sizing: border-box; color: navy;">"action-category"</span> <span class="p" style="box-sizing: border-box;">:</span> <span class="s2" style="box-sizing: border-box; color: rgb(221, 17, 68);">"some_category"</span><span class="p" style="box-sizing: border-box;">,</span>
<b>         <span class="nt" style="box-sizing: border-box; color: navy;">"simple-push"</span><span class="p" style="box-sizing: border-box;">:</span> <span class="s2" style="box-sizing: border-box; color: rgb(221, 17, 68);">"version=123"</span><span class="p" style="box-sizing: border-box;">,</span></b>
         <span class="nt" style="box-sizing: border-box; color: navy;"><b>"data"</b></span> <span class="p" style="box-sizing: border-box;">:</span> <span class="p" style="box-sizing: border-box;">{</span>
             <span class="nt" style="box-sizing: border-box; color: navy;">"someKey"</span><span class="p" style="box-sizing: border-box;">:</span><span class="s2" style="box-sizing: border-box; color: rgb(221, 17, 68);">"some value"</span><span class="p" style="box-sizing: border-box;">,</span>
             <span class="nt" style="box-sizing: border-box; color: navy;">"anotherCustomKey"</span><span class="p" style="box-sizing: border-box;">:</span><span class="s2" style="box-sizing: border-box; color: rgb(221, 17, 68);">"some other value"</span>
            <span class="p" style="box-sizing: border-box;">}</span>
       <span class="p" style="box-sizing: border-box;">}</span>
<span class="p" style="box-sizing: border-box;">}</span></pre><div><br></div></div><div><br></div><div>WDYT?</div><div><br></div><div>Cheers,</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>Erik Jan</div></body></html>