0

我試圖使用兩個科爾多瓦插件,當然都需要安裝應用程序Android:名稱。科爾多瓦應用程序 - 多個應用程序Android:名稱

插件: https://github.com/CleverTap/clevertap-cordovahttps://github.com/taivo/parse-push-plugin

按照其他類似的帖子中,我創建了一個MainApplication文件,並試圖將兩個插件擴展到新的公共類。我是業餘愛好者,所以我確信自己做錯了什麼,因爲我在嘗試構建時收到以下錯誤消息。

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

好吧,錯誤說你需要在不同的文件中聲明每個類,無論如何,插件擴展了cordova類並實現了特殊的方法。所以,如果你打算擴展這些類,我的猜測是你需要擴展這個類並實現這些方法,並再次將這些新文件添加到該插件xml –

回答

0

根據CleverTap Android文檔,如果您使用的是您自己的應用程序類,則可以在您的課程中您的super.onCreate()之前撥打ActivityLifecycleCallback.register(this);

此外,如果你想使用自己的活動週期監聽器,請更新它包含以下代碼:

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 - Advanced Topics

CleverTap Documentation - Getting Started

相關問題