2014-09-25 7 views
6

मैं पार्स का उपयोग कर रहा हूं और मैं इस विधि को काम करने के लिए नहीं कर सकता।पार्स क्लाउड: एक उपयोगकर्ता को पुश भेजें

विचार 'क्लाउड कोड' के भीतर किसी भी प्लेटफ़ॉर्म से पहले से ज्ञात उपयोगकर्ता पहचानकर्ता के साथ एक उपयोगकर्ता को धक्का भेजना है।

var targetUser = new Parse.User();

targetUser.id = userID;

:

प्रश्नों मुझे लगता है कि उपयोगकर्ता (वास्तव में कोई धक्का किसी भी उपयोगकर्ता के लिए दिया गया था) उपयोगकर्ता सूचक के माध्यम से

  • PFInstallation में वितरित किए जाने धक्का बिना की कोशिश की है

    var query = new Parse.Query(Parse.Installation);

    012 के लिए

    Parse.Cloud.define("sendPushContactUser", function(request, response) { 
    
    // Get parameters 
    var userID  = request.params.userID; // I'm obviously passing this parameter in the method call 
    
    
    // Query 
    /* ------ query = Any of the above options ------ */ 
    
    
    Parse.Push.send({ 
        where: query, 
        data: { 
         title : "New message", 
         alert : "User message", 
         badge : "Increment", 
         sound : "soundNotifUserContact.caf", 
         "params" : { 
          "pushType" : 2, 
          "userID" : userID 
         } 
        } 
    }, { 
        success: function() { 
         response.success(); 
        }, 
        error: function(error) { 
         response.error(error); 
        } 
        }); 
    
    }); 
    

    धन्यवाद:

    query.equalTo('user', targetUser);

  • PFUser ही

    var query = new Parse.Query(Parse.User);

    query.equalTo('objectId', userID);

विधि के लिए

पूर्ण कोड में क्वेरी आपका समय और मदद

+0

कैसे आप एंड्रॉइड से क्लाउड विधि कॉल करते हैं ?? – Erum

उत्तर

10

यह मेरे लिए अच्छी तरह से काम है, लेकिन आप पहले अपने प्रतिष्ठानों के साथ अपने उपयोगकर्ताओं से जोड़ने के लिए है:

var query = new Parse.Query(Parse.User); 
query.equalTo('username', 'Sento'); 
// Find devices associated with these users 
var pushQuery = new Parse.Query(Parse.Installation); 
// need to have users linked to installations 
pushQuery.matchesQuery('user', query); 


Parse.Push.send({ 
    where: pushQuery, 
    data: { 
     aps: { 
      alert: "Test", 
      sound: "" 
     } 
    } 
}, { 
    success: function() { 
     response.success("Hello world!"); 
    }, 
    error: function (error) { 
     response.error(error); 
    } 
}); 
+0

आपके उत्तर – Sento

+0

के लिए धन्यवाद, मैंने User.installation में एक पॉइंटर जोड़ा और लिंक ठीक लगता है। मैं स्थापना पर क्लिक करने में सक्षम हूं और स्थापना प्रदर्शित की गई थी। लेकिन अभी भी इसे भेजने में असमर्थ है। –

+0

हां! इसके लिए अपने दिल को आशीर्वाद दें। – darkheartfelt

-2

मैं आपके द्वारा वर्णित दो विधियों में से पहला उपयोग कर रहा हूं, और यह ठीक काम करता है।

बस यह सुनिश्चित करें कि आप ऑब्जेक्ट आईडी का उपयोग करें और targetUser.id के लिए उपयोगकर्ता नाम नहीं।

पूर्व:

targetUser.id = 'Qhao1j22j'; //Never hard code like this though. 
0

आप एक साथ Parse.Session और Parse.Installation शामिल हो सकते हैं सत्र प्राथमिक कुंजी के रूप में उपयोगकर्ता सूचक, अगली "स्थापना आईडी" शामिल कुंजी के रूप में।

var PushSend = function(payload, dbContact) { 
    var querySession = new Parse.Query(Parse.Session); 
     querySession.equalTo("user", dbContact); 
     querySession.descending("updatedAt"); 

querySession.first({ useMasterKey: true }) 

.then(function(dbSession) { 
    var installId = dbSession.get("installationId"); 

    var installQuery = new Parse.Query(Parse.Installation); 
     installQuery.equalTo("installationId", installId); 

     Parse.Push.send({ 
      where: installQuery, 
      data: { 
       alert: payload 
      } 
     }, { useMasterKey: true}) 

     .then(function() { 
      // "success" 
     }, function(error) { 
      // "failed" 
     }); 
    }, function(error) { 
     // "failed" 
    }); 
} 

ऊपर बादल समारोह तर्क के रूप में लेता है:

  1. पेलोड पाठ स्ट्रिंग
  2. एक गंतव्य संपर्क सूचक (आप उदाहरण के लिए पहले से Parse.User से पूछे है)
संबंधित मुद्दे