4

毎晩午前 1 時または 2 週間ごとに同期を開始する必要があります。iOSでこれをどのように達成しますか? 私のアプリケーションが現時点で私に思い出させることができ、私のアプリはその特定の言及された時間に思い出させるべきであるとiOSに言うことができる方法はありますか?

4

4 に答える 4

3

バックグラウンド フェッチは、OS ( iOS 7 以降) が、バックグラウンドで操作を実行するように要求したアプリに提供する機会ですが、タイミングの決定は OS に任せます。OS は、ユーザーによるアプリの使用状況を学習した後、バックグラウンドでアプリ (実際にはハンドラー メソッド) を静かに起動します。

機能の使い方:現在、この機能はiOS7で導入されており、ソーシャルメディア、新聞などの毎日/頻繁/重いコンテンツ更新アプリの使いやすさを向上させます。

- これは、満たされることが保証されていない単なる要求ですが、ユーザー エクスペリエンスを向上させるための基盤となる OS の試みです)

コーディング/実装の観点から、主に 2 ~ 3 の重要なステップがあります。

A)属性をオンBackground Modesにします ( [App Target] > [Capabilities] > [Background Modes] > [Background Fetch] を選択します) 。Background Fetchここに画像の説明を入力

B)このアプリデリゲートメソッドを実装します-

- (void)application:(UIApplication *)application performFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler NS_AVAILABLE_IOS(7_0);

C) 取得間隔を定義します。通常はアプリの起動時です。つまり、appDidFinishLaunchingWithOptions です。

[[UIApplication sharedApplication] setMinimumBackgroundFetchInterval:UIApplicationBackgroundFetchIntervalMinimum];

OSが自動的に発火するイベントなので、開発中にこの動作をテストする方法 -

XCode 5+でメニュー[デバッグ] > [バックグラウンド フェッチをシミュレート] を使用して、アプリのバックグラウンド フェッチ動作をシミュレート/テストできます。

ここに画像の説明を入力

サンプルプロジェクトを含むチュートリアルへのリンクは次のとおりです。

また、Apple の WWDC 2013 ビデオ - What's New with Multitaskingからセッション 204 をチェックアウトすることもできます。

編集 -

今日(iOS 7.0.3)の時点で、適切な公式ドキュメントがないため、実際の使用法は次のことを示しています-

  1. 適用される minimumBackgroundFetchInterval は 5 ~ 15 分未満です (それ未満の値は無視されます)。
  2. デバイスがロックされている場合、バックグラウンド フェッチは行われません。
  3. バックグラウンド フェッチは、ユーザーがデバイスのロックを解除した直後にトリガーされます。

ただし、今後のバージョンでは、この機能が強化され、開発者/ユーザーにより多くの力が与えられると思います.

于 2013-11-13T15:36:12.867 に答える
1

使用できますNSLocalNotification。例を参照してください(ここから取得):

UILocalNotification *notification = [[UILocalNotification alloc] init];

// Activate in 5 segundos
notification.fireDate = [[NSDate alloc] initWithTimeIntervalSinceNow:5];

// message to show 
notification.alertBody = self.nameTextField.text;

// default sound
notification.soundName = UILocalNotificationDefaultSoundName;

// button title
notification.alertAction = @"Ahora te lo cuento";
notification.hasAction = YES;

// activa la notificación
[[UIApplication sharedApplication] scheduleLocalNotification:notification];

ポイントは、ローカル通知が発生したときの動作がアプリケーションの状態に依存することです。アプリがフォアグラウンドで実行されている場合は、通知をサイレントに処理できます。ただし、アプリが実行されていない場合、またはバックグラウンドで実行されている場合は、ユーザーの操作が必要です。

于 2013-11-12T15:41:30.203 に答える