我在我的应用程序中有一个Parse的项目,但是我已经改变了项目(以及键),而我的推送(测试或正常)并没有从Parse发送。
当我尝试发送它们时,我已通知它将被2位收件人收到:
我的客户端推送已启用:
虽然我认为不需要,但我已获得GCM凭据:
<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" >
我对AndroidManifest.xml的权限是:
public class MainApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
Parse.initialize(this, "YBi4ki505TcwKSNEIW7gkFCdWvjHC9yNJmrZHBGR", "APwUw3laazYRhvkSRwZZqpxsROUjH5jWP6QzeHiq");
ParseInstallation.getCurrentInstallation().saveInBackground();
}
}
我的申请是:
<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" />;
代码是:
PUBLIC CONST APP_NAME As String = "SQL Bluescreen demonstrator"
我的AndroidManifest.xml的其余部分是:
#If VBA7 And Win64 Then ' 64 bit Excel under 64-bit windows: PtrSafe declarations and LongLong Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongLong) #ElseIf VBA7 Then ' VBA7 in a 32-bit environment: PtrSafe declarations, but no LongLong Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) #Else ' 32 bit Excel Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) #End If
但问题在这里
我没有收到通知,当我发送通知时,我可以看到:
有人在拍摄自己之前有线索吗?谢谢:))
这太不可思议了,我试图将apk发送给我的一个朋友......他得到了推送通知,但我不知道!为什么会这样呢?
我刚刚打开了端口8253,因为我看到一些帖子报告了这个,但它仍然无法正常工作。 :&#39;(
答案 0 :(得分:2)
我有一个类似的问题以一种奇怪的方式解决了,但仍然 - 可能有所帮助:
如果您在设备上重新安装(实际上是重新部署,有时只是在现有的apk上卸载)您的应用程序,它可能会为设备令牌创建多个条目,指向同一个实际设备(在Parse仪表板内) ,转到Core,你可以在那里看到完整的表格),在这种情况下 - 系统并不总是知道哪个是正确的物理设备。
这可以解释:
一个。仪表板告诉你它将发送超过1条消息(假设只发送1条消息)。
湾你的朋友获得推送(他只有一个有效的设备令牌)
无论如何 - 核心页面上的刷新按钮没有帮助,但是 - 手动从仪表板发送推送会导致设备接收多次推送(表中的重复次数),以及然后,重新进入Core表页面将自动清除重复项。 从那里 - 推动恢复正常。 您可能需要在设备上进行另一次干净,完全删除和重新安装。
希望这有帮助!
注意:在我的情况下,GCM凭证是必需的。
答案 1 :(得分:0)
主要问题是我正在使用Genymotion。
作为模拟器,推送通知应该是ARRIVE或NOT ARRIVE,但它们有时会到达。我无法解释原因。
答案 2 :(得分:0)
在parseApplication类中声明通道。如果您要发送通知,则必须设置频道。请参阅此ParsePush.subscribeInBackground。它正在描述频道。
公共类ParseApplication扩展了Application {
@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();
}
}
});
答案 3 :(得分:0)
这适合我。
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);
}
}
});