0

私は2つのCordovaプラグインを使用しようとしていますが、両方ともアプリケーションのAndroid:名前を設定する必要があります。Cordova App - 複数アプリケーションAndroid:名前

プラグイン: https://github.com/CleverTap/clevertap-cordovahttps://github.com/taivo/parse-push-plugin

他の類似の記事に続いては、私はMainApplicationファイルを作成し、新しい公共のクラスに2つのプラグインを拡張しようとしました。私はこれで素人ですので、ビルドしようとすると次のエラーメッセージが表示されているので間違っています。

MainApplication.java:8: error: class CleverTapPlugin is public, should be declared in a file named CleverTapPlugin.java 
public class CleverTapPlugin extends Application { 

MainApplication.java:12: error: class ParsePushApplication is public, should be declared in a file named ParsePushApplication.java 
public class ParsePushApplication extends CleverTapPlugin { 

MainApplication.java:4: error: ParsePushApplication is already defined in this compilation unit 
import github.taivo.parsepushplugin.ParsePushApplication; 

MainApplication.java:5: error: CleverTapPlugin is already defined in this compilation unit 
import com.clevertap.cordova.CleverTapPlugin; 

は、ここに私のMainActivityファイルです:

package com.example.app; 

import android.app.Application; 
import github.taivo.parsepushplugin.ParsePushApplication; 
import com.clevertap.cordova.CleverTapPlugin; 


public class CleverTapPlugin extends Application { 

} 

public class ParsePushApplication extends CleverTapPlugin { 

} 

public class MainApplication extends ParsePushApplication { 

} 

それは私がこれらのエラーメッセージを取得していますが、私は私が何か間違ったことをしたと確信しているので、私のMainActivityは、ビルドで正しく呼び出されているようです。何か案は?

+0

なぜこのプラグインを拡張しますか?つまり、そのプラグインを追加してhtml内で使用するだけです。 –

+0

@ JorgeManuelBelloはい通常はプラグインには正しいが、両方のプラグインはネイティブクラッシュを引き起こすか、アプリケーションandroid:nameに追加されていないと正常に動作を追跡しないため、両方を正しく機能させるために拡張する必要がある。 –

+0

エラーは、各クラスを別々のファイルに宣言する必要があると言っています。とにかく、プラグインはコードバクラスを拡張し、特別なメソッドを実装します。そのクラスを拡張する予定の場合は、そのクラスを拡張してそれらのメソッドを実装し、それらの新しいファイルをそのプラグインxmlに再度追加する必要があります –

答えて

0

CleverTapのAndroidドキュメントによれば、独自のApplicationクラスを使用している場合は、クラス内のsuper.onCreate()の前にActivityLifecycleCallback.register(this);と電話することができます。

CleverTap Documentation - Advanced Topics - あなたは以下のリンクをチェックアウトすることができます詳細については

application.registerActivityLifecycleCallbacks(
     new android.app.Application.ActivityLifecycleCallbacks() { 

      @Override 
      public void onActivityCreated(Activity activity, Bundle bundle) { 
       CleverTapAPI.setAppForeground(true); 
       try { 
        CleverTapAPI.getInstance(application).event.pushNotificationEvent(activity.getIntent().getExtras()); 
       } catch (Throwable t) { 
        // Ignore 
       } 
       try { 
        Intent intent = activity.getIntent(); 
        Uri data = intent.getData(); 
        CleverTapAPI.getInstance(application).pushDeepLink(data); 
       } catch (Throwable t) { 
        // Ignore 
       } 
      } 

      @Override 
      public void onActivityStarted(Activity activity) { 
      } 

      @Override 
      public void onActivityResumed(Activity activity) { 
       try { 
        CleverTapAPI.getInstance(application).activityResumed(activity); 
       } catch (Throwable t) { 
        // Ignore 
       } 
      } 

      @Override 
      public void onActivityPaused(Activity activity) { 
       try { 
        CleverTapAPI.getInstance(application).activityPaused(activity); 
       } catch (Throwable t) { 
        // Ignore 
       } 
      } 

      @Override 
      public void onActivityStopped(Activity activity) { 
      } 

      @Override 
      public void onActivitySaveInstanceState(Activity activity, Bundle bundle) { 
      } 

      @Override 
      public void onActivityDestroyed(Activity activity) { 
      } 
     } 
); 

また、あなたがあなた自身の活動のライフサイクル・リスナーを使用したい場合は、次のコードを組み込むために、それを更新してください

CleverTap Documentation - Getting Started

関連する問題