2014-09-25 13 views
6

Tôi đang sử dụng Parse và tôi không thể thực hiện phương pháp này để hoạt động.Phân tích đám mây: Gửi Push tới một người dùng duy nhất

Ý tưởng là gửi đẩy tới một người dùng có mã nhận dạng người dùng đã biết từ bất kỳ nền tảng nào trong 'Mã đám mây'.

Queries tôi đã cố gắng mà không đẩy được chuyển giao cho người dùng (trên thực tế không đẩy được giao cho bất kỳ người sử dụng)

  • PFInstallation thông qua con trỏ sử dụng:

    var targetUser = new Parse.User();

    targetUser.id = userID;

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

    query.equalTo('user', targetUser);

  • Query trong PFUser tự

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

    query.equalTo('objectId', userID);

Full mã cho phương pháp:

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); 
    } 
    }); 

}); 

Cám ơn thời gian và sự giúp đỡ của bạn.

+0

cách u gọi phương thức đám mây từ android ?? – Erum

Trả lời

10

này hoạt động tốt đối với tôi, nhưng bạn phải liên kết người dùng của bạn với thiết bị của bạn trước:

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

Cảm ơn câu trả lời của bạn – Sento

+0

Tôi đã thêm một con trỏ vào User.installation và liên kết có vẻ ổn. Tôi có thể nhấp vào cài đặt và cài đặt đã được hiển thị. Nhưng vẫn không thể gửi nó. –

+0

Có! Chúc phúc cho bạn vì điều này. – darkheartfelt

-2

Tôi đang sử dụng phương pháp đầu tiên trong hai phương pháp bạn đã đề cập và nó hoạt động tốt.

Chỉ cần đảm bảo rằng bạn sử dụng objectId chứ không phải tên người dùng cho targetUser.id.

Ex:

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

Bạn có thể tham gia Parse.Session và Parse.Installation với một con trỏ người dùng làm khóa chính phiên, tiếp theo "installationId" làm khóa kết nối.

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" 
    }); 
} 

Chức năng điện toán đám mây ở trên mất như các đối số:

  1. văn bản tải trọng chuỗi
  2. một con trỏ tiếp xúc đích (bạn đã ví dụ trước đây truy vấn từ Parse.User)
Các vấn đề liên quan