J'essaye de crée une extension native pour IOS et ANDROID en suivant les tutoriels offerts par Nathan Weber et dont vous pourrez trouver le lien ICI.
Mon projet est très simple, je voudrais tout simplement créer une ANE me permettant de récuperer les "Advertising ID" sur Android et IOS. Pour le coté AS3 j'utilise Flash Builder, pour le coté JAVA j'utilise Android Studio.
Concernant la structure de l'ANE, je n'ai pas trop de soucis, l'as3 communique bien avec le code natif en java, java renvoie des "StatusEvents" et l'as3 les recoit parfaitement. Cependant, je me heurte a un sacré problème lorsqu'il s'agit de récuperer l'Advertising ID du coté de Java. Je ne sais pas comment debugger une extension java sur Android Studio et j'avance a tatons sans trop comprendre pourquoi mon code ne fonctionne pas.
Vous trouverez ci-joint un zip file contenant l'ensemble de mon projet. L'erreur semble venir du projet Android, classe TaskGetAdvertisingID, ligne 27 lors de l'appel de AdvertisingIdClient.
Voici une copie du script en cause :
package com.doodahprod.www.easyidfaextension;
import android.os.AsyncTask;
import com.adobe.fre.FREContext;
import com.google.android.gms.ads.identifier.AdvertisingIdClient;
import com.google.android.gms.common.GooglePlayServicesNotAvailableException;
import com.google.android.gms.common.GooglePlayServicesRepairableException;
import java.io.IOException;
public class TaskGetAdvertisingID extends AsyncTask<Void, Void, Void>
{
public static FREContext extensionContext;
public TaskGetAdvertisingID(FREContext c)
{
extensionContext = c;
}
@Override
protected Void doInBackground(Void ... params)
{
try
{
AdvertisingIdClient.Info adInfo = AdvertisingIdClient.getAdvertisingIdInfo(extensionContext.getActivity().getApplicationContext());
String adId = (adInfo != null) ? adInfo.getId() : null;
extensionContext.dispatchStatusEventAsync("IDENTIFIER_RESPONSE", "NEW : " + adId);
// Use the advertising id
}
catch (IOException | GooglePlayServicesRepairableException | GooglePlayServicesNotAvailableException exception)
{
extensionContext.dispatchStatusEventAsync("IDENTIFIER_RESPONSE", "ERROR : " + exception.getMessage());
}
return null;
}
@Override
protected void onPostExecute(Void v)
{
}
}
Merci pour votre aide.