1

プッシュ通知の形式で、Web インターフェイスからデバイスに短いメッセージを送信できる単純なメッセージング システムを作成しました。

Androidでは、デバイスが通知を受信すると、配信確認の領収書がサーバーに送信され、確認が読み取られます。明らかに、アプリがバックグラウンドで実行されているか、電話がスリープ状態になっているときに配信確認が行われることがよくあります。

iOS用の同様のアプリを作成しました。アプリケーションがアクティブでない場合、didReceiveRemoteNotification が呼び出されないことに、私はどれほど驚きましたか。

アプリがアクティブでないときに、ユーザーの操作なしにメッセージ配信を追跡することは本当に不可能ですか? 他の人は、メッセージのログをサーバーに保持し、アプリが開いたときに送信することを提案していますが、これにはまだユーザーの操作が必要です.

バックグラウンド サービスに対する Apple の制限を回避する方法はありますか? バックグラウンドで簡単な POST リクエストを許可するために、どうにかしてアプリにサウンド サービスまたは位置情報サービスを使用させることはできますか?

4

5 に答える 5

3

iOS7 では、バックグラウンド フェッチでプッシュ通知を使用できます。これは、コンテンツ利用可能フラグが設定されたリモート通知です。ペイロードの例: {aps: {content-available: 1}}。この場合、iOS はアプリを起動します (いくつかの制限があります:ユーザーが強制終了した場合、iOS はアプリをバックグラウンドで起動しますか? を参照)。

アプリが起動してから 30 秒以内に、プッシュ通知の受信確認をサーバーに送信します。また、ターゲット バックグラウンド モードで「バックグラウンド フェッチ」機能を有効にし、AppDelegate を更新してこのメ​​ソッドを含める必要があります。

- (void)application: (UIApplication *)application didReceiveRemoteNotification: 
  (NSDictionary *)userInfo fetchCompletionHandler: 
  (void (^)(UIBackgroundFetchResult))completionHandler

したがって、これにはあなたの側で少し作業が必要です。

これが役立つことを願っています。

于 2014-08-20T20:49:42.150 に答える
0

バックグラウンド サービスの誤用は、アプリが拒否される良い方法です。Apple は、アプリがバックグラウンドでできることについてかなり厳格です。

ユーザーとして、インストールしたアプリが正当な理由もなくバックグラウンドで Web リクエストを行っていることがわかった場合、そのアプリはすぐに削除されます。

プッシュ通知は一方向のメッセージです。通知が配信されたという保証はありません。ここでAPNSについて読むことをお勧めします。

于 2013-03-07T20:33:22.093 に答える
0

アプリケーションがアクティブ状態でない場合、アプリケーション: didReceiveRemoteNotification メソッドは呼び出されません。

アプリケーションが非アクティブ状態のときに通知情報を追跡する場合は、次の手順に従います。

application didFinishLaunchingWithOptions: メソッドは、アプリケーションを開くたびに呼び出されます

このメソッドから、launchOptions と呼ばれる NSDictionary オブジェクトを取得しています。この launchOptions ディクショナリから、キー UIApplicationLaunchOptionsRemoteNotificationKey のディクショナリの形式で通知データを取得します

以下からコードを見つけます。

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
NSDictionary *remoteNotify = [launchOptions objectForKey: UIApplicationLaunchOptionsRemoteNotificationKey];
//Accept push notification when app is not open
if (remoteNotify)         // it is only true when you get the notification{
    // use the remoteNotify dictionary for notification data}}
于 2014-07-18T13:20:42.017 に答える
-3

http://cydia.saurik.com/package/backgrounder

ソースについては、Developers Page をクリックしてください。

りんごの方法ではない場合、方法はありません。

そこでジェイルブレイクの出番です。アプリをジェイルブレイクに対応させ、より多くの機能を活用する必要があるかもしれません。

あなたが探しているものについては、必要な方法で機能するバックグラウンダーの新しいバージョンを作成してください。

于 2013-03-07T20:33:12.967 に答える