2016-07-18 7 views
0

私は起動するたびにWebサーバーからデータを取得するためのメソッドを使用しているアプリを持っています。 リモートデータに更新があった場合にのみ、データがフェッチされます。ios(Objective-C)でデータをフェッチして更新する方法

アプリが真夜中にfetchメソッドを実行する方法はありますか?アプリがアクティブでない場合は、この通知が掲載されることを期待することはできませんので、

+0

iOSでは、毎晩午前0時にメソッドを実行する方法はありません。 iOSが持っている最も近いものは、Igorが議論したバックグラウンドフェッチですが、OSが選択した時点で実行されています。 http://stackoverflow.com/a/31577935/1271826またはhttp://stackoverflow.com/a/30944715/1271826 – Rob

+0

を参照してください。アプリが非実行モードでも行うことができるサイレント通知を使用してサイレント通知を使用できます。自動的にアプリを起動し、必要なときにデータを取得できます。 –

答えて

1

、しかし

NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(self.fetchData), name: NSCalendarDayChangedNotification, object: nil) 

この通知を追加し、アプリがサンドボックス化されていることに注意してください。ただし、文書によれば

日時が変更されるとデバイスがスリープ状態になると、この通知は起床時に通知されます。デバイスが複数日眠っている場合は、起床時に1つの通知のみが表示されます。

少なくとも、これは毎日保証された通話であることがわかります。

+0

これはiOSに関する質問でした。しかし、これはmacOSの答えのように見えます。これはiOSには関係ありません。 – Rob

+0

@Rob、これは私がiOS用ソーシャルネットワークアプリのためにやったことです、私はmacOSでこれまでに開発したことはありません。申し訳ありません – Happiehappie

+0

OK。すべてのiOSアプリがサンドボックス化されているため、「あなたのアプリがサンドボックス化されているかどうか」というコメントからあまり推測されませんでした。要するに、ユーザーが次回にアプリを起動するまでは、実際の目的では何もしないということです。私はこれがOPの質問にどのように対処しているのか見ていないと思います。 – Rob

1

バックグラウンドフェッチAPIが特別に作成されました。あなたはそれについて学ぶことができますdocsまたはtutorial

関連する問題