3

Phonegap [Cordova 2.2] を使用して、Android の「リマインダー」アプリケーションに取り組んでいます。

ユーザーがリマインダーの特定の日付を入力すると、私は時間通りにユーザーに通知することになっています。

私は Android の Notification Plugin を使用していますが、以前のバージョンの phone gap をサポートしています。このチュートリアルに従って、cordova 2.2 と以前のものとの間の競合を解決しました。現在、多くの問題が修正されていますが、まだいくつかを修正できません。

    public PluginResult execute(String action, JSONArray optionsArr, String callBackId) {
    alarm = new AlarmHelper(cordova.getActivity());
    Log.d(PLUGIN_NAME, "Plugin execute called with action: " + action);

    PluginResult result = null;

    final AlarmOptions alarmOptions = new AlarmOptions();
    alarmOptions.parseOptions(optionsArr); 

この関数には、次の行に問題があります。

       public PluginResult execute(String action, JSONArray optionsArr, String callBackId) 

そして、それを次の行に置き換えると:

public boolean execute(String action, JSONArray optionsArr, CallbackContext callbackContext) {

エラーは修正されましたが、この関数で別のエラーが表示されます。

persistAlarm(alarmId, optionsArr);
        return this.add(daily, title, subTitle, ticker, alarmId, alarmOptions.getCal());
    } else if (action.equalsIgnoreCase("cancel")) {
        unpersistAlarm(alarmId);
        return this.cancelNotification(alarmId);
    } else if (action.equalsIgnoreCase("cancelall")) {
        unpersistAlarmAll();
        return this.cancelAllNotifications();
    }

    return result;
}

戻り値の型をブール値に変換できないので、どうすれば修正できますか?

アップデート:

戻り値の型をブール値に置き換えました。現在は次のようになっています。

    @Override
public boolean execute(String action, JSONArray optionsArr, CallbackContext callBackId) 
{
    Log.d(PLUGIN_NAME, "optionsArr: " + optionsArr.toString());
    alarm = new AlarmHelper(cordova.getActivity());
    Log.d(PLUGIN_NAME, "Plugin execute called with action: " + action);

//PluginResult result = null;
boolean result = true;

final AlarmOptions alarmOptions = new AlarmOptions();
alarmOptions.parseOptions(optionsArr);

/*
 * Determine which action of the plugin needs to be invoked
 */
String alarmId = alarmOptions.getNotificationId();
if (action.equalsIgnoreCase("add")) {
    final boolean daily = alarmOptions.isRepeatDaily();
    final String title = alarmOptions.getAlarmTitle();
    final String subTitle = alarmOptions.getAlarmSubTitle();
    final String ticker = alarmOptions.getAlarmTicker();
    persistAlarm(alarmId, optionsArr);
    this.add(daily, title, subTitle, ticker, alarmId, alarmOptions.getCal());
    callBackId.success();
    return true;
} 
else if (action.equalsIgnoreCase("cancel")) {
    unpersistAlarm(alarmId);
    this.cancelNotification(alarmId);
    callBackId.success();
    return true;
}
else if (action.equalsIgnoreCase("cancelall")) {
    unpersistAlarmAll();
    this.cancelAllNotifications();
    callBackId.success();
    return true;        
}
return result;
}

現在は動作していますが、通知をクリックしてもアプリケーションが開かず、通知が消えません...どうすれば修正できますか?

4

5 に答える 5

6

ローカル通知プラグインがついにコルドバ 2.2 で動作するようになりました :) 必要な変更は次のとおりです。

1) 交換する

import com.phonegap.api.Plugin;
import com.phonegap.api.PluginResult;

import org.apache.cordova.api.CordovaPlugin;
import org.apache.cordova.api.PluginResult;

2) 交換する

public PluginResult execute(String action, JSONArray optionsArr, String callBackId)

public pluginresult execute(String action, JSONArray args, CallbackContext callbackContext)

3) 追加

callbackContext.success();
return true;

また

return false; 

関数の戻り値の型として。

4) 交換する

this.ctx

cordova.getActivity()

5)追加

import yourapplication.name.R;

AlarmReceiver.Java

それだけです:)それが役立つことを願っています。

于 2012-12-09T11:57:52.537 に答える
2

Sana Joseph のコメントを含むファイル全体は、次の場所にあります。

https://github.com/Philzen/phonegap-plugins/tree/master/Android/LocalNotification

これを作成した後、https://github.com/olore/LocalNotificationsも見つけました。これにより、コルドバ プラグインストールも使用できます。

通知は作成され、これらのソリューションのいずれかを使用して正常に表示されますが、クリックしても何も起こりません:(アプリケーションが消えたり開いたりすることはありません。

私が見逃している可能性のある手がかりはありますか?

于 2013-01-10T02:54:14.510 に答える
2

それを「public boolean execute」関数に置き換え、成功時に追加します

callbackContext.success();
return true;

そして失敗した場合:

return false;
于 2012-12-06T17:12:50.247 に答える
1

callbackContext追加のデータを成功/エラー ハンドラに返すには、 your を使用する必要があります。戻り値はブール値でなければなりません。

于 2012-12-05T23:18:38.150 に答える
1

参考までに

変化する

LocalNotification extends Plugin

為に

LocalNotification extends CordovaPlugin

わたしにはできる

于 2013-07-23T16:21:18.770 に答える