15

アラートを表示したり、アプリを開いたりせずにバッジの番号を更新する方法はありますか?

アイコンバッジに現在の未読メッセージの数を常に表示するアプリを作成していますが、ユーザーにアラートを表示せずに表示したいと考えています。

私はiOS 5.0+用に開発しています。

編集:より明確にするために、アプリが実行されていないときにこれを行う方法について質問しています。サーバーがアラートを表示せずに新しいバッジ番号をプッシュするようにしたい..これは可能ですか?

4

4 に答える 4

27

あなたはそれを行うことができます。アラートなしでプッシュ通知を送信することができます。バッジ通知だけを目的としてアプリケーションを登録することもできます。この場合、プロバイダー サーバーはアラートやサウンドを送信することさえできません。

通知ペイロード

各プッシュ通知にはペイロードが含まれています。ペイロードは、クライアント アプリケーションへのダウンロードを待機しているデータをユーザーに通知する方法を指定します。通知ペイロードに許可される最大サイズは 256 バイトです。Apple Push Notification Service は、この制限を超える通知を拒否します。通知の配信は「ベスト エフォート」であり、保証されないことに注意してください。

通知ごとに、プロバイダーは RFC 4627 に厳密に準拠する JSON 辞書オブジェクトを構成する必要があります。この辞書には、キー aps によって識別される別の辞書が含まれている必要があります。aps ディクショナリには、次のアクションを指定する 1 つ以上のプロパティが含まれています。

ユーザーに表示する警告メッセージ

アプリケーション アイコンにバッジを付ける番号

再生するサウンド

と書かれていることに注意してくださいone or more of the properties。alert プロパティはオプションです。空のaps辞書を使用して通知を送信することもできます (つまり、カスタム プロパティのみを送信します)。

例 5. 次の例は、空の aps ディクショナリを示しています。バッジ プロパティがないため、アプリケーション アイコンに表示されている現在のバッジ番号はすべて削除されます。acme2 カスタム プロパティは、2 つの整数の配列です。

{

    "aps" : {

    },

    "acme2" : [ 5,  8 ]

}

ユーザーに表示される唯一のアラートは、プッシュ通知を許可するかどうかを尋ねるアラートです。そのアラートは、インストール後にアプリを初めて起動したときにのみ表示されます。

この例では、非アラート通知 (バッジとサウンドのみ) に登録します。

Listing 2-3  Registering for remote notifications

- (void)applicationDidFinishLaunching:(UIApplication *)app {

   // other setup tasks here....

    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];

}



// Delegation methods

- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)devToken {

    const void *devTokenBytes = [devToken bytes];

    self.registered = YES;

    [self sendProviderDeviceToken:devTokenBytes]; // custom method

}



- (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)err {

    NSLog(@"Error in registration. Error: %@", err);

}

すべての引用は、Apple ローカルおよびプッシュ通知プログラミング ガイドから引用されています。

于 2013-03-05T15:31:20.717 に答える
2

applicationIconBadgeNumberアプリのバッジ番号をローカルで処理するために使用する必要があります

[UIApplication sharedApplication].applicationIconBadgeNumber = number_of_notifications;

リモート通知からバッジカウンターを追加する限り、アラートなしではできないと思います。APN Serviceについて読む必要があります。あなたの場合は、登録する可能性があります。Local & Push Notification Programming guideUIRemoteNotificationTypeBadgeについて読む必要があります。

于 2013-03-05T14:04:01.740 に答える
1
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo

{

    [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
}

この方法を使用してください....これはあなたを助けます。

于 2013-03-05T14:06:44.257 に答える
1

使用できます

[UIApplication sharedApplication].applicationIconBadgeNumber = aNumber;
于 2013-03-05T14:03:11.787 に答える