Description
Originally mentioned in (but unrelated to) Issue #1245.
- You've met the prerequisites.
- You're running the latest version of Parse Server.
- You've searched through existing issues. Chances are that your issue has been reported or resolved before.
Environment Setup
Node.JS 4.4
Python 2.7.11
Parse Server 2.2.4
Self hosted MongoDB 3.0.10-1.5 (Storage engine: Rocksdb)
Debian 8
Steps to reproduce
If you send a push notification using Parse Server the push dashboard at parse.com fails to list any push notification. It will just show a message "No pushes to display yet. You may need to configure push notifications for your app." for any page Parse Server created notifications are to be listed.
This happens only when Parse Server created entries in the _PushStatus
collection are to be presented by the Parse.com dashboard. If there are no Parse Server created entries to be loaded (removed from database or on a different page) the push notification list will function normally.
Noteworthy thing regarding the _PushStatus
entries is that the entries created by Parse.com have structural differences from those created by Parse Server. Is this intentional? (Could be related to this issue?)
I'm uncertain if this issue is related to the way Parse Server stores _PushStatus entries or the Parse.com dashboard itself.
Logs/Trace
_ParseStatus entry created by Parse.com:
{
"_id" : "kMoQhCO2rU",
"_created_at" : ISODate("2016-04-01T18:30:49.378Z"),
"_updated_at" : ISODate("2016-04-01T18:30:50.526Z"),
"source" : "cloud_code",
"query" : "{\"channels\":{\"$in\":[\"news\",\"important\",\"all\"]}}",
"payload" : "{\"alert\":\"OMITTED\",\"badge\":\"Increment\",\"title\":\"OMITTED\",\"uri\":\"OMITTED\"}",
"status" : "succeeded",
"numSent" : 1383,
"pushHash" : "e8a4a7489d823f162462d1bb1affc0f6",
"expansionDuration" : 0.866821775,
"sentPerType" : {
"js" : 0,
"ios" : 576,
"osx" : 0,
"android" : 806,
"winphone" : 0,
"winrt" : 1,
"embedded" : 0
}
}
_ParseStatus entry created by Parse Server:
{
"_id" : ObjectId("56fe7eee38b022d0112dd694"),
"objectId" : "oKIqqyJqhJ",
"pushTime" : "2016-04-01T14:00:14.879Z",
"_created_at" : ISODate("2016-04-01T14:00:14.879Z"),
"query" : "{\"channels\":{\"$in\":[\"All\",\"News\"]}}",
"payload" : {
"alert" : "OMITTED",
"badge" : "Increment",
"title" : "OMITTED",
"uri" : "OMITTED"
},
"source" : "rest",
"title" : null,
"expiry" : null,
"status" : "succeeded",
"numSent" : 1068,
"pushHash" : "b6a5d67fcf1ed82eb64e4978b375caf3",
"_wperm" : [],
"_rperm" : [],
"numFailed" : 2,
"sentPerType" : {
"ios" : 347,
"android" : 721
},
"failedPerType" : {
"android" : 2
}
}
The following errors appear in the browser console during loading of list containing Parse Server created entries:
Microsoft Edge
HTTP500: SERVER ERROR - The server encountered an unexpected condition that prevented it from fulfilling the request.
(XHR): GET - https://parse.com/apps/*OMITTED APP NAME*/push_notifications/?type=all
Origin https://dashboard.parse.com not found in Access-Control-Allow-Origin header.
Firefox
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://parse.com/apps/*OMITTED APP NAME*/push_notifications/?type=all. (Reason: CORS header 'Access-Control-Allow-Origin' missing).1 Source:<unknown>
Chrome
XMLHttpRequest cannot load https://parse.com/apps/*OMITTED APP NAME*/push_notifications/?type=all. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://dashboard.parse.com' is therefore not allowed access. The response had HTTP status code 500.