6

私は Cordova アプリ (codova (3.4.0) を iOS で実行し、まもなく Android でも実行します。プッシュ通知が実装され、機能しています。プッシュ通知を介してアプリがいつ開始されたかを検出し、アプリケーションを右にリダイレクトするのに問題があります。ページ。

注: これは、アプリがバックグラウンドで実行されているときにプッシュ通知からアプリを起動することには関係ありません。アプリが完全に閉じているときのみ!

現在、次のワークフローがあります。

通常の起動:

  • cordova.js が ondeviceready イベントを発生させるのを待ちます。
  • ondeviceready イベントで、アプリのスタートアップ ビューにリダイレクトします (window.location.hash 経由)。

プッシュ通知からのコールド アプリ起動:

  • cordova.js が ondeviceready イベントを発生させるのを待ちます。
  • ondeviceready イベントで、アプリのスタートアップ ビューにリダイレクトします (window.location.hash 経由)。
  • プラグインが起動し、アプリで notificationreceived という JavaScript 関数をトリガーします
  • notificationreceived 関数では、プッシュ通知に基づいてビューにリダイレクトします

コールド アプリのスタートアップ シナリオがスタートアップ ビューに移動することがわかりますが、これは不要であり、ユーザーは最初のビューが読み込まれるまで待機し、再びリダイレクトされるだけです。

問題は、deviceready が起動したときに、私の JavaScript コードが今後のプッシュ通知をまだ認識していないことです。そのため、これを回避する方法を探しています。

deviceready cordova イベントに追加のパラメーターを渡す方法はありますか? または、この問題に取り組むための別のアイデアや解決策を誰かが持っていますか?

4

2 に答える 2

2

私はあなたが回避できると思います:

var coldstart = true;

// Update flag if app coldstart
document.addEventListener("pause", function() {
  coldstart = false;
}, false);
于 2014-12-29T14:43:31.317 に答える
1

私は最終的にこれを解決することができました。起動時、以下のメソッドのlaunchOptionsパラメータは、アプリがプッシュ通知から起動されたかどうかを示しているようです。

- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
{
...
}

上記の方法では、アプリの起動 URL を設定し、アプリがプッシュ通知から開始された場合は追加の URL パラメーターを提供します。だから私は今、私の問題を解決する次のシナリオを持っています:

  • ondeviceready イベントで、起動パラメーターを読み取ります。
  • アプリがプッシュ通知から開始された場合は、何もせず、プラグインが正しいビューにリダイレクトされるのを待ちます
  • アプリがプッシュ通知から起動されていない場合は、スタートアップ ビューにリダイレクトされます。

それが誰かを助けることを願っています。

于 2015-03-01T22:40:32.830 に答える