Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
NativeScript Angular-如何添加android服务来处理通知?(java.lang.RuntimeException:无法实例化服务)_Android_Firebase_Nativescript_Nativescript Angular - Fatal编程技术网

NativeScript Angular-如何添加android服务来处理通知?(java.lang.RuntimeException:无法实例化服务)

NativeScript Angular-如何添加android服务来处理通知?(java.lang.RuntimeException:无法实例化服务),android,firebase,nativescript,nativescript-angular,Android,Firebase,Nativescript,Nativescript Angular,我试图创建一个用于处理Firebase消息的android服务(该库不允许我在后台使用仅数据消息),但我似乎无法使该服务正常运行。具体来说,当收到通知时(有时当应用程序启动时),我会收到以下异常情况: 我的服务在TypeScript中定义如下: @JavaProxy('com.tns.services.CustomFCMService')) 类CustomFCMService extends(com.google,如有)。firebase.messaging.FirebaseMessagingS

我试图创建一个用于处理Firebase消息的android服务(该库不允许我在后台使用仅数据消息),但我似乎无法使该服务正常运行。具体来说,当收到通知时(有时当应用程序启动时),我会收到以下异常情况:

我的服务在TypeScript中定义如下:

@JavaProxy('com.tns.services.CustomFCMService'))
类CustomFCMService extends(com.google,如有)。firebase.messaging.FirebaseMessagingService{
构造函数(){
超级();
}
公共init(){
/*无所事事*/
}
公共onMessageReceived(消息:任意){
this.super.onMessageReceived(消息);
/*处理邮件接收*/
}
}
我还添加并更改了以下我的网页文件(如果需要,我可以提供文件的其余部分):

//在此处添加自定义活动、服务和其他Android应用程序组件。
常量appComponents=[
“tns核心模块/ui/frame”,
“tns核心模块/ui/frame/activity”,
解析(uu dirname,'src/app/core/android/custom fcm service')/*我的自定义服务*/
];
最后,我将以下内容添加到我的
AndroidManifest.xml
(在
应用程序
标记中):


我尝试过在
AndroidManifest
、服务文件和网页包配置中更改各种内容,但似乎无法使其正常工作


谢谢

我找到了解决问题的办法。我的自定义服务中似乎存在错误代码:

public init(){
/*无所事事*/
}
删除该方法完全解决了我上面遇到的问题


似乎有一个默认的
init
方法,该方法具有一些重要的实现细节,例如向实例注册对象ID。我注意到,当我声明该方法时,我不仅没有调用它的
super
版本,而且在输出的.java文件的构造函数中也添加了对该方法的调用(没有
init
声明,该文件是不存在的)。似乎这两种效应的某种结合导致了上述例外

您的编译器目标是ES6或ES5?当前
ES5
。我刚刚把它改为
es6
,得到了同样的结果。ES5应该可以。当你在Android中编写构造函数时,你必须编写一个返回语句,如
return global.\uu native(这)。它也应该是
super.onMessageReceived(message),无需
。如果问题仍然存在,请告诉我。我添加了
returnglobal.\uuu native(此)以及在
onMessageReceived
方法中删除了
this
,但问题仍然存在。
System.err: java.lang.RuntimeException: Unable to instantiate service com.tns.services.CustomFCMService: com.tns.NativeScriptException: Cannot find object id for instance=com.tns.services.CustomFCMService@5a4269d
System.err:     at android.app.ActivityThread.handleCreateService(ActivityThread.java:3940)
System.err:     at android.app.ActivityThread.access$1500(ActivityThread.java:219)
System.err:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1875)
System.err:     at android.os.Handler.dispatchMessage(Handler.java:107)
System.err:     at android.os.Looper.loop(Looper.java:214)
System.err:     at android.app.ActivityThread.main(ActivityThread.java:7356)
System.err:     at java.lang.reflect.Method.invoke(Native Method)
System.err:     at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)