2016-06-01 11 views
0

私は2つの基本的なオブジェクトを持つ解析アプリケーションを持っています。最初のオブジェクト "User"には、 "location"というジオポイントを格納するプロパティがあります。パーズクラウドコードGeoPoint

2番目のオブジェクトは、GeoPointで「場所」プロパティを持つ「視界」です。

私のクラウドコードでは、「視界」オブジェクトに「aftersave」関数を導入しました。その結果、視覚情報が保存されると誰にでもプッシュ通知が送信されます。

しかし、私が達成しようとしているのは、特定の範囲内のユーザーのみを送信することです。

私はquery.withinKilometeresを見つけましたが、すべてのユーザーを比較する方法を理解できません。 "Locations"および保存されたオブジェクト "Location"をベースとして取得します。その後、返されたすべてのユーザーにプッシュを送信します。

雲のコードは完全に私にはエイリアンなので、どんな助けにも感謝しています。

ジェームズ

答えて

0

おかげでプッシュのターゲットが_Installationです。 あなたの質問では、デバイスの関連する現在のユーザーのためのポインター 'ユーザー'を維持する必要があります。

//afterSave of Sighting 
var sighting = request.object; 
//means created, not update 
if(!sight.existed()){ 
    var location = sighting.get('location'); 
    var userQuery = new Parse.Query(Parse.User); 
    //1 for example 
    userQuery.withinKilometeres('location', 1); 

    var query = new Parse.Query(Parse.Installation); 
    query.matchesQuery('user', userQuery); 

    Parse.Push.send({ 
     where:query, 
     data:{ 
      alert: "this is msg", 
      title: "this is title" 
     } 
    },{useMasterKey:true}) 
    .then(function(){ 
     console.log('push done'); 
    }, function(error){ 
     console.error(error); 
    }); 

} 

matchesQueryには制限があります。この場合、1000人以上のユーザーを送信することはできません(関連するインストールを取得するため)。

ありがとううわー

+0

(あなたのユーザーが複数のデバイスを持っているかもしれませんが、ユーザーが2ヶ所に分割することはできません)だから私はあなたが_Installationで位置情報を入れて提案し、それはより多くの意味をなします。パーズクラウドは予想よりも難しく、これは実際に観測場所の1km以内のすべての設備にプッシュを送るでしょうか? – user3642005

+0

パフォーマンスは、デザインと結果のサイズによって異なります。クエリのパフォーマンスはプッシュの要点の1つです(ただし、parse.comの遅延がプッシュするには1〜30分かかることがあります) – ChunTingLin

関連する問題