当前位置: 首页 > 面试题库 >

我无法从Parse接收应用程序中的推送通知

段干跃
2023-03-14
问题内容

我在应用程序中配置了Parse
API,除推送通知外,其他所有功能均正常运行。我试图从网站发送它们,但它们未到达应用程序。我按照文档中的说明进行了所有操作,但是无法收到通知推送。

我能够收到一个,当我按它时,应用程序崩溃了。现在,我尝试更改某些内容,但即使反转,也无法再接收它们。我该如何解决我的问题?

编辑:由于某些用户可能感兴趣,所以这是我用于推送通知的部分代码:

主类(虽然不是MainActivity):

    public class InstantsApplication extends Application {
public void onCreate() {
    super.onCreate();
    // Hidden
    Parse.initialize(this, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 
    "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");



    ParseInstallation.getCurrentInstallation().saveInBackground();

    ParsePush.subscribeInBackground("", 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);
            }
        }
     }
}

AndroidManifest(权限不包括在这里,相信我,我已经把它们放了):

<!-- PARSE -->
<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" />

        <!--
          IMPORTANT: Change "com.parse.tutorials.pushnotifications" to match your app's package name.
        -->
        <!-- I have hidden package name root for this question -->
        <category android:name="com.xxxxxxxx.instants" />


    </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>
</application>

问题答案:

我之前遇到过此问题,因为您使用了最新的Parse api。您只需要进行一些更改。

首先,要解决直接由解析后端发出推送而导致的错误,您需要在清单中声明解析推送的通知图标。

 <meta-data android:name="com.parse.push.notification_icon"
            android:resource="@drawable/ic_launcher"/>

在结束前使用application-Tag。

现在,从后端发出另一个推送将按您的预期发送推送通知。到目前为止,一切都很好。单击该推送将再次导致应用程序崩溃。要解决此问题,您需要删除现已弃用的呼叫PushService.setDefaultPushCallback(...)并添加自己的Receiver类。我在*
.util包中这样做,如下所示:

public class Receiver extends ParsePushBroadcastReceiver {

    @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);
    }
}

接下来,将默认的Parse接收器更改为刚创建的接收器:-转到清单文件。

 <receiver
            android:name="your.package.name.utils.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>


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

  • 但是当我通过两次点击home按钮并滑动应用程序来终止应用程序时,就不会收到json通知。(换句话说,方法“应用程序:DidReceiverEmoteNotification:”未调用)。 我使用NSLog代码来检查通知接收和监视设备CONSOL。 我在stackoverflow的帖子中看到了所有类似的问题,但没有找到答案。

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

  • 我看过这个问题。我有完全相同的问题,但我有来自Thawte的有效ssl证书。我只使用id、type和address属性进行了观察请求,如这里所述。我的address属性类似于 我甚至没有收到同步消息。会出什么问题?

  • 使用Parse,我的推送通知工作得很好。我的应用程序是一个RSS新闻源,有时我会发送推送通知,我的问题是,当用户收到推送通知时,我不知道如何处理它。我在plist文件中列出了我的所有RSS源,例如我的plist文件的外观: rss_来源 我想做的是,检查标题是否等于推送通知的开头(因为我是发送推送的人,所以我会写下确切的标题),如果标题等于,那么它将转到某个索引。我在代码中设置的行。我在这里提供的

  • 我已经开始研究电容了。在阅读https://capacitorjs.com/docs/cordova/knowled-incompatible-plugins之后,我发现Capablear不支持某些cordova插件。 我在我的应用程序中使用cordova-plugin-fcm-with-dependecy-updated(android)和cordova-plugin-fcm(iOS)进行推送通