当前位置: 首页 > 知识库问答 >
问题:

Android Studio:应用程序不会收到parse.com的推送通知

宋勇
2023-03-14

我知道这个问题已经问过很多次了,但是我仍然无法从parse.com获得推送通知

推送通知正在从parse.com成功发送,但我的应用程序没有接收到它们。

大多数人用这个解决了他们的问题:我不能在应用程序中接收来自对我不起作用的Parse bt的推送通知。

我也试过Android--不能接收来自parse.com的推送。

有些人建议改变包的名称,我做了,甚至做了一个新的应用程序,但没有帮助。

这是我的主要活动

package com.example.user.parsetest;

import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;
import com.parse.Parse;
public class MainActivity extends ActionBarActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Parse.initialize(this, "********", "********");

}
}

我试着按许多答案中的建议添加自定义PushReceiver

package com.example.user.parsetest;

import android.app.Activity;
import android.app.Notification;
import android.content.Context;
import android.content.Intent;
import com.parse.ParsePushBroadcastReceiver;

public class Receiver extends ParsePushBroadcastReceiver {

@Override
protected Notification getNotification(Context context, Intent intent) {
    // TODO Auto-generated method stub
    return super.getNotification(context, intent);
}

@Override
public void onPushOpen(Context context, Intent intent) {
    Intent i = new Intent(context, MainActivity.class);
    i.putExtras(intent.getExtras());
    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(i);
}
@Override
protected void onPushReceive(Context context, Intent intent) {
    //here You can handle push before appearing into status e.g if you want to stop it.
    super.onPushReceive(context, intent);

}
}

和AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <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.example.user.parsetest.Receiver"
        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.example.user.parsetest" />
        </intent-filter>
    </receiver>
    <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" />
    <meta-data android:name="com.parse.push.notification_icon"
        android:resource="@drawable/ic_launcher"/>

    <!--
      IMPORTANT: Change "com.parse.starter.permission.C2D_MESSAGE" in the lines below
      to match your app's package name + ".permission.C2D_MESSAGE".
    -->
    <permission android:protectionLevel="signature"
        android:name="com.example.user.parsetest.permission.C2D_MESSAGE" />
    <uses-permission android:name="com.example.user.parsetest.permission.C2D_MESSAGE" />
</application>

想不出问题所在。请帮帮忙。

共有1个答案

步弘和
2023-03-14

在应用程序类中,就在parse.initialize(appkey,clientkey)的行之后;只需添加以下一行,它就应该起作用了。

// Current installation object
ParseInstallation parseInstallation = ParseInstallation.getCurrentInstallation();

// Save the updated installation object
parseInstallation.saveInBackground(new SaveCallback() {
    @Override
    public void done(ParseException e) {
        MyLog.e(MainApplication.class.getSimpleName(), "Installation object saved "+((e!=null)?"failed":"successfully"));
    }
 });
 类似资料:
  • 我已经学习了这篇关于在Windows Phone应用程序中设置解析推送通知的教程。这是我的代码: 当我从Parse dashboard发送推送通知时,它不会被接收到。我试着在模拟器(Windows Phone 8.0)和设备(8.1)上运行,在前景、背景和关闭应用程序时,结果都是相同的。 当我使用像上面的“testchannel”这样的通道并使用segment选项时,通道名称会出现在选项的下拉列表

  • 我正在iOS8+上使用最新的试用版PubNub,Xcode7.3,试图建立一个聊天应用程序。我正在评估PubNub作为另一个聊天服务器的替代方案。 我遵循了PubNub文档中关于苹果推送通知的说明,但我的应用程序在后台时从不接收推送通知。 我已经创建了p12证书并将其导入到PubNub密钥集中。我在Xcode常规设置中启用了推送通知。我已经编写了PubNub文档中指定的Swift代码。我能够成功发

  • 消息“成功订阅到广播频道。”在应用程序启动时打印。但是当我使用parse.com上的“发送推送通知”功能时,我的手机没有收到任何推送通知。 为什么不起作用?

  • 我正在尝试使用parse.com推送通知服务向我的iOS应用添加推送通知,但我遇到了一些问题,我的一些设备没有收到通知。 当前代码 这似乎在某些设备上起作用(在同事的iPhone5上测试过--起作用了,在我老板的iPhone6上测试过--不起作用) 第43行: 警告2: /users/ds/code/rp-ios/rp/appdelegate.swift:44:25:iOS 8.0中不推荐使用“R

  • 我在Android项目中使用推送通知(GCM)。 根据GCM教程,我实现了广播接收器,并将其注册到。 这种广播接收器应该接收消息,即使我的应用程序是关闭的(不仅如果我的应用程序是在后台,但即使它是强制停止)。 但它并不像我预期的那样有效<如果应用程序关闭,则不会调用code>onReceive()方法。看来我对广播接收机的理解是正确的,问题在于我对GCM的期望。 其中一个可能的原因是,如果应用程序