1

少し問題が発生しています。私のソフトウェアは、アプリケーションがバックグラウンドにあることを認識して、サーバーから切断し、プッシュ通知の受信を開始する必要があります。

そのために、UIApplicationDelegate のメソッドを使用します。

- (void)applicationWillResignActive:(UIApplication *)application
- (void)applicationDidEnterBackground:(UIApplication *)application
- (void)applicationWillEnterForeground:(UIApplication *)application
- (void)applicationDidBecomeActive:(UIApplication *)application
- (void)applicationWillTerminate:(UIApplication *)application

問題は、ジェイルブレイクされたデバイスがバックグラウンダーと呼ばれる「微調整」を使用している場合、アプリケーションが強制的にアクティブのままになり、バックグラウンドに移行しない場合、ホームボタンをクリックしても UIApplicationDelegate のメソッドが呼び出されないことです。

問題は、SSL で接続された各クライアントが、サーバー上で大量のメモリを消費することです。デバイスがジェイルブレイクされていてもかまいませんし、実際のところ、アプリケーションはデバイス上で無期限に実行されます。しかし、アプリケーションが画面に表示されなくなったらサーバーから切断してもらいたいのですが、バックグラウンダーがインストールされているときにそのような操作を通知する方法が見つからないようです。

解決策の発見投稿で自分の答えを確認してください

4

3 に答える 3

2

脱獄犯があなたのアプリケーションを終了させなければならないように、大量のメモリを消費するのが最善の方法です! もちろん冗談です。最良のオプションは、ユーザー側で非アクティブになるのを待つことです。例: 1. デバイスがジェイルブレイクされているかどうかを確認します。2. バックグラウンダーがインストールされているかどうかを確認します (これができるかどうかはわかりませんが、できると確信しています)。3. ユーザーがこれらすべてのことを行っている場合は、ユーザーが非アクティブになるまで、たとえば 30 秒間待機してから、サーバーから切断します。

于 2012-06-06T14:27:16.247 に答える
1

バックグラウンダーがインストールされている場合、またはアプリがバックグラウンドに移行する場合にのみ、これらのメソッドがアプリでまったく呼び出されませんか? それらがまったく呼び出されない場合、解決策は非常に簡単です。たとえば、アプリのapplication:didFinishLaunchingWithOptionsメソッドが呼び出されたときに10秒のタイマーを設定し、そのタイマーが期限切れになったときに、applicationDidBecomeActive:呼び出されていない場合は、ユーザーがバックグラウンダーを使用しています。

ただし、アプリの起動時に呼び出されると、事態はさらに複雑になります。Backgrounder のような微調整がサンドボックス内からインストールされているかどうかを検出する直接的な方法は知りません。デバイスがジェイルブレイクされているかどうかを確認するだけで (これを行うにはいくつかの方法があり、簡単に見つけることができます)、サーバー接続のタイムアウト期間を追加することができます。

于 2012-06-14T06:50:02.187 に答える
0

ミルクティーは私を正しい道に導いてくれた...だから賞金は彼に行く.

しかし、実際にはより良い解決策を見つけました...アプリを辞任するときにスローされるすべての通知を確認しました...

アプリを開いたままにするようにバックグラウンダーが構成されていても、これらの通知がスローされます。

UIApplicationSuspendedEventsOnlyNotification -- When going into background
UIApplicationResumedEventsOnlyNotification   -- When going into foreground

これは理にかなっています。バックグラウンダーを使用していても、たとえば回転の変更 (またはシェイク) がアプリの外部で行われたときに、アプリがイベント通知を受信し続けるのは悪い考えだったからです。iPhoneを動かすたびに、すべてのアプリがバックグラウンドで回転していると想像できますか?

于 2012-06-14T14:04:16.203 に答える