2016-10-05 10 views
1

私はPushWooshを私のプロジェクトに統合しました。また、ユーザーが通知をタップすると、アクティビティを開く必要があります。プッシュが受信されたら、データを取得し(IDと呼ぶ)、このIDをインテントを使用して送信し、アクティビティを開く必要があります。 したがって、カスタムプッシュ通知用のFactoryを作成し、通知を作成したGenerateNotification()コールバックに作成しました。しかし、私がPending intentを設定すると、この通知をクリックすると、私の主な活動が開きます。私はFinalyをなぜプッシュウォッシュ通知のクリックによるアクティビティを開くことがアンドロイドで機能しないのですか?

notificationManager.notify(uniqueId, notification); 
    return null; 

答えて

1

を置けば

public class MyFactory extends AbsNotificationFactory { 
     private String id; 

     @Override 
     public Notification onGenerateNotification(PushData pushData) { 
      final String notificationTitle = "Title"; 

      id = pushData.getExtras().getString("Id"); 

      final Intent pushIntent = new Intent(getContext().getApplicationContext(), PushActivity.class); 
      pushIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); 
      pushIntent.putExtra("Id", id); 

      final int uniqueId = Math.abs(UUID.randomUUID().hashCode()); 

      PendingIntent pendingIntent = PendingIntent.getActivity 
        (getContext(), uniqueId, pushIntent, PendingIntent.FLAG_UPDATE_CURRENT); 

      NotificationCompat.BigTextStyle bigTextStyle = new NotificationCompat.BigTextStyle(); 
      bigTextStyle.setBigContentTitle(notificationTitle); 
      bigTextStyle.bigText(notificationAlert); 

      final NotificationCompat.Builder builder = new NotificationCompat.Builder(getContext()) 
       .setSmallIcon(R.drawable.app_icon) 
       .setContentTitle(notificationTitle) 
       .setDefaults(Notification.DEFAULT_SOUND) 
       .setContentIntent(pendingIntent) 
       .setContentText(notificationAlert) 
       .setStyle(bigTextStyle); 

      final Notification notification = builder.build(); 
      final NotificationManager notificationManager = (NotificationManager) getContext().getSystemService(Context.NOTIFICATION_SERVICE); 
      //notificationManager.notify(uniqueId, notification); 
      notification.flags |= Notification.FLAG_AUTO_CANCEL; 

      return notification; 
     } 

     @Override 
     public void onPushReceived(PushData pushData) { 
     } 

     @Override 
     public void onPushHandle(Activity activity) { 
     } 
    } 

しかし、リダイレクトは動作しますが、私は解決策を見つけました。通知をタップ経由でカスタムアクティビティを開くために、私たちはBroadcastRecevierを作成し、この

public class PushNotificationReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent incomingIntent) { 
     if (incomingIntent == null) 
      return; 

     // Get data here if need 
     // From incomingIntent and PushBundle 

     Intent intent = new Intent(context,PushReceiverActivity.class); 
     intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     context.startActivity(intent); 

     //Let Pushwoosh SDK post-handle push (track stats, etc.) 
     PushManagerImpl.postHandlePush(context, incomingIntent); 

    } 
} 

から活動を開始する必要があり、マニフェスト

<receiver android:name=".PushNotificationReceiver" /> 

     <meta-data 
      android:name="PW_NOTIFICATION_RECEIVER" 
      android:value="com.example.test.pushwooshtest.PushNotificationReceiver" /> 
に追加することを忘れないでください
関連する問題