Android 用の mono を使用してアプリを開発しており、プッシュ通知を機能させるのに苦労しています。Urban Airship を使用しています。
これまでのところ、TakeOff() と EnablePush() を呼び出すことができ、アプリは正常に登録されています。次のコードを参照してください。
//_____________________________
// Get the airship config class
IntPtr ip_airshipConfigOptions = JNIEnv.FindClass("com/urbanairship/AirshipConfigOptions");
if (ip_airshipConfigOptions == IntPtr.Zero)
{
throw new InvalidOperationException("Counldn't find java class !");
}
//__________________________________________________
// Get the loadDefaults method from the config class
IntPtr methodId = JNIEnv.GetStaticMethodID(ip_airshipConfigOptions, "loadDefaultOptions", "(Landroid/content/Context;)Lcom/urbanairship/AirshipConfigOptions;");
if (methodId == IntPtr.Zero)
{
throw new InvalidOperationException("Couldn't find java class !");
}
//________________________________________________________________
// Call the loadDefaultOptions method passing in this app instance
var methodPtr = JNIEnv.CallStaticObjectMethod(ip_airshipConfigOptions, methodId, new JValue(this));
//________________________
// Get the UAirship class
IntPtr ip_uairship = JNIEnv.FindClass("com/urbanairship/UAirship");
if (ip_uairship == IntPtr.Zero)
{
throw new InvalidOperationException("Couldn't find java class !");
}
//___________________________________________
// Get takeOff method with configoption param
IntPtr methodId2 = JNIEnv.GetStaticMethodID(ip_uairship, "takeOff", "(Landroid/app/Application;Lcom/urbanairship/AirshipConfigOptions;)V");
//______________________________________________
// Get takeOff method without configoption param
//IntPtr methodId3 = JNIEnv.GetStaticMethodID(ip_uairship, "takeOff", "(Landroid/app/Application;)V");
//___________________________________________________________________________________________
// Call UAirship.takeOff(this, options). Not sure if these parameters are specified correctly
JNIEnv.CallStaticVoidMethod(ip_uairship, methodId2, new JValue(this), new JValue(methodPtr));
//________________________________________
// Enable Push in Urban Airship Pushmanager
IntPtr ip_pushmanager = JNIEnv.FindClass("com/urbanairship/push/PushManager");
IntPtr ip_enablePush = JNIEnv.GetStaticMethodID(ip_pushmanager, "enablePush", "()V");
JNIEnv.CallStaticVoidMethod(ip_pushmanager, ip_enablePush);
PushManager.shared().setIntentReciever(myClass) を呼び出す必要がありますが、shared() クラスまたは setIntentReciever メソッドにアクセスできないようです。メソッドにアクセスするためにさまざまな組み合わせを試しましたが、クラス/メソッドが見つからないという例外が発生し続けます。
//IntPtr ip_setReciver = JNIEnv.GetStaticMethodID(ip_PushManager, "shared().setIntentReceiver", "(Landroid/app/Class)V");
これに関する任意の助けをいただければ幸いです! 1行で解決できると確信しています。構文に何かが欠けているだけだと思います。
よろしく