解析推送通知仅在模拟器中工作

Posted

技术标签:

【中文标题】解析推送通知仅在模拟器中工作【英文标题】:Parse Push Notification just work in Emulator 【发布时间】:2014-11-20 18:18:55 【问题描述】:

我需要帮助,因为我正在使用 Parse Push Notification android,但我的应用程序只在模拟器中接收通知,但在真实设备中没有接收。

在我的分析中出现注册。

这是我的许可和广播接收器:

<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="org.example.promociones.permission.C2D_MESSAGE" />
<uses-permission android:name="org.example.promociones.permission.C2D_MESSAGE" />

 <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.promociones.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>

还有我的注册码:

Override
public void onCreate() 
    // TODO Auto-generated method stub
    super.onCreate();

    Parse.initialize(this, "SomeValue",   "SomeValue");
    ParseInstallation.getCurrentInstallation().saveInBackground();
    ParsePush.subscribeInBackground("pruebas", new SaveCallback() 

        @Override
        public void done(com.parse.ParseException e) 
            // TODO Auto-generated method stub

            if(e!=null)
            
                Log.d("com.parse.push", "La subscripcion al canal fue exitosa");
            
            else
            
                Log.e("com.parse.push", "Fallo la subscripcion push");
            

        
    );

【问题讨论】:

【参考方案1】:

请改用以下内容:

    // inform the Parse Cloud that it is ready for notifications
    PushService.setDefaultPushCallback(this, MainActivity.class);   
    ParseInstallation.getCurrentInstallation().saveInBackground(new SaveCallback() 
        @Override
        public void done(ParseException e) 
            if (e == null) 

             else 
                e.printStackTrace();

            
        
    );

【讨论】:

我错过了这一行PushService.setDefaultPushCallback(this, MainActivity.class);【参考方案2】:

我遇到了同样的问题,那是因为我没有检查包名

<permission
    android:name="YOUR_PACKAGE.permission.C2D_MESSAGE"
    android:protectionLevel="signature" />

<uses-permission android:name="YOUR_PACKAGE.permission.C2D_MESSAGE" />

【讨论】:

以上是关于解析推送通知仅在模拟器中工作的主要内容,如果未能解决你的问题,请参考以下文章

推送通知在开发中工作正常,但设备在生产中没有收到通知

如何使推送通知在 iOS 的生产环境中工作?

Firebase 推送通知在纱线手表中工作,但在纱线构建中不工作

推送通知在 Firefox 中工作,但在 React 应用程序中不支持 Chrome

android推送通知显示空白内容

ApnsPHP:在开发中工作但不在生产中的推送通知