2017-01-25 199 views
0

我無法訂閱推送通知。我做了:Android&Quickblox(api 3.2):訂閱推送通知

1)我創建了一個firebase應用程序,其包名與我的MainActivity包名相同;

2)我下載了google-service.json文件並將其存儲在我的/ app /旁邊的gradle文件中;

3)我添加了C2D和WAKE-LOCK權限,正如谷歌指南顯示的那樣;

4)我在quickblox管理面板的pushnotification的設置標籤中添加了API-KEY;

5)我修改了quickblox指南中顯示的清單;

6)我添加了一個推送通知監聽器和一個本地廣播接收器,如上面的相同指南所示。

這就是我的清單看起來像:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="it.unical.sistemidistribuiti.ddf.appraia"> 
<uses-permission android:name="android.permission.WAKE_LOCK" /> 

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<permission android:name="it.unical.sistemidistribuiti.ddf.appraia.permission.C2D_MESSAGE" 
    android:protectionLevel="signature" /> 
<uses-permission android:name="it.unical.sistemidistribuiti.ddf.appraia.permission.C2D_MESSAGE"/> 
<meta-data android:name="com.quickblox.messages.TYPE" android:value="FCM" /> 
<meta-data android:name="com.quickblox.messages.SENDER_ID" android:value="@string/sender_id" /> 
<meta-data android:name="com.quickblox.messages.QB_ENVIRONMENT" android:value="DEVELOPMENT" /> 

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:largeHeap="true" 
    android:theme="@style/AppTheme" 
    android:name="it.unical.sistemidistribuiti.ddf.appraia.AppraiaApplication"> 
    <activity 
     android:name="it.unical.sistemidistribuiti.ddf.appraia.StartActivity" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme.NoActionBar" 
     android:screenOrientation="portrait" 
     android:configChanges="orientation|keyboardHidden"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name="it.unical.sistemidistribuiti.ddf.appraia.MainActivity" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme.NoActionBar" 
     android:screenOrientation="portrait" 
     android:configChanges="orientation|keyboardHidden"> 
    </activity> 
    <activity 
     android:name="it.unical.sistemidistribuiti.ddf.appraia.NewsDetailActivity" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme.NoActionBar" 
     android:screenOrientation="portrait" 
     android:configChanges="orientation|keyboardHidden"> 
    </activity> 
    <activity 
     android:name="it.unical.sistemidistribuiti.ddf.appraia.CreatePostActivity" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme.NoActionBar" 
     android:screenOrientation="portrait" 
     android:configChanges="orientation|keyboardHidden"> 
    </activity> 
    <activity 
     android:name="it.unical.sistemidistribuiti.ddf.appraia.UserProfileActivity" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme.NoActionBar" 
     android:screenOrientation="portrait" 
     android:configChanges="orientation|keyboardHidden"> 
    </activity> 
    <receiver 
     android:name="com.google.android.gms.gcm.GcmReceiver" 
     android:exported="true" 
     android:permission="com.google.android.c2dm.permission.SEND" > 
     <intent-filter> 
      <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
      <category android:name="com.example.gcm" /> 
     </intent-filter> 
    </receiver> 
    <service 
     android:name="com.quickblox.messages.services.fcm.QBFcmPushListenerService"> 
     <intent-filter> 
      <action android:name="com.google.firebase.MESSAGING_EVENT" /> 
     </intent-filter> 
    </service> 

</application> 

由於我使用的3.2 SDK版本,應用程序會自動訂閱用戶推送通知,但這不會發生。其實聆聽者代碼什麼都不打印:

//This is in AppraiaApplication extends Application 
@Override 
public void onCreate() { 
    super.onCreate(); 
    QBSettings.getInstance().init(getApplicationContext(), APP_ID, AUTH_KEY, AUTH_SECRET); 
    QBSettings.getInstance().setAccountKey(ACCOUNT_KEY); 
    QBPushManager.getInstance().addListener(new QBPushManager.QBSubscribeListener() { 
     @Override 
     public void onSubscriptionCreated() { 
      System.out.println("onSubscriptionCreated"); 
     } 

     @Override 
     public void onSubscriptionError(final Exception e, int resultCode) { 
      System.out.println("onSubscriptionError" + e); 
      if (resultCode >= 0) { 
       System.out.println("Google play service exception"); 
      } 
      System.out.println("onSubscriptionError " + e.getMessage()); 
     } 
    }); 
    QBSettings.getInstance().setEnablePushNotification(true); 
    LocalBroadcastManager.getInstance(this).registerReceiver(pushBroadcastReceiver, 
      new IntentFilter("new-push-event")); 
    System.out.println("Application creation ended"); 
} 

我在做什麼錯?

回答

1

看起來你沒有用戶登錄,訂閱也沒有執行。也看看日誌,可以有信息像D/QBASDK:SubscribeService:SubscribeService創建。所以,你可以確定訂閱是否被執行。