无法从 Parse.com 发送推送
Can't send push from Parse.com
我的应用程序中有一个使用 Parse 的项目,但我更改了项目(以及密钥)并且我的推送(测试或正常)没有从 Parse 发送。
当我尝试发送它们时,我收到通知说它将被 2 个收件人接收:
我的客户端推送已启用:
虽然我认为不需要,但我有我的 GCM 证书:
- 我试过在 Android 上扩展自定义
ParsePushBroadcastReceiver
并记录 onReceive
- 我已经尝试签名为发布和调试。
- 我试过 Wi-Fi、3G 和 4G。
- 我尝试过清除数据、卸载应用程序、重新启动。
我在 AndroidManifest.xml 上的权限是:
<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.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<permission android:protectionLevel="signature"
android:name="taggie.me.permission.C2D_MESSAGE" />
<uses-permission android:name="taggie.me.permission.C2D_MESSAGE" />
我的申请是:
<application
android:name=".MainApplication"
android:allowBackup="true"
android:icon="@drawable/logo_help"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
哪个代码是:
public class MainApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
Parse.initialize(this, "YBi4ki505TcwKSNEIW7gkFCdWvjHC9yNJmrZHBGR", "APwUw3laazYRhvkSRwZZqpxsROUjH5jWP6QzeHiq");
ParseInstallation.getCurrentInstallation().saveInBackground();
}
}
我剩下的 AndroidManifest.xml 是:
<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.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="taggie.me" />
</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>
<meta-data android:name="com.parse.push.gcm_sender_id"
android:value="id:10321_and_the_rest_of_my_number" />;
但是问题就在这里
我没有收到通知,当我发送通知时我可以看到:
在开枪自杀之前有人知道吗?谢谢:)
太棒了,我试过将 apk 发送给我的一个朋友...他收到了推送通知,但我没有!为什么可能?
我刚刚打开了 8253 端口,因为我看到一些帖子报告了这一点,但它仍然无法正常工作。 :'(
我有一个类似的问题,但以一种奇怪的方式解决了,但仍然 - 可能有帮助:
如果您在设备上重新安装(实际上是重新部署,有时只是 运行 在现有 apk 上卸载)您的应用程序,它可能会为指向相同实际的设备令牌创建多个条目设备(在 Parse 仪表板内,转到核心,您可以在那里看到完整的 table),在这种情况下 - 系统并不总是知道哪个是正确的物理设备。
这可以解释:
一个。仪表板告诉您它将发送超过 1 条消息(假设只发送 1 条消息)。
b。您的朋友收到推送(他只有 1 个有效设备令牌)
无论如何 - 核心页面上的刷新按钮没有帮助,但是 - 从仪表板手动发送推送会导致设备收到多次推送(因为它在 table),然后,重新进入核心 table 页面将自动清除重复项。
从那时起 - 推动恢复正常。
您可能需要在设备上再次进行彻底、彻底的删除和重新安装。
希望对您有所帮助!
注意:在我的案例中不需要 GCM 凭据。
主要问题是我在使用 Genymotion。
作为模拟器,推送通知应该到达或根本不到达,但它们有时会到达。我无法解释为什么。
在您的 parseApplication class 中声明频道。如果您要发送通知,则必须设置频道。看到这个 ParsePush.subscribeInBackground 。它正在描述频道。
public class ParseApplication 扩展应用程序 {
@Override
public void onCreate() {
super.onCreate();
System.out.println("Application");
Parse.initialize(this, "86q5mwgypd1Q2URFV6kJh5MBPmUpuPvoN3lTdeWx", "OhrkrJTuTwtbMprYtiywnQ3f4wnQdr5pitmI7tNt");
ParsePush.subscribeInBackground("temboo", new SaveCallback() {
@Override
public void done(ParseException e) {
if (e == null) {
Log.d("com.parse.push", "successfully subscribed to the broadcast channel.");
} else {
Log.e("com.parse.push", "failed to subscribe for push", e);
Toast.makeText(ParseApplication.this, "Failed to subscribe for push.", Toast.LENGTH_SHORT).show();
}
}
});
这对我有用。
Parse.enableLocalDatastore(this);
// Add your initialization code here
Parse.initialize(this, APP_ID, CL_ID);
ParseInstallation.getCurrentInstallation().saveInBackground();
ParseUser.enableAutomaticUser();
ParseACL defaultACL = new ParseACL();
// Optionally enable public read access.
// defaultACL.setPublicReadAccess(true);
ParseACL.setDefaultACL(defaultACL, true);
// IF NEEADED
String topic ="YOUR_TOPIC";
System.out.println(topic);
ParsePush.subscribeInBackground(topic, new SaveCallback() {
@Override
public void done(ParseException e) {
if (e == null) {
Log.d("com.parse.push",
"successfully subscribed ");
} else {
Log.e("com.parse.push", "failed ", e);
}
}
});
我的应用程序中有一个使用 Parse 的项目,但我更改了项目(以及密钥)并且我的推送(测试或正常)没有从 Parse 发送。
当我尝试发送它们时,我收到通知说它将被 2 个收件人接收:
我的客户端推送已启用:
虽然我认为不需要,但我有我的 GCM 证书:
- 我试过在 Android 上扩展自定义
ParsePushBroadcastReceiver
并记录onReceive
- 我已经尝试签名为发布和调试。
- 我试过 Wi-Fi、3G 和 4G。
- 我尝试过清除数据、卸载应用程序、重新启动。
我在 AndroidManifest.xml 上的权限是:
<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.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<permission android:protectionLevel="signature"
android:name="taggie.me.permission.C2D_MESSAGE" />
<uses-permission android:name="taggie.me.permission.C2D_MESSAGE" />
我的申请是:
<application
android:name=".MainApplication"
android:allowBackup="true"
android:icon="@drawable/logo_help"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
哪个代码是:
public class MainApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
Parse.initialize(this, "YBi4ki505TcwKSNEIW7gkFCdWvjHC9yNJmrZHBGR", "APwUw3laazYRhvkSRwZZqpxsROUjH5jWP6QzeHiq");
ParseInstallation.getCurrentInstallation().saveInBackground();
}
}
我剩下的 AndroidManifest.xml 是:
<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.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="taggie.me" />
</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>
<meta-data android:name="com.parse.push.gcm_sender_id"
android:value="id:10321_and_the_rest_of_my_number" />;
但是问题就在这里
我没有收到通知,当我发送通知时我可以看到:
在开枪自杀之前有人知道吗?谢谢:)
太棒了,我试过将 apk 发送给我的一个朋友...他收到了推送通知,但我没有!为什么可能?
我刚刚打开了 8253 端口,因为我看到一些帖子报告了这一点,但它仍然无法正常工作。 :'(
我有一个类似的问题,但以一种奇怪的方式解决了,但仍然 - 可能有帮助:
如果您在设备上重新安装(实际上是重新部署,有时只是 运行 在现有 apk 上卸载)您的应用程序,它可能会为指向相同实际的设备令牌创建多个条目设备(在 Parse 仪表板内,转到核心,您可以在那里看到完整的 table),在这种情况下 - 系统并不总是知道哪个是正确的物理设备。
这可以解释:
一个。仪表板告诉您它将发送超过 1 条消息(假设只发送 1 条消息)。
b。您的朋友收到推送(他只有 1 个有效设备令牌)
无论如何 - 核心页面上的刷新按钮没有帮助,但是 - 从仪表板手动发送推送会导致设备收到多次推送(因为它在 table),然后,重新进入核心 table 页面将自动清除重复项。 从那时起 - 推动恢复正常。 您可能需要在设备上再次进行彻底、彻底的删除和重新安装。
希望对您有所帮助!
注意:在我的案例中不需要 GCM 凭据。
主要问题是我在使用 Genymotion。
作为模拟器,推送通知应该到达或根本不到达,但它们有时会到达。我无法解释为什么。
在您的 parseApplication class 中声明频道。如果您要发送通知,则必须设置频道。看到这个 ParsePush.subscribeInBackground 。它正在描述频道。
public class ParseApplication 扩展应用程序 {
@Override
public void onCreate() {
super.onCreate();
System.out.println("Application");
Parse.initialize(this, "86q5mwgypd1Q2URFV6kJh5MBPmUpuPvoN3lTdeWx", "OhrkrJTuTwtbMprYtiywnQ3f4wnQdr5pitmI7tNt");
ParsePush.subscribeInBackground("temboo", new SaveCallback() {
@Override
public void done(ParseException e) {
if (e == null) {
Log.d("com.parse.push", "successfully subscribed to the broadcast channel.");
} else {
Log.e("com.parse.push", "failed to subscribe for push", e);
Toast.makeText(ParseApplication.this, "Failed to subscribe for push.", Toast.LENGTH_SHORT).show();
}
}
});
这对我有用。
Parse.enableLocalDatastore(this);
// Add your initialization code here
Parse.initialize(this, APP_ID, CL_ID);
ParseInstallation.getCurrentInstallation().saveInBackground();
ParseUser.enableAutomaticUser();
ParseACL defaultACL = new ParseACL();
// Optionally enable public read access.
// defaultACL.setPublicReadAccess(true);
ParseACL.setDefaultACL(defaultACL, true);
// IF NEEADED
String topic ="YOUR_TOPIC";
System.out.println(topic);
ParsePush.subscribeInBackground(topic, new SaveCallback() {
@Override
public void done(ParseException e) {
if (e == null) {
Log.d("com.parse.push",
"successfully subscribed ");
} else {
Log.e("com.parse.push", "failed ", e);
}
}
});