ParseInstallation 保存后解析 deviceToken 为空
Posted
技术标签:
【中文标题】ParseInstallation 保存后解析 deviceToken 为空【英文标题】:Parse deviceToken empty after ParseInstallation save 【发布时间】:2015-07-07 13:52:10 【问题描述】:我正在开发一个使用 Parse 发送和接收通知的应用程序。现在的问题是,当我注册安装时 deviceToken 为空(deviceType 和 installationId 不为空)。当此令牌为空时,我无法收到任何通知。
我如何注册安装:
Parse.initialize(this, "x", "x");
ParseInstallation.getCurrentInstallation().saveInBackground();
当我将 Parse 的所有代码添加到我的应用 (https://www.parse.com/apps/quickstart#parse_push/android/native/existing) 时,一切正常。
我的 AndroidManifest.xml:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.xxx.xxx" >
<uses-sdk android:maxSdkVersion="17" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<permission android:protectionLevel="signature"
android:name="com.xxx.xxx.permission.C2D_MESSAGE" />
<uses-permission android:name="com.xxx.xxx.permission.C2D_MESSAGE" />
<application
android:name="com.xxx.xxx.Name_"
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:logo="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<meta-data
android:name="com.google.android.gms.analytics.globalConfigResource"
android:resource="@xml/global_tracker" />
<activity
android:name="com.xxx.xxx.Activities.SplashActivity_"
android:screenOrientation="portrait"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.xxx.xxx.Activities.LoginActivity_"
android:screenOrientation="portrait"
android:label="@string/app_name" >
</activity>
<activity
android:name="com.xxx.xxx.Activities.ForgotPassword_"
android:screenOrientation="portrait"
android:label="@string/app_name">
</activity>
<activity
android:name="com.xxx.xxx.Activities.MainActivity_"
android:screenOrientation="portrait"
android:label="@string/app_name" >
</activity>
<activity
android:name="com.xxx.xxx.Activities.EditProfile_"
android:screenOrientation="portrait"
android:label="@string/edit_profile" >
</activity>
<receiver android:name="com.google.android.gms.analytics.AnalyticsReceiver"
android:enabled="true">
<intent-filter>
<action android:name="com.google.android.gms.analytics.ANALYTICS_DISPATCH" />
</intent-filter>
</receiver>
<service android:name="com.google.android.gms.analytics.AnalyticsService"
android:enabled="true"
android:exported="false"/>
<service android:name="com.parse.PushService" />
<receiver android:name="com.parse.ParseBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.USER_PRESENT" />
</intent-filter>
</receiver>
<receiver android:name=".Receiver.MyPushBroadcastReceiver"
android:exported="false">
<intent-filter>
<action android:name="com.parse.push.intent.RECEIVE" />
<action android:name="com.parse.push.intent.DELETE" />
<action android:name="com.parse.push.intent.OPEN" />
</intent-filter>
</receiver>
<receiver android:name="com.parse.GcmBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="com.xxx.xxx" />
</intent-filter>
</receiver>
</application>
</manifest>
我刚刚创建了一个新应用程序,添加了 Parse 并删除了 Parse 中的 Installation 类/表,但仍然没有 deviceToken。
【问题讨论】:
你在android清单中配置了所有标签吗?我的意思是: 是的,我有。我关注了parse.com/apps/quickstart#parse_push/android/native/existing 奇怪的是,当我第一次使用它时它起作用了,但是从今天(或昨天)开始我无法收到任何通知。 即使我在使用 Parse 1.9.3 Android 时也遇到了这个问题。我在 Application 类中运行 saveInBackground() 。第一次打开应用程序时,它会保存除 deviceToken 和 pushType 之外的所有详细信息。但是当我关闭应用程序并再次重新打开它时,它会更新 Parse 安装类中的 deviceToken 和 pushType。需要帮助。 @LucaIaco 【参考方案1】:我认为这是新 Parse SDK 中的一个错误。我降级到 1.9.0,现在一切正常。
来源:https://groups.google.com/forum/#!topic/parse-developers/a1Z0SSC304M
【讨论】:
根据其发行说明 (parse.com/docs/downloads) 已在 1.9.4 中修复 即使在 1.10.1 中仍然遇到同样的问题,所以现在降级似乎是唯一的选择? 我在 1.12.0 中,我有很多没有 deviceToken 的安装。我们怎样才能解决它?我们可以在安装中删除行吗?以上是关于ParseInstallation 保存后解析 deviceToken 为空的主要内容,如果未能解决你的问题,请参考以下文章