質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
ニフティクラウドmobile backend

ニフティクラウドmobile backend (mBaaS)はニフティが提供するBaasサービスです。プッシュ通知、データストア、ファイルストア、会員管理・認証機能などのバックエンド機能をクラウドから提供しています。 Andoird/iOS/JavaScript/Unityと各種SDKに対応しています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

Q&A

解決済

2回答

10025閲覧

プッシュ通知受信後の処理

yokosyo0609

総合スコア37

ニフティクラウドmobile backend

ニフティクラウドmobile backend (mBaaS)はニフティが提供するBaasサービスです。プッシュ通知、データストア、ファイルストア、会員管理・認証機能などのバックエンド機能をクラウドから提供しています。 Andoird/iOS/JavaScript/Unityと各種SDKに対応しています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

0グッド

0クリップ

投稿2016/02/26 16:33

質問失礼いたします。

プッシュ通知を受信した後、バッジを表示したいのですが、バックグラウド状態での処理が行われません。
以下のように分岐して行っております。

swift

1// Push通知受信時とPush通知をタッチして起動したときに呼ばれる 2func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) { 3switch application.applicationState { 4case .Inactive: 5// アプリがバックグラウンドにいる状態で、Push通知から起動したとき 6break 7 8case .Active: 9// アプリ起動時にPush通知を受信したとき 10break 11 12case .Background: 13// アプリがバックグラウンドにいる状態でPush通知を受信したとき 14break 15} 16}

caseの.Inactiveと.Active は処理されるのですが、.Backgroundが処理されません。
ですので、
プッシュ通知を受信した、アプリを開いていない人にバッジを表示することができておりません。

ご教授願います。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

PUSH通知でバッジをつけるには、PUSH送信時のパラメタでbadge:3などで設定できますよ。

投稿2016/02/26 23:41

sekitaka_1214

総合スコア509

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yokosyo0609

2016/03/22 03:37

お返事遅くなり申し訳ございません。 参考にさせていただきました!ありがとうございます!
guest

0

ベストアンサー

アプリがバックグラウンドにある状態でプッシュ通知を受信した場合でもdidReceiveRemoteNotification:userInfoがBackgroundで呼びだされることはありません。
なぜなら、バックグラウンド状態のアプリは、ユーザーがプッシュ通知メッセージをタップすることで初めてキックされ、そこからフォアグラウンドへ移行するために一旦Inactive状態へ移行してからdidReceiveRemoteNotification:userInfoが呼びだされるからです。
つまり、バックグラウンドにある状態でプッシュ通知により起動されたかどうか判断したいなら、InActiveかどうかを見るだけでかまいません。

バッジが表示されないとのことですが、バックグラウンド状態でも未起動状態でも、iOSはプッシュ通知を受信したら、サーバーからの通知内容に従ってアプリをキックする前に通知音を鳴らし、通知メッセージを表示し、その時に同時にアイコンバッジも表示します。(その後、ユーザーが通知メッセージをタップして初めてアプリをキックします。)
なので、バックグラウンド(または未起動)の時にバッジが表示されないのでしたら、サーバーからの通知内容にバッジ表示が設定されてないか、iPhone側の通知設定でバッジの受け取りを有効にしていないかのどちらかではないかと思います。


(追伸)
プッシュ通知受信時にユーザーがメッセージをタップする前にサーバーからコンテンツを事前ダウンロードしておきたいような場合は、バックグラウンド動作を設定することで、プッシュ通知受信のタイミングでアプリをバックグラウンド動作させることも可能です。もし、この機能を動作させるついでにアプリでバッジ表示をするつもりでしたら、didReceiveRemoteNotification:userInfoでなくdidReceiveRemoteNotification:fetchCompletionHandlerを実装する必要が有ります。

http://blogios.stack3.net/archives/2224
の解説がわかりやすいと思いますので、一読しておくことをお勧めします。

投稿2016/02/26 18:54

編集2016/02/26 19:24
TakeOne

総合スコア6299

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yokosyo0609

2016/03/22 03:39

お返事遅くなり申し訳ございません。 とても参考になりました! Backgroundで呼びだされていなかったとは驚きでした 無事解決しております! ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問