Firebase中的标记始终为null

时间:2016-09-30 06:15:43

标签: android firebase android-manifest firebase-cloud-messaging

我正在尝试使用以下简单代码获取令牌以在我的应用中使用云消息传递:

'Change Data source to currentley selected cells
If TypeName(Selection) <> "Range" Then Exit Sub '<--| exit if selection is not a 'Range (i.e. it might be a 'Chart')
Set rng = Selection '<--| now you can do that safely

'Add a chart onto the active sheet and select the chart
ActiveSheet.Shapes.AddChart.Select

With ActiveChart
    'Chart type is Clustered Column chart
    .ChartType = xlColumnClustered

    'Add user data to create a chart title
    .HasTitle = True
    .ChartTitle.Text = Application.InputBox("Please enter a chart title", "Chart Title Name", Type:=2)
End With

我试图在StackOverflow上到处寻找那些遇到同样问题并且找不到任何解决方案的人...当然,我已经按照官方的Google文档关于安装(多次),我的令牌是从未生成过。

知道为什么我无法获得有效的令牌吗?

谢谢!

2 个答案:

答案 0 :(得分:11)

好吧,我自己设法找到了解决方案,我花了很多时间来弄明白这一点,所以我觉得分享解决方案是个好主意,万一有人得到同样的问题。

问题来自于我在String token = FirebaseInstanceId.getInstance().getToken(); AndroidManifest.xml标记内)使用此行的事实:

<application>

必须通过以下方式删除或更改此内容:

tools:node="replace"

否则,Firebase将无法在您的应用中使用。至少,这是我修复我的应用程序以最终获得有效令牌的方式!

希望这会帮助别人!

答案 1 :(得分:4)

确保你的Firebase&#34; MyFirebaseInstanceIDService.java &#34;文件直接位于包名称树&#34; com.company&#34;

不要将它们放在单独的子包中,例如&#34; com.company.services&#34;。 这是因为您的google-services.json将直接在&#34; com.company&#34;下查找文件。 。目录

在元标记下方的清单应用标记中添加以下内容(如果有)

   <service
        android:name=".MyFirebaseInstanceIDService">
        <intent-filter>
            <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
        </intent-filter>
    </service>

您将在 public void onTokenRefresh()方法

上获取您的TOKEN


PS:确保您的设备上的日期正确无误,并从项目控制台获取最新的google-services.json