title: onTokenRefresh() is never called on first app install
body: <p>I know there are a few other posts similar to mine but I've gone through the list of solutions with no results. My Android app has a very simple firebase implementation that is supposed to retrieve the token on startup and pass it via callback to the main activity for use later. I've heard that the token is supposed to be generated on startup, but during the first app install, I never receive it and my app crashes. If I install my app again (without removing it first), everything works normally and I get my token. </p>
  
  <p>I've tried:</p>
  
  <ul>
  <li>Updating and consolidating my firebase dependencies the app's build.gradle file </li>
  <li>Confirming that my Manifest is using the correct firebase services / internet permissions</li>
  <li>Deleting my instance id with <em>FirebaseInstanceId.getInstance().deleteInstanceId()</em> before manually calling <em>getToken()</em></li>
  <li>Testing on multiple devices</li>
  </ul>
  
  <p>Looking at my logcat during first install, I get these two firebase errors:</p>
  
  <pre><code>E/FA: Discarding data. Failed to send app launch
  E/FA: Failed to get app instance id
  </code></pre>
  
  <p>My InstanceIdService:</p>
  
  <pre><code>public class InstanceIDService extends FirebaseInstanceIdService {
  
      TokenCallback callback;
  
      public void initInstanceIDService(TokenCallback cb) {
          this.callback = cb;
      }
  
      @Override
      public void onTokenRefresh() {
          super.onTokenRefresh();
  
          // Get updated token.
          String refreshedToken = FirebaseInstanceId.getInstance().getToken();
  
          if (refreshedToken != null) {
              callback.onTokenReceived(refreshedToken);
          }
          //pass token to manager for use during authentication
          Log.d("Firebase", "Refreshed token: " + refreshedToken);
      }
  
      public interface TokenCallback {
  
          void onTokenReceived(String token);
      }
  }
  </code></pre>
  
  <p>My Manifest: </p>
  
  <pre><code>        &lt;service
              android:name="com.projectname.network.MessagingService"&gt;
              &lt;intent-filter&gt;
                  &lt;action android:name="com.google.firebase.MESSAGING_EVENT" /&gt;
              &lt;/intent-filter&gt;
          &lt;/service&gt;
          &lt;service
              android:name="com.projectname.network.InstanceIDService"&gt;
              &lt;intent-filter&gt;
                  &lt;action android:name="com.google.firebase.INSTANCE_ID_EVENT" /&gt;
              &lt;/intent-filter&gt;
          &lt;/service&gt;
  </code></pre>
  
  <p>My Gradle dependencies:</p>
  
  <pre><code>dependencies {
      compile fileTree(dir: 'libs', include: ['*.jar'])
  
      compile 'com.google.firebase:firebase-core:11.0.4'
      compile 'com.google.firebase:firebase-messaging:11.0.4'
      compile 'com.android.support:appcompat-v7:+'
  }
  apply plugin: 'com.google.gms.google-services'
  </code></pre>
  
  <p>I'm testing on physical devices and all return the same behavior.</p>
  
  <p>If anyone has had experience with this problem, any suggestions or solutions would be greatly appreciated. </p>