3

UrbanAirship を使用して iOS アプリを開発しようとしています。プッシュ通知を受け取りますが、アプリがバックグラウンドにあるときにデリゲートを呼び出すことができません。私は (間違っているようですが) UAPushNotificationDelegate クラスの handleBackgroundNotification API が、アプリがバックグラウンドにあるときに通知を受信したときにカスタム アクションを実行する機能を提供すると想定していました。

これは彼らのドキュメントが言うことです: "handleBackgroundNotification:

アプリケーションがバックグラウンドにあるときにプッシュ通知を受信すると呼び出されます

- (void)handleBackgroundNotification:(NSDictionary *)notification

パラメーター

通知

the push notification

" - https://docs.urbanairship.com/ios-lib/Classes/UAPushNotificationHandler.html#//api/name/handleBackgroundNotificationを参照してください:

そのようには機能していないようです-確かにOSはそれ自体の通知を保持しているようです-これはAppleのドキュメントと一致しています。

OSで許可されていない場合、関数の目的を疑問視しています。リモート プッシュ通知を受信するために didReceiveRemoteNotification を使用しますが、これは問題なく機能します。

ただし、これはエンタープライズ アプリケーション (つまり、App Store ではない) であるため、これを可能にするプライベート APÏs とフレームワークがあれば、助けていただければ幸いです。このアプリがアプリ ストアに登場する可能性はありません。

私が実行しようとしているカスタムアクションには、たとえば、受信者アプリが実際に通知を受信したことを「証明」し、最大音量でカスタムサウンドを再生するサーバーに送信される通知受信が含まれます(無音をバイパスし、モードを邪魔しないでください) . これらはクライアントからのいくつかの要件です。

4

2 に答える 2

1

これは私が使用しているものであり、うまく機能しています:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
    if(!loggedIn) return;

    NSLog(@"WOW: got notification! %@", userInfo);

    // see this for fine tuning: http://fivelakesstudio.blogspot.com/2012/04/push-notifications-and-urban-airship.html
    [[UAPush shared] handleNotification:userInfo applicationState:application.applicationState];
    [[UAPush shared] resetBadge];

    sharedApplication.applicationIconBadgeNumber = 0;   // probably redundant

    [self handlePushNotification:userInfo isBooting:NO]; // my common handler
}
于 2012-11-14T17:56:53.810 に答える
0
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
UA_LINFO(@"Application received remote notification: %@", userInfo);
[[UAPush shared] appReceivedRemoteNotification:userInfo applicationState:application.applicationState fetchCompletionHandler:completionHandler];

NSDictionary *values = [userInfo objectForKey:@"aps"];
NSString *title = [values objectForKey:@"alert"];

}

このブロック内のすべての状態について受信した通知を処理します。注意。application.applicationState 値を監視して、通知を受信したときのアプリの状態を確認できます。お役に立てれば

于 2014-12-05T08:11:42.400 に答える