2

Je suis nouveau développeur iOS. J'utilise firebase et j'essaye de faire une application de causerie dans laquelle je dois informer l'utilisateur quand il/elle reçoit n'importe quel message. Pour cela, j'ai essayé les notifications push Firebase, mais je ne pouvais pas les déclencher quand un autre utilisateur envoyait le message. La seule façon que j'ai trouvée est d'utiliser la console Firebase pour envoyer une notification push, mais cela ne répond pas à mes besoins. Je viens de configurer les notifications locales. Veuillez me guider comment nous pouvons déclencher des notifications push sans utiliser la console firebase.comment déclencher des notifications push de firebase à partir d'un périphérique ios en utilisant swift3

+0

Vous pouvez utiliser https://firebase.google.com/docs/database/ios/start. Par exemple, si l'utilisateur A reçoit un message, la base de données envoie automatiquement l'événement à deivce. Dans ce cas, vous pouvez créer votre propre notification. –

+0

@hmail Intégration de Fire Fall Fallow https://firebase.google.com/docs/database/ios/start this et pour le code référez-vous à https: // github.com/firebase/quickstart-ios/arbre/maître/messagerie/MessagingExampleSwift – naga

+0

@DanielQ vous me suggérez donc d'utiliser les notifications locales de ios qui seront déclenchées automatiquement lorsque la méthode observer de firebase fonctionnera. J'ai essayé ceci mais je ne pouvais pas le faire fonctionner parce que je ne pouvais pas trouver un moyen de déclencher des notifications locales sur un événement autre que le calendrier, l'emplacement et l'heure. s'il vous plaît dites-moi comment puis-je le faire – hmali

Répondre

0

Enfin trouvé la solution après avoir lutté pendant presque 1 mois.

Ce sont les étapes de base

  1. Firs hors tout ce que vous devez vous assurer que vous avez un développeurs de pommes actifs représentent

  2. activer simplement les notifications push Firebase here ie the link of youtube video for this step

  3. Maintenant, votre L'application est configurée pour les notifications à distance Firebase, mais nous ne pouvons les déclencher qu'à partir de la console Firebase. Voici donc la partie délicate. Pour la première fois, il sera bon de voir ce video aussi parce que dans cette vidéo, ils vont apprendre à écrire du code dans node.js et à le déployer dans la firebase.
  4. Maintenant si quelqu'un veut faire une API au lieu de faire un déclencheur, voici un code de l'API qui envoie la notification à un autre utilisateur en lui obtenant son jeton FCM ... Vous pouvez le modifier en fonction de vos besoins

Je trouve qu'il est difficile d'afficher le code sous sa forme exacte, mais le code commence ici

const functions = require('firebase-functions'); 

const admin =require('firebase-admin'); 
admin.initializeApp(functions.config().firebase); 

const ref=admin.database().ref(); 
exports.sendNotification=functions.https.onRequest((req,res) =>{ 

    const id = req.query.id 
    const title = req.query.title 
    const message = req.query.message 
    const key = req.query.key 
    // admin.database.ref() 

    const payload ={ 

     notification: { 
      title: title, 
      body: message, 
      //badge: '1', 
      sound: 'default', 
     } 
    }; 

    console.log('Param [key] is '+key); 

    const keys = [] ; 

    ref.child('keys').once('value') 
    .then(snap => { 
     snap.forEach(childSnap => { 

      const loopKey=childSnap.val().key; 
      keys.push(loopKey); 

     }) 

     return keys; 
    }) 
    .then(keys=>{ 

     //console.log('Keys in database : '+keys.join()); 

     if(keys.indexOf(key)>-1) 
     { 
      if(!key || !id || !message) 
      { 
       res.status(400).send('Bad request'); 
      } 
      else{ 
       ref.child('users').child(id).child('fcmToken').once('value') 
       .then(snapshot => { 
        if (snapshot.val()){ 
         const token = snapshot.val() 
         console.log(token); 
         return admin.messaging().sendToDevice(token,payload).then(response =>{ 
          res.status(200).send('Notification sent') 
         }); 
        } 
       }); 
      } 
     } 
     else 
     { 
      console.log("In-valid key : "+key); 

      res.status(400).send('Bad request'); 
     } 
    }) 
    .catch(error => { 
     res.send(error) 
    }); 

}); 

se termine à ce point

c'est la fonction pour stocker votre fcm à la base de données

func postToken(token: String, id: String){ 
    print("FCM Token \(token)") 
    let ref = Database.database().reference().child("users").child(id) 
    ref.child("fcmToken").setValue(token) 
} 

est la fonction ici que j'ai utilisé pour déclencher cette API

func sendNotification(id: String, title: String, message: String){ 
    var url = "your URL" 
    var urlComponents = NSURLComponents(string: url) 
    urlComponents?.queryItems = [ 
     URLQueryItem(name: "key", value: self.apiKey), 
     URLQueryItem(name: "id", value: id), 
     URLQueryItem(name: "title", value: title), 
     URLQueryItem(name: "message", value: message) 
    ] 

    Alamofire.request((urlComponents?.url)!).responseJSON { (response) in 
     print(response.response) 
     print(response.response) 
     print(response.result) 
    } 

} 

l'API ci-dessus a été écrit en fonction de ma structure de base de données. vous pouvez le changer facilement pour votre propre structure.

après avoir fait tout cela, vous serez en mesure d'envoyer vos notifications après avoir frappé l'URL

espère que ça va donner une bonne idée aux gens que vous travailler avec vos propres notifications en fonction de vos besoins.