科尔多瓦应用程序 - 多个应用程序Android:名称

问题描述:

我试图使用两个科尔多瓦插件,当然都需要安装应用程序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 –

根据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