2016-10-18 2 views
0

Я пытаюсь отправить push-уведомления с обещаниями. Потому что сначала я получаю данные с сервера после получения аргументов. это мой код.Анализ без отправки push с обещаниями

var fromUser = request.object.get('fromUser').fetch().then(function(user) { 
    var userName = user.get('username'); 
    userCredits.userName = user.get('username'); 
    //userPromise.resolve(userName); 
    userPromise.resolve(userName); 
}); 
promises = [userPromise, groupPromise]; 
Parse.Promise.when(promises).then(function(result1)  { 
    var query = new Parse.Query(Parse.Installation); 
    query.containedIn('channels', members); 
    console.log("push sending #######"); 
    Parse.Push.send({ 
    where: query, 
    data: { 
     aps: { 
     alert: { 
      "loc-key": type, 
      "loc-args": [userCredits.userName, userCredits.groupName] 
     }, 
     isJSONPush: 'true', 
     badge: 'increment', 
     'sound': 'default', 
     type: type, 
     group: group, 
     message: message, 
     messages: messages, 
     activity: request.object, 
     "mutable-content": 1 
     }, 
    } 
    }, { 
    useMasterKey: true 
    }, { 
    success: function() { 
     console.log('##### PUSH OK'); 
    }, 
    error: function(error) { 
     console.log('##### PUSH ERROR' + error.message); 
    } 
    }); 
    //return response.success(result1); 
}, function(error) { 
    console.log("error + " + error); 
    return response.error(error); 
}); 

Так что, если я использую его за пределами объема обещаний, он работает. Но когда я пытаюсь использовать его в области обещаний, он не работает.

А также это вывод, который я получаю.

разбор сервер-нажимной адаптер APNS не может найти непросроченное соединение для

+0

любое предложение? –

ответ

0

могут использовать больше коды, чтобы посмотреть, что здесь происходит. то есть использовать декларацию userPromise, а также groupPromise

Но я уверен, что ваше обещание не работает так, как вы думаете.

Вот моя переиздание того бита, который вы нам дали, сделав предположение или два о том, что, на мой взгляд, выглядит полный код. Обратите внимание, как я беру результат request.object.get('fromUser').fetch() и положить, что право на Parse.Promise.when

var userPromise = request.object.get('fromUser').fetch(); 
var groupPromise = groupQueryThatReturnsAPromise; 


// Note that if you put the promises not in an array 
// but sep with commas, you know what's returned.... 
Parse.Promise.when(userPromise, groupPromise).then(function (user, group) { 
    // just to make sure we got here with what we want :) 
    console.log(user, group); 
    var query = new Parse.Query(Parse.Installation); 
    query.containedIn('channels', members); 
    console.log('push sending #######'); 
    return Parse.Push.send({ 
    where: query, 
    data: { 
     aps: { 
     alert: { 
      'loc-key': type, 
      'loc-args': [user.get('username'), group.get('groupName')] 
     }, 
     isJSONPush: 'true', 
     badge: 'increment', 
     sound: 'default', 
     type, // just some fancy object notation if the key and value are the same :). 
     group, 
     message, 
     messages, 
     activity: request.object, 
     'mutable-content': 1, 
     }, 
    }, 
    }, { 
    useMasterKey: true, 
    }); 
}).then(() => response.success) // fancy new style "fat arrow" function declaration 
.then(null, e => response.error(e)); // chain an extra then in case we error out in the when... 

PS: жаль, что я не могу запустить код для проверки его, прежде чем положить его здесь, надеюсь, что это помогает, но проблема заключается в том, чтобы обещать, поэтому, если вы сосредоточитесь на том, чтобы убедиться, что каждая часть цепочки обещаний работает так, как вы думаете, это с помощью отладочных заявлений, вы получите ее прямо, что поможет вам двигаться вперед точно! Удачи.

+0

спасибо, я попробую –

+0

ну, это сработало? –

+0

Нет, на самом деле это не сработало. Я все еще смотрю, почему он не работает над моим кодом. –