2015-05-26 8 views
5

हटा नहीं सकता है, मैं पुश अधिसूचना को संभालने के लिए पार्स का उपयोग करता हूं। क्योंकि मेरे पास पहले से ही मेरा डेटाबेस है, मैं केवल इंस्टॉलेशन डेटा स्टोर करने के लिए पार्स का उपयोग करता हूं। (ऐप में लॉगिन और लॉगआउट करने के लिए ParseUser का उपयोग नहीं कर रहा है) जब मैं अपना ऐप लॉगआउट करता हूं, तो मैं अपनी स्थापना को हटाना चाहता हूं।एंड्रॉइड पार्स इंस्टॉलेशन

com.parse.ParseRequest$ParseRequestException: forbidden 
     at com.parse.ParseRequest.newPermanentException(ParseRequest.java:391) 
     at com.parse.ParseRESTCommand.onResponse(ParseRESTCommand.java:197) 
     at com.parse.ParseRequest$3.then(ParseRequest.java:258) 
     at com.parse.ParseRequest$3.then(ParseRequest.java:254) 
     at bolts.Task$14.run(Task.java:796) 
     at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105) 
     at bolts.Task.completeAfterTask(Task.java:787) 
     at bolts.Task.continueWithTask(Task.java:599) 
     at bolts.Task.continueWithTask(Task.java:610) 
     at bolts.Task$12.then(Task.java:702) 
     at bolts.Task$12.then(Task.java:690) 
     at bolts.Task$14.run(Task.java:796) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 
     at java.lang.Thread.run(Thread.java:841) 

धन्यवाद:

ParseInstallation installation = ParseInstallation.getCurrentInstallation(); 
installation.deleteInBackground(new DeleteCallback() { 
    @Override 
    public void done(ParseException ex) { 
     Log.d(TAG, "ParseInstallation deleteInBackground done"); 
     if (ex != null) { 
      Log.e(TAG, "ParseInstallation deleteInBackground", ex); 
     } 
    } 
}); 

तो मैं निम्न त्रुटि मिल गया है!

+0

मुझे यह समझाया गया कि आप क्या हासिल करने की कोशिश कर रहे हैं में असमर्थ हूँ। नाम के अनुसार, इंस्टॉलेशन क्लास, आपके ऐप की इंस्टॉलेशन को स्टोर करने के लिए है। निरंतर ... हर बार जब आप पहली बार प्रारंभ (कुंजी 1, की 2) कॉल करते हैं तो एक नई स्थापना ऑब्जेक्ट बनाई जाती है। – Aashir

+0

मैं इंस्टॉलेशन रिकॉर्ड को मिटाना चाहता हूं जो पार्स में स्टोर है। ताकि उपयोगकर्ता को कोई पुश अधिसूचनाएं प्राप्त न हों। पुश अधिसूचनाओं के लिए – Lilian

+0

? क्या आपने चैनल में लॉग इन किए गए उपयोगकर्ताओं की सदस्यता ली है? – Aashir

उत्तर

1

मुझे लगता है कि आप ऐसे उपयोगकर्ता के साथ अनुरोध करने का प्रयास कर रहे हैं जिसके पास ऐसा करने के लिए पर्याप्त प्राधिकरण नहीं है। हो सकता है कि आप इस अनुरोध को कर रहे हों जब सत्र पहले ही नष्ट हो गया है (लॉगआउट के लिए), इसे नष्ट करने से पहले इसे करने के बजाय।

1

आपको मास्टर कुंजी का उपयोग करके क्लाउड कोड से इसे हटाना होगा।

एंड्रॉयड क्लाइंट में:

   //clear the installation backend 
      HashMap<String, String> params = new HashMap<>(); 
      String idToken = ParseInstallation.getCurrentInstallation().getInstallationId(); 
      params.put("installationId", idToken); 
      ParseCloud.callFunctionInBackground("removeInstallation", params, new FunctionCallback<String>() { 
       @Override 
       public void done(String response, ParseException e) { 
        if (e == null) { 
         //clear the local chache 
         ParseEasyAccess.clearParse(); 
        } else { 
         e.printStackTrace(); 
        } 
       } 
      }); 

और फिर बादल संहिता में:

  Parse.Cloud.define("removeInstallation", function(request, response) { 

     Parse.Cloud.useMasterKey(); 

     var installationId = request.params.installationId; 

     var query = new Parse.Query(Parse.Installation); 
     query.equalTo("installationId", installationId); 

     query.find(function(installations) { 
      installations[0].destroy().then(
       function() { 
        response.success("Destroyed"); 
       }, 
       function() { 
        response.error("Failed"); 
       }); 
     }); 

    }); 

और अगर आप भी आपकी डिवाइस पर कैश स्थापना को नष्ट करना चाहते, निम्न करें:

  1. com.parse

  2. नामक एक पैकेज बनाएं
  3. एक वर्ग को क्रेट करें, उदाहरण के लिए MyParseTools।

  4. तो एक स्थिर विधि liks करें:

    public static void clearParseInstallation() { 
    ParseInstallation.getCurrentInstallationController().clearFromDisk(); 
    ParseInstallation.getCurrentInstallationController().clearFromMemory();} 
    
संबंधित मुद्दे