I'm trying to develop a Nativescript plugin for integrating Fabric Digits. At first, following the Digits tutorial I have edited the platform/android/include.gradle like they said (also adding my API_KEY in the platform/android/AndroidManifest.xml).
Since, this did not work, I found and manually added digits.aar, twittercore.aar and fabric.aar (the digits library plus its dependencies) into my plugin platform/android directory.
My plugin index.android.js is the following
"use strict";
var application = require("application");
module.exports = {
authenticateUser: function () {
try {
var Digits = com.digits.sdk.android;
var success = function(session, phone) {
console.log("autentication success", session, phone);
};
var error = function(err) {
console.log("autentication success", err);
};
var TwitterConfig = com.twitter.sdk.android.core.TwitterAuthConfig;
var TwitterCore = com.twitter.sdk.android.core.TwitterCore;
var Fabric = io.fabric.sdk.android.Fabric;
var cf = new TwitterConfig("KEY", "SECRET")
Fabric.with(application.android.context, [new TwitterCore(cf), new Digits.Digits.Builder().build()]);
var callback = new Digits.AuthCallback({success:success, failure:error});
} catch(err2) {console.log("err22", err2)}
}
}
The app in which I want to use my plugin, defines a simple button that, once tapped, should call my authenticateUser function:
import { Component } from "@angular/core";
var Digits = require("nativescript-digits");
@Component({
selector: "my-app",
templateUrl: "app.component.html",
})
export class AppComponent {
public counter: number = 16;
public get message(): string {
if (this.counter > 0) {
return this.counter + " taps left";
} else {
return "Hoorraaay! \nYou are ready to start building!";
}
}
public onTap() {
this.counter--;
var k = new Digits();
k.authenticateUser();
}
}
However, tapping on the button, it gives me the following error:
Error: java.lang.NoClassDefFoundError: com.digits.sdk.android.DigitsSessionVerifier$VerificationCallback
JS: com.digits.sdk.android.DigitsSessionVerifier.<init>(DigitsSessionVerifier.java:34)
JS: com.digits.sdk.android.Digits.onPreExecute(Digits.java:265)
JS: io.fabric.sdk.android.InitializationTask.onPreExecute(InitializationTask.java:44)
JS: io.fabric.sdk.android.services.concurrency.AsyncTask.executeOnExecutor(AsyncTask.java:611)
JS: io.fabric.sdk.android.services.concurrency.PriorityAsyncTask.executeOnExecutor(PriorityAsyncTask.java:43)
JS: io.fabric.sdk.android.Kit.initialize(Kit.java:69)
JS: io.fabric.sdk.android.Fabric.initializeKits(Fabric.java:439)
JS: io.fabric.sdk.android.Fabric.init(Fabric.java:383)
JS: io.fabric.sdk.android.Fabric.setFabric(Fabric.java:341)
JS: io.fabric.sdk.android.Fabric.with(Fabric.java:312)
JS: com.tns.Runtime.callJSMethodNative(Native Method)
JS: com.tns.Runtime.dispatchCallJSMethodNative(Runtime.java:1022)
JS: com.tns.Runtime.callJSMethodImpl(Runtime.java:907)
JS: com.tns.Runtime.callJSMethod(Runtime.java:895)
JS: com.tns.Runtime.callJSMethod(Runtime.java:879)
JS: com.tns.Runtime.callJSMethod(Runtime.java:871)
JS: com.tns.gen.android.view.View_OnClickListener.onClick(android.view.View$OnClickListener.java)
JS: android.view.View.performClick(View.java:5201)
JS: android.view.View$PerformClick.run(View.java:21163)
JS: android.os.Handler.handleCallback(Handler.java:746)
JS: android.os.Handler.dispatchMessage(Handler.java:95)
JS: android.os.Looper.loop(Looper.java:148)
JS: android.app.ActivityThread.main(ActivityThread.java:5443)
JS: java.lang.reflect.Method.invoke(Native Method)
JS: com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
JS: com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
Does anyone know why?
Thanks.