タグ付けされた質問 「uiapplicationdelegate」

7
applicationWillEnterForeground対applicationDidBecomeActive、applicationWillResignActive対applicationDidEnterBackground
アプリケーションがバックグラウンドにあることからウェイクアップしていて、アプリケーションをアクティブにする準備をしたい場合に実装する適切なデリゲートはどれですか? applicationWillEnterForeground対applicationDidBecomeActive-違いは何ですか? アプリケーションがスリープ状態になり、データをクリーンアップして保存する準備をしたいときに実装する適切なデリゲートはどれですか。 applicationWillResignActive対applicationDidEnterBackground-違いは何ですか? また、着信SMSまたは通話が着信したときにapplicationWillResignActiveが呼び出されますが、ユーザーが[OK]をクリックして続行することを選択したことにも気付きました。このような場合、アプリでアクションを実行したくありません。ユーザーがアプリを終了しなかったため、中間的なクリーンアップを行わずに実行を継続したいだけです。したがって、applicationDidEnterBackgroundだけでクリーンアップ作業を行う方が理にかなっていると思います。 起床してスリープ状態にするために実装するデリゲートを選択し、SMS /通話によって中断されるようなイベントを検討する際に従うべきベストプラクティスについてのご意見をお待ちしています。 ありがとう


7
applicationDidBecomeActiveの処理-「ビューコントローラーがアプリがアクティブになるのにどのように応答できるか」
私が持っているUIApplicationDelegateと、私のメインAppDelegate.mクラスでプロトコルをapplicationDidBecomeActive定義した方法。 アプリケーションがバックグラウンドから戻ったときにメソッドを呼び出したいのですが、メソッドが別のビューコントローラーにあります。applicationDidBecomeActiveメソッドに現在表示されているビューコントローラーを確認し、そのコントローラー内のメソッドを呼び出すにはどうすればよいですか?

26
アプリがプッシュ通知から起動/開かれたかどうかを検出します
アプリがプッシュ通知から起動/開かれたかどうかを知ることは可能ですか? 起動イベントはここでキャッチできると思います: - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { if (launchOptions != nil) { // Launched from push notification NSDictionary *notification = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey]; } } しかし、アプリがバックグラウンドにあるときにプッシュ通知から開かれたことをどのように検出できますか?

3
終了/中断されたときの重要な変更場所APIの動作?
これは、startMonitoringSignificantLocationChangesを使用したアプリの動作を説明するCLLocationManagerドキュメントのセクションです。 このサービスを開始した後でアプリケーションが終了した場合、新しいイベントが到着すると、システムは自動的にアプリケーションをバックグラウンドで再起動します。このような場合、アプリケーションデリゲートのapplication:didFinishLaunchingWithOptions:メソッドに渡されるオプションディクショナリには、場所イベントのためにアプリケーションが起動されたことを示すキーUIApplicationLaunchOptionsLocationKeyが含まれています。再起動しても、ロケーションマネージャオブジェクトを設定し、このメソッドを呼び出してロケーションイベントの受信を継続する必要があります。位置情報サービスを再起動すると、現在のイベントがすぐにデリゲートに配信されます。さらに、ロケーションサービスを開始する前でも、ロケーションマネージャーオブジェクトのロケーションプロパティには最新のロケーションオブジェクトが入力されています。 私の理解では、アプリの終了は、(あなたが呼び出していない場合、私が想定した場合ということですので、stopMonitoringSignificantLocationChangesをからapplicationWillTerminate)あなたが覚めてしまいますUIApplicationLaunchOptionsLocationKeyのにパラメータdidFinishLaunchingWithOptions:アプリケーション。その時点でCLLocationManagerを作成し、startMonitoringSignificantLocationChangesを呼び出して、バックグラウンドでの位置処理を限られた時間実行します。だから私はこのビットで大丈夫です。 前の段落では、アプリが終了したときに何が起こるかについてのみ述べており、アプリケーションが一時停止したときに何をするかを示唆していません。didFinishLaunchingWithOptionsのドキュメントには次のように書かれています。 アプリケーションは、バックグラウンドで位置の更新を追跡し、パージされ、現在は再起動されています。この場合、ディクショナリには、新しい場所イベントのためにアプリケーションが再起動されたことを示すキーが含まれています。 終了後、(場所の変更により)アプリが起動された場合にのみこの通話を受信することを提案します。 しかし、上の段落の大幅な変更サービスにおける位置認識プログラミングガイドが言うには、以下のい: このサービスを実行したままアプリケーションを一時停止または終了した場合、新しい位置データが到着すると、サービスによってアプリケーションが自動的に起動します。ウェイクアップ時に、アプリケーションはバックグラウンドに置かれ、位置データを処理するために少し時間が与えられます。アプリケーションはバックグラウンドにあるため、最小限の作業を行い、割り当てられた時間が経過する前にアプリケーションが戻るのを妨げる可能性のあるタスク(ネットワークのクエリなど)を回避する必要があります。そうでない場合、アプリケーションが終了する可能性があります。 これは、アプリが一時停止されている場合は位置データで目覚めていることを示していますが、どのように起きているかについては言及していません。 んUIApplicationDelegateは、私がバックグラウンド状態にサスペンド状態から再開していますことを私に言って、コールバックを取得しますか? (アプリが中断されたときにフリーズドライされた)ロケーションマネージャーは、locationManager :didUpdateToLocation:fromLocationコールバックの受信を開始しますか? アプリケーションの状態をチェックし、バックグラウンドモードの場合に最小限の処理を行うコードをdidUpdateToLocationメッセージに実装するだけでよいですか? これを書いている最中、私は自分の質問に答えたばかりかもしれないと思いますが、これについての私の理解をより知識のある誰かに確認してもらうと素晴らしいでしょう。

10
AppDelegateからストーリーボードの別の場所から条件付きで開始する
ストーリーボードに、有効なログインとメインビューコントローラーを設定しました。後者は、ログインが成功したときにユーザーが移動するビューコントローラーです。私の目的は、認証(キーチェーンに格納されている)が成功した場合はメインビューコントローラをすぐに表示し、認証が失敗した場合はログインビューコントローラを表示することです。基本的に、私はこれをAppDelegateで実行したいと思います。 // url request & response work fine, assume success is a BOOL here // that indicates whether login was successful or not if (success) { // 'push' main view controller } else { // 'push' login view controller } 私はメソッドperformSegueWithIdentifierについて知っています。ただし、このメソッドはUIViewControllerのインスタンスメソッドであるため、AppDelegate内から呼び出すことはできません。既存のストーリーボードを使用してこれを行うにはどうすればよいですか? 編集: Storyboardの最初のビューコントローラは、何にも接続されていないナビゲーションコントローラになりました。MainIdentifierはUITabBarControllerであるため、setRootViewController:の区別を使用しました。それからこれは私の線がどのように見えるかです: - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { BOOL …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.