2014-09-17 3 views

답변

2

예, 내가 그 사람 앞에 자신의 채널에 user_으로 구독하고 있습니다. 채널은 숫자로 시작될 수 없으며 일부 객체 ID는 숫자로 시작될 수 없습니다.

currentInstallation.channels = ["global", "user_" + PFUser.currentUser().objectId] 

은 그럼 당신은 user_objectId 채널로 전송하여 OBJECTID에 따라 사용자에게 푸시 알림을 보낼 수 있습니다.

이 경우 사용자는 문서에 가입합니다. asker는 구독 한 채널을 설치 객체에 저장하는 중이었습니다. 이것이 그가 내가 권하고 싶은 일이다.

라는 새 테이블을 만듭니다 : Subscriptions

각 행이 포함되어 있어야합니다 user: UserPointer

사용자가 문서를 구독 document: DocumentPointer가, 다음 해당 사용자/문서 콤보에 대한 새 행을 작성해야합니다.

푸시를 보내면 푸시를 documentId 채널로 보내지 않고 해당 문서에 가입 한 모든 사용자에게 보냅니다. 그 코드는 다음과 같습니다. 단일 사용자가 자신이 아이폰에 채널 구독 그는 아이 패드에 로그인 (하지만 아이 패드에서 채널 A에 subsctibe) 그래서 우리는 모두 푸시 알림을 보낼 수있는 방법을 생각 .SO 여러 장치가있는 경우

//Get all the users that are subscribed to docId 
var userQuery = new Parse.Query("Subscriptions"); 
userQuery.equalTo("document", docId); 
userQuery.limit(1000); 
userQuery.find({ 
    success: function(results) { 
     //results contains at most 1000 subscribed users 
     var userIdChannels = []; 
     //Extract out the userIds from results 
     for(var i = 0; i < userIds.length; ++i) { 
      userIdChannels.push("user_" + results[i].get("user").id); 
     } 
     //Now send a push notification to all the subscribed users 
     var pushQuery = new Parse.Query(Parse.Installation); 
     pushQuery.equalTo('channels', userIdChannels); 

     Parse.Push.send({ 
      where: pushQuery, // Set our Installation query 
      data: { 
       alert: "Document updated" 
      } 
     },{ 
      success: function() { 
       // Push was successful 
      }, 
      error: function(error) { 
       throw "Error sending push"; 
      } 
     }); 

    }, error: function(error) { 
     throw "Error getting subscribed users"; 
    } 
}); 
+0

사실 내 시나리오는 장치가 채널 A를 기준으로합니다. –

+0

사용자가 같으면 두 장치가 모두 'user_objecId'에 가입합니다. – Dehli

+0

하지만 나중에 iPad로 가서 해당 채널 권리를 구독해야합니다. 사용자가 iPhone에서 채널을 구독하면 iPad에서 자동으로 구독하고 싶습니다. –

관련 문제