Android
NativeScript

NativeScriptで作った自前クラスを特定のJavaパッケージにマッピングする

JavaクラスをExtendした自前クラスをTypeScriptで定義し、それを指定の名前空間(パッケージ)のJavaクラスとして宣言する方法。あまり需要はないかもしれませんが、TypeScriptでのサンプルが公式でも不足しており、実装時に意外にハマったので、備忘です。

@JavaProxy("xxx.MyFirebaseInstanceIDService")
export class MyFirebaseInstanceIDService extends com.google.firebase.iid.FirebaseInstanceIdService {

    constructor(){
        super();
        return global.__native(this);
    }
}

@JavaProxy が良い仕事をしてくれます。
constructorの実装はNativeScript+TypeScriptでネイティブのクラスを継承したときのお約束。

なお、上のコードは自前でFirebaseのプッシュを実装しようとしたときの例です。このクラスをAndroidManifest.xmlのServiceに定義して呼び出すことはできましたが、もう一つの必須クラスである、FirebaseMessagingServiceを継承したクラスをインスタンス化するのが上手く行かず、断念しました。