2016-04-06 6 views
0

プッシュメッセージを受け取るためにOneSignal APIを使用する開発とアプリケーションです。オープンメッセージを処理するコードの下:プッシュメッセージを開いた結果である非アクティビティクラスのAndroidコンテキストを取得

レシーバー

public class OneSignalBroadcastReceiver extends BroadcastReceiver implements OneSignal.NotificationOpenedHandler { 


    private static RecadosDataSource rec; 
    private static Context mcontext; 
    private static Boolean opened = false; 
    private static String Titulo = ""; 
    private static String Mensagem = ""; 


    @Override 
    public void notificationOpened(String message, JSONObject additionalData, boolean isActive) { 
     try { 

      this.mcontext = MainActivity.getInstance().getApplication().getApplicationContext(); 
      rec = new RecadosDataSource(this.mcontext); 
      databaseManager(true,this.mcontext); 
      rec.updateRecados(additionalData.getString("title"), message); 
      databaseManager(false, this.mcontext); 

     } catch (Throwable t) { 
      t.printStackTrace(); 
     } 
    } 

} 

問題は、このクラスのコンテキストを取得する方法ですか?現在の状況では私は文脈を得ることができません。

+1

あなたは 'onReceive()'の中で 'Context'をあなたに渡します。このメソッドは、 'BroadcastReceiver'が大いに利用されるために必要です。つまり、APIはもちろん、OneSignalについては何も知らないと言われています。 – CommonsWare

+0

私はonReceive()のオーバーライドを持っていますが、最初のポイントはnotificationOpenedです。 – JulianOliveira

+0

'onReceive()'の前に 'notificationOpened()'が呼び出されたのは非常に奇妙です。その場合は、OneSignalに連絡し、アドバイスを求めてください。 'BroadcastReceiver'のエントリーポイントは' onReceive() 'とされています。もし彼らがそれを壊しているのであれば、あなたのような問題をどのように処理するかを開発者に伝える責任があります。 – CommonsWare

答えて

0

これはちょうど追加ですCommonsWareコメントです。 onReceiveをオーバーライドするとsuperを呼び出しますか?あなたのコードを前に置くようにしてください

0

NotificationOpenedHandlerインターフェイスは、Androidブロードキャストではなく単純なコールバックです。あなたはどんなContextでOneSignal初期化し、通知は次のコードで自分のアプリでいつでもハンドラを開く設定することができます。

OneSignal.startInit(context).setNotificationOpenedHandler(new YourNotificationOpenedHandler()).init(); 

私たちは、しかし、これはほとんどの柔軟性を可能としてあなたApplicationクラスのonCreateからこれを呼び出すことをお勧めします。 SDKセットアップガイドの4. Add Optional NotificationOpenedHandlerに、さらに詳しい例が示されています。

関連する問題