2016-09-21 95 views
0

我已經配置了推送通知在Android的一個應用程序在之後的所有指令: https://github.com/ParsePlatform/Parse-Server/wiki/Push-Configuring-Clients https://parseplatform.github.io/docs/android/guide/#push-notificationsAndroid的推送通知上Back4App沒有收到

但無論我做什麼,手機我m使用似乎無法得到任何推送通知。

相同的應用程序被配置爲接收iOS上的通知,並完美地工作。

這些都是在清單中的相關位:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.xxy.xxy"> 

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.WAKE_LOCK" /> 
<uses-permission android:name="android.permission.VIBRATE" /> 
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> 
<uses-permission android:name="android.permission.GET_ACCOUNTS" /> 

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

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


<application 
    android:name="com.xxy.xxy.MiXXYApplication" 
    android:allowBackup="true" 
    android:icon="@drawable/logoapp" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 

    <service android:name="com.parse.PushService" /> 

    <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> 
    <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="com.xxy.xxy" /> 
     </intent-filter> 
    </receiver> 

    <meta-data 
     android:name="com.parse.push.gcm_sender_id" 
     android:value="id:123456789012" /> 
</application> 

這是應用程序類(同的AppID和客戶機密鑰與由Back4App給定的電流值替換):

public class MiXXYApplication extends Application { 

    @Override 
    public void onCreate() { 
     super.onCreate(); 

     Parse.setLogLevel(Parse.LOG_LEVEL_VERBOSE); 
     Parse.initialize(new Parse.Configuration.Builder(getApplicationContext()) 
       .applicationId("back4App_AppID") 
       .clientKey("back4App_ClientKey") 
       .server("https://parseapi.back4app.com/") 
       .build() 
     ); 

    } 
} 

這些是我要求註冊安裝的方法(我不能在應用程序類中執行此操作,因爲我需要userId,登錄後)

public void enablePush(final String userId) { 
    ParseInstallation installation = ParseInstallation.getCurrentInstallation(); 
    installation.put("GCMSenderId", "123456789012"); 
    installation.put("userId", userId); 
    installation.saveInBackground(new SaveCallback() { 
     @Override 
     public void done(ParseException e) { 
      if (e == null) { 
       Log.i("push", "ok"); 
       subscribe(""); 
       subscribe(userId); 
      } else { 
       Log.i("push", "nok"); 
       e.printStackTrace(); 
      } 
     } 
    }); 
} 


public void subscribe(String channel){ 
    ParsePush.subscribeInBackground(channel, new SaveCallback() { 
     @Override 
     public void done(ParseException e) { 
      if (e == null) { 
       Log.i("Push", "subscribed"); 
      } else { 
       Log.i("push", "nok"); 
       e.printStackTrace(); 
      } 
     } 
    }); 
} 

這是在解析DB安裝註冊表:

ObjectID: l1tkO3YM2r 
GCMSenderID: 123456789012 
deviceToken: APA91bHeKnj... 
localeIdentifier: en-US 
badge: (undefined) 
parseVersion: 1.13.1 
ACL: Public Read + Write 
appIdentifier: com.xxy.xxy 
appName: appName 
deviceType: android 
channels: ["","CyTPw5xc4r"] 
pushType: gcm 
installationId: 8cf9c606-5a0e... 
userId: CyTPw5xc4r 

在谷歌開發者控制檯,項目編號爲123456789012,我創建了一個API密鑰,並添加API密鑰+在項目數量Back4App儀表板的Android推送通知設置。

在詳細模式下的logcat是顯示如下:

09-21 09:29:19.863 10721-10721/com.xxy.xxy V/com.parse.ManifestInfo: Using gcm for push. 
09-21 09:29:19.884 10721-10885/com.xxy.xxy V/com.parse.CachedCurrentInstallationController: Successfully deserialized Installation object 
09-21 09:29:19.899 10721-10886/com.xxy.xxy V/com.parse.GcmRegistrar: Sending GCM registration intent 
09-21 09:29:29.782 10721-11340/com.xxy.xxy V/com.parse.GcmRegistrar: Received deviceToken <APA91bHeKnj...> from GCM. 

對於我可以告訴你,一切都很好走,但我沒有得到我的手機的任何通知。

我的設置有什麼問題嗎? 謝謝!

回答