我试图在android中使用解析来推送通知,我在Application类中注册了解析,如下所示:
@Override
public void onCreate() {
super.onCreate();
Parse.initialize(this, "***************", "***************");
}我同意在主要活动中推动这样的活动:
@Override
protected void onCreate(Bundle savedInstanceState) {
ParsePush.subscribeInBackground("", new SaveCallback() {
@Override
public void done(ParseException e) {
if (e == null) {
ParseInstallation.getCurrentInstallation().saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
if (e == null) {
String deviceToken = (String) ParseInstallation.getCurrentInstallation().get("deviceToken");
Log.e("MainActivity", "device toekn " + deviceToken);
} else {
Log.e("MainActivity", "failed to subscribe for push " + e.getLocalizedMessage());
}
}
});
} else {
Log.e("MainActivity", "failed to subscribe for push", e);
}
}
});
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}下面是我的清单部分--应用于解析:
<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="com.parse.ParsePushBroadcastReceiver"
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" />
<!--
IMPORTANT: Change "com.parse.starter" to match your app's package name.
-->
<category android:name="com.****" />
</intent-filter>
</receiver>但是,设备令牌大多数时候返回null,并且设备在解析仪表板中没有设备令牌,因此,我的设备没有得到推送通知。
奇怪的是,有时它确实有效,我得到了deviceToken,安装对象得到了推送,有人遇到过这种行为吗?
发布于 2015-10-13 11:11:35
这个问题最终得到了解决,这是应用程序名称在标记中的清单标记中的一个简单错误。因为我在这里发布的代码是“com。*”没有人能帮上忙,我很抱歉。
发布于 2016-04-27 20:42:19
我遇到了这个问题,并通过修改我的AndroidManifest文件来解决它。
看起来您可以将解析配置为使用"Parse Push Network“或GCM (Google )。
Parse使用自己的push网络,用于那些希望避免依赖Google的应用程序,以及不支持Play Store的设备(如Kindles)。因此,在其他使用GCM时设置下面的内容是很重要的。
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<permission android:name="YOUR_PACKAGE_NAME.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="YOUR_PACKAGE_NAME.permission.C2D_MESSAGE" />将上面声明中的YOUR_PACKAGE_NAME替换为应用程序的包名。另外,确保com.parse.GcmBroadcastReceiver和com.parse.PushService被声明为元素的子元素:
这对我有用,也许也适用于你。
发布于 2015-07-23 15:44:57
我想您使用的是1.9.3版本。在1.9.4版中,他们解决了这个问题。检查一下发布说明。
https://stackoverflow.com/questions/31456351
复制相似问题