2017-09-20 25 views
0

この質問は重複しているかもしれませんが、私はもう一度聞いてみたいと思います。Firebaseでバッジ番号を累積する方法はありますか?

私たちが知っているように、我々はアプリケーション.IFプッシュする前にFirebaseとの通知をbadgeを設定することができますbackgroundにあり、リモート通知を受信すると、badge number 1は、アプリのアイコンに表示されます。

次に、firebaseのバッジ値を3に設定し、メッセージをプッシュします。 私は、アイコン上のバッジ番号が3ではなく4(1 + 3)であることを望んでいます。言い換えれば、アプリがバックグラウンドモードで2つの異なるメッセージを受け取った場合、バッジ番号を蓄積する必要があります。

Firebaseで行う方法はありますか?任意の点が高く評価されています。

答えて

1

あなたは正しいです、この質問は数回前に尋ねられました。 Firebaseプッシュ通知でのみ行うことができるのは、badge countをアプリに表示するように設定することです。言い換えれば、でバッジの数をカウントしたり維持したりすることはできません。

あなたのアプリにバッジの現在の数を保存するにはサーバーが必要です。

silent push notificationも使用できます。ここでは、Appleのドキュメント:サイレント通知がユーザーのデバイスに配信されるとhttps://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CreatingtheNotificationPayload.html

、iOSがバックグラウンドでアプリをウェイクアップし、実行するために30秒にそれをあきらめます。 iOSでは、システムは、アプリケーション:didReceiveRemoteNotification:fetchCompletionHandler:あなたのアプリケーションデリゲートのメソッドを呼び出すことによって、サイレント通知を配信します。

0

私はあなたのようでした。私は「サーバーでやってください」以外はまっすぐな答えを見ることができませんでした。ここで

私の方法:

1)あなたがアプリを起動後Firebaseリアルタイムデータベースにゼロに(変数はあなたが欲しいものは何でも、それを呼び出すことができます)バッジを設定する必要があります。プラスここで設定application.applicationIconBadgeNumber = 0は、私はAppDelegateでそれを行う方法です。

func applicationDidBecomeActive(_ application: UIApplication) { 
    // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 
    application.applicationIconBadgeNumber = 0 

    // Reset badge number to zero 
    let userID = Auth.auth().currentUser?.uid 

    let dbRef = Database.database().reference() 
    dbRef.child("Users Info").child(userID!).updateChildValues(["badge":"0"], withCompletionBlock: { (err, ref) in 
     if err != nil { 
      print(err!) 
      return 
     } 
    }) 

} 

2)関数がトリガされindex.jsに移動します。

... 
return admin.database().ref('/Users Info/' + owner).once('value', snapshot => { 

    var ownerValue = snapshot.val(); 

    var badgeNumber = parseInt(ownerValue.badge) + 1; 

    // Notification details. 
    const payload = { 
     notification: { 
     title: 'You have a new request!', 
     body: `A new request from ${downedBy.name}.`, 
     badge:`${badgeNumber}`, 
     sound: 'default', 
     } 
    }; 
    ... 
    ... 
    // Upload the new value of badge into Firebase to keep track of the number 
    return admin.database().ref('/Users Info/' + owner).update({badge:badgeNumber}); 
    ... 
    }) 
関連する問題