0

プッシュ通知用のプッシュボットAPIを使用しています通知用のカスタムハンドラを実装しようとします。ここで ヌルオブジェクトで仮想メソッド 'void com.pushbots.push.utils.PBPrefs.setCustomHandler(java.lang.String)'を呼び出そうとしましたr

は私がマニフェスト https://pushbots.com/developer/docs/android-sdk-integration

私のアンドロイドを学ぶドキュメントである

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.assorttech.assorttech" > 

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <!-- GCM requires a Google account. --> 
    <uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
    <uses-permission android:name="android.permission.WAKE_LOCK" /> 
    <permission android:name="com.assorttech.assorttech.permission.C2D_MESSAGE" android:protectionLevel="signature" /> 
    <uses-permission android:name="com.assorttech.assorttech.permission.C2D_MESSAGE" /> 
    <!-- This app has permission to register and receive dataf message. --> 
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> 
    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name=".MainActivity" 
      android:label="@string/app_name" 
      android:theme="@style/AppTheme.NoActionBar" > 
      <intent-filter> 
       <action android:name="com.assorttech.assorttech.MESSAGE" /> 
       <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 


       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

     <activity 
      android:name="com.thefinestartist.finestwebview.FinestWebViewActivity" 
      android:configChanges="keyboardHidden|orientation|screenSize" 
      android:screenOrientation="sensor" 
      android:theme="@style/FinestWebViewTheme.Light" 
      > 

     </activity> 
     <receiver 
      android:name="com.pushbots.google.gcm.GCMBroadcastReceiver" 
      android:permission="com.google.android.c2dm.permission.SEND" > 
      <intent-filter> 
       <!-- Receives the actual messages. --> 
       <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
       <!-- Receives the registration id. --> 
       <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> 
       <category android:name="com.assorttech.assorttech" /> 
      </intent-filter> 
     </receiver> 
     <receiver android:name="com.pushbots.push.DefaultPushHandler" /> 
     <!--<receiver android:name="com.assorttech.assorttech.customHandler" />--> 
     <service android:name="com.pushbots.push.GCMIntentService" /> 
    </application> 

</manifest> 


public class customHandler extends BroadcastReceiver 
{ 
    private static final String TAG = "customHandler"; 

    public void onReceive(Context context, Intent intent) 
    { 
     String action = intent.getAction(); 
     Log.d(TAG, "action=" + action); 
     // Handle Push Message when opened 
     if (action.equals(PBConstants.EVENT_MSG_OPEN)) { 
      //Check for Pushbots Instance 
      Pushbots pushInstance = Pushbots.sharedInstance(); 
      if(!pushInstance.isInitialized()){ 
       // Log.d("Initializing Pushbots."); 
       Pushbots.sharedInstance().init(context.getApplicationContext()); 
      } 

      //Clear Notification array 
      if(PBNotificationIntent.notificationsArray != null){ 
       PBNotificationIntent.notificationsArray = null; 
      } 

      HashMap<?, ?> PushdataOpen = (HashMap<?, ?>) intent.getExtras().get(PBConstants.EVENT_MSG_OPEN); 
      Log.w(TAG, "User clicked notification with Message: " + PushdataOpen.get("message")); 

      //Report Opened Push Notification to Pushbots 
      if(Pushbots.sharedInstance().isAnalyticsEnabled()){ 
       Pushbots.sharedInstance().reportPushOpened((String) PushdataOpen.get("PUSHANALYTICS")); 
      } 

      //Start lanuch Activity 
      String packageName = context.getPackageName(); 
      Intent resultIntent = new Intent(context.getPackageManager().getLaunchIntentForPackage(packageName)); 
      resultIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK| Intent.FLAG_ACTIVITY_CLEAR_TASK); 

      resultIntent.putExtras(intent.getBundleExtra("pushData")); 
      Pushbots.sharedInstance().startActivity(resultIntent); 

      // Handle Push Message when received 
     }else if(action.equals(PBConstants.EVENT_MSG_RECEIVE)){ 
      HashMap<?, ?> PushdataOpen = (HashMap<?, ?>) intent.getExtras().get(PBConstants.EVENT_MSG_RECEIVE); 
      Log.w(TAG, "User Received notification with Message: " + PushdataOpen.get("message")); 
     } 
    } 
} 


主な活動:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    Pushbots.sharedInstance().setCustomHandler(customHandler.class); 
} 

答えて

1

あなたは、あなたの活動のonCreate()方法で

Pushbots.sharedInstance().init(this); 

を追加する必要があります。

関連する問題