Chrome tarayıcı bildirimleri geçmişini görüntülemenin bir yolu var mı?


55

Birkaç web sitesinden Chrome bildirimleri alıyorum ve bu siteler için açık bir sekme bile yokken çalışıyorlar.

Ancak bazen masamda olmadığımda veya dizüstü bilgisayarıma baktığımda bu Chrome bildirimlerini alıyorum.

Bu bildirimlerden bazıları benim için yararlı olduğu için, kaçırdığım herhangi birine erişebilmek istiyorum.

Bildirim geçmişini görüntülemenin bir yolu var mı?


1
Öyle görünmüyor. Bu yayına bakıldığında ( theverge.com/2015/10/14/9531133/… ), bildirim politikalarını yeniden düzenlediler ve ayrı ayrı web sayfalarına koymak için masaüstünden kaldırdılar. Yeni bildirimlere erişmek için tek şey bir google sayfasındaki zili tıklamaktır.
Terry

1
Hayır gibi görünüyor: productforums.google.com/forum/#!msg/chrome/xs9PflHTfho/… - çok talihsiz.
LB--

Bildirimleri bir liste olarak bulduğum tek yer, onları atan web sitesinin web sitesi aracılığıyla sahiplenmeleridir. Chrome onları gibi bir şeyde topladı gibi görünmüyor chrome://notificationsve işletim sistemi için yapmıyorlar.
Jason Lydon

Geçerli cevabı kabul @paradroid
Satheesh

Yanıtlar:


31

Mac'iniz varsa, bir yolu var! 😄

Bildirim listesinin nasıl göründüğü:

İşte bildirim listesi nasıl görünecek.

Tek yapmanız gereken:

1. Kromda şuraya git:

chrome://flags/

2. Bakın:

Enable native notifications. Mac

3. Etkinleştir, kromu yeniden başlat, tamam. Keyfini çıkarın!

DÜZENLE:

  • Artık yukarıdakileri yapmanız gerekmeyebilir.

Chrome 59'dan başlayarak, Bildirimler API'sı veya chrome.notifications uzantıları API'sı aracılığıyla gönderilen bildirimler doğrudan Chrome'un kendi sistemi yerine macOS yerel bildirim sistemi tarafından gösterilir. [ kaynak ]


2
Bu, sadece bildirim görerek bildirim tarihini görme sorusuna cevap vermez.
Bjorn

6
@ BjornTipling Bu cevap veriyor. Uzakta kaçırdığı bildirimleri görebiliyor mu diye soruyor ve benim yöntemim tam olarak bunu yapıyor.
Esdras Lopez

1
Bağlantıları yorum olarak koyarsanız, mesajınızı sizin için yazacağım, @EsdrasLopez
user418150

1
@ user418150 Buna minnettarım, ancak şimdi itibarımı aldım. :) Düzenlemeleri kontrol et.
Esdras Lopez

2
Burada temel sorun eğer sadece bildirim depolayan olmasıdır yok üzerine tıklayın. Birkaç kez ilginç bir makale başlığına tıklamıştım, ancak yüklenmemesi için bildirimler listesinden çıkarılmaya devam etti. Genellikle makaleler Googled olmak için fazla yenidir ve genellikle bildirim başlığı makale başlığıyla eşleşmez, bu nedenle webin bağırsaklarında kaybolur.
iBorg

11

MacOSX'te, Kitaplık / Uygulama Desteği'nde bulunan Chrome dizinine sahip olacaksınız. Terminal uygulamasını açın ve sonraki komutları çalıştırın:

cd ~/Library/Application\ Support/Google/Chrome/Default/Platform\ Notifications/
ls -la

Şimdi bunun gibi dosyaları göreceksiniz:

drwx------@  7 visi  staff   224 Jul 13 18:16 .
drwx------  75 visi  staff  2400 Jul 15 11:05 ..
-rw-------@  1 visi  staff   759 Jul 15 10:57 000003.log
-rw-------@  1 visi  staff    16 Jul 13 18:16 CURRENT
-rw-------@  1 visi  staff     0 Jul 13 18:16 LOCK
-rw-------@  1 visi  staff   147 Jul 13 18:16 LOG
-rw-------@  1 visi  staff    41 Jul 13 18:16 MANIFEST-000001

En yenisinin 000003.log olduğunu görebilirsiniz, bu nedenle bir sonraki komutla kontrol edin:

tail -n 100 000003.log

Ve bu kütükten son 100 ürün göreceksin. Sonra krom ayarlarını açabilir ve bu web sitesi bildirimini devre dışı bırakabilirsiniz.

Not Eğer krom birkaç profile sahipseniz, sizin yol (Profile1 yerine varsayılan), bunun gibi farklı olabileceğini:

cd ~/Library/Application\ Support/Google/Chrome/Profile\ 1/Platform\ Notifications/

3
Bu kabul edilen cevap olmalı. :)
Cody A. Ray

1
Halen 2019'da çalışıyorum (kütüğün biraz tercümana ihtiyacı olsa da). Büyük cevap teşekkürler
carpii

11

Eğer giderseniz %LocalAppData%\Google\Chrome\User Data\Default\Platform Notifications, geçmiş bildirimlerin bir günlük dosyası vardır.


4
iyi, ancak yolun, kod yerine "% LocalAppData% \ Google \ Chrome \ Kullanıcı Verileri \ Varsayılan \ Platform Bildirimleri" olduğunu belirtin. Herhangi bir PC'de mükemmel çalışır.
Dmitry Gusarov

UserData / -folder'da, önce "C: \ Users \ kullanıcı adı \ AppData \ Local \ Google \ Chrome \ Chrome \ UserData \ Profil 1 \ Platform Bildirimleri"
Maffelu

1
Bu veri ikilidir. Nasıl okunur?
Gaia

Chrome 71'de ve günlük dosyası boştur. Bu bir noktada engellendi mi?
James

2
@Gaia Aynı şeyi merak ettim ve çoğunu deşifre ederken kabul edilebilir bir iş yapan bazı berbat Java kodları hazırladım. Aşağıda gönderdim: superuser.com/a/1410742/778383
Dreamspace Başkanı

3

Bildirimlerin doğrudan kaydını almak mümkün görünmüyor, aynı sorun olsaydı, bir android telefon emülatörü ya da bir telefon kullanarak Pushbullet'i öneren kullanıcı olarak hile yapardım. Ama sadece Pushbullet yok, başka bir uygulama da var, bildirimleri dinlemek ve kaydetmek için ayrı bir konu hakkında android püf noktalarını tartışabiliriz.

Eğer bir programcıysanız, sorununuzu ev yapımı bir uzatma ile çözebilirsiniz

https://stackoverflow.com/questions/15949606/how-can-i-listen-to-notifications

"WebkitNotifications.createNotification işlevini bağlayabilir, böylece bir bildirim oluşturulduğunda, belirli bir kod çalıştırabilirsiniz."


2

Push Bildirimleri geçmişini görebilirsiniz. Bilgisayar ekranınızın sağ alt köşesinde görev çubuğundaki bir konuşma balonuna benzeyen şeydir ve üzerine gelindiğinde aslında "bildirimler" olarak adlandırıldığını göreceksiniz. Bu balonu tıklarsanız, okunmamış / yeni e-postalarınızı ve reddetmediğiniz tüm push bildirimlerini gösterir. Bu cevabı aramaya geldim ve bulamadım ama sonra bunu çözmeyi başardım. Windows 10 kullanıyorum.


Evet, bu Win10'daki son şey, ancak Windows için nihai bir cevap.
paradroid

1

Biraz yukarıda belirtilen bir şeye dokunmak, ancak OSX'deki bildirimi kaçırmamanızı sağlayan bir twist ile:

  1. Ana üst çubuğun sağ tarafında, bildirim simgesini tıklayın.

  2. Dişli çarkı tıklayın (bildirim ekranının sağ alt)

  3. Bildirimlerin nasıl görüntüleneceğini ayarlamak için Chrome'u seçin.

  4. Varsayılan olarak "Afişler" seçilir ve otomatik olarak kaybolurlar. Bunun yerine, "Uyarı" türünü seçin ve siz onları onaylamadığınız sürece orada kalacaktır!

Rica ederim :)


-1

Pushbullet sorununuzu çözebilir gibi görünüyor. Chrome uzantısını kullanarak cevapsız bildirimlerinizi görebileceğinizi iddia ediyorlar.

https://blog.pushbullet.com/2014/10/23/easily-access-your-recent-notifications-in-chrome/


Lütfen okuyun yazılımını önerme için gerekli minimum bilgi Super User yazılımı tavsiye için nasıl ve öneriler. Cevabınızı faydalı tutmak için, verilen bağlantıların kopmasına rağmen bu ayrıntıların cevabınıza göre düzenlenmesi gerekir.
Reinstate Monica'yı söylüyorum

Selam güzel. Bunu deneyeceğim. Aslında Pushbullet kullanıyorum, ancak bu Chrome uzantısından habersizdim.
paradroid

Bu özelliği bulamıyor gibi gözüküyor. Bir bildirim açıldı ve bildirimin geçmişinde bunun izi yok.
madprops

Soruyu yeniden düşündüm ve yakalamak bu. Telefonunuz bir bildirim alırsa, pushbullet onu masaüstünüze gönderir ve muhtemelen okunmamış bildirimleriniz olduğunu size bildirir (telefonunuzda görmüş olabilirsiniz veya neye sahipsiniz). Hangi siteler için krom bildirimleri alıyorsunuz? Bir uygulama varsa, onu her zaman yükleyebilirsin ve daha sonra pushbullet'ten masaüstüne / dizüstü bilgisayarına / her neyse bildirimleri alırsın.
Socialorganix Contentbrandmgmt

1
Pushbullet'teki "Bildirimler" özelliği yalnızca Android telefonunuzdan bildirimleri masaüstünde görmek içindir ve Mac masaüstünüz varsa iPhone ile aynıdır. Chrome bildirimleriyle ilgisi yoktur.
Boaz

-1

Corey sayesinde 'ın cevabı yukarıda ve ellerime çok fazla zaman tembel Cumartesi, şimdi görebiliyorum son Krom bildirimlerin listesini bile URL'lerin tıklayabilirsiniz benim IDE konsolunda.

Kod berbat ve kaba sezgisel tarama kullanıyor çünkü ikili verileri yorumlamanın doğru yolu hakkında hiçbir fikrim yok.

Ama hiç yoktan daha iyi bir ton . Örnek çıktı (alıntı):

https://www.finanzen.net/nachricht/aktien/kw-9-tops-und-flops-der-tecdax-aktien-in-der-vergangenen-woche-7195100
https://images.finanzen.net/mediacenter/unsortiert/TecDAX_boerse_frankfurt0016_kl.jpg
So bewegten sich die Einzelwerte des TecDAX in der zurückliegenden Handelswoche.*
KW 9: Tops und Flops der TecDAX-Aktien in der vergangenen Woche
So bewegten sich die Einzelwerte des TecDAX in der zurückliegenden Handelswoche.
HideOnTheseRoutes
Home/Index;Article/News/Index
tag-7195100
NotificationIdentifier
1061622960{


https://www.youtube.com/watch?v=W-mlD_bYKdU&feature=push-u-sub&attr_tag=0SL8UpnrTOnTECxr%3A6
https://lh5.googleusercontent.com/-raJM5SITO34/AAAAAAAAAAI/AAAAAAAAAAA/UtLljlL4Wpc/s96-c-mo/photo.jpg
New from Market Moves
Trade Recap: $1,500 in PROFITS*˜
COuAyJGY4uACEAY=
attributionTag
0SL8UpnrTOnTECxr:6{
 from Market MovesTrade Recap: $1,500 in PROFITS

Çarmıha germe Java kodu:

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.function.Consumer;




/**
 * v[1, 2019-03-02 13:00 UTC]
 *
 * by dreamspace-president.com
 */
final public class CrappyChromeNotificationHistoryReader {


    public static void main(final String[] args) {

        final File file = new File(
                "C:\\Users\\[YOUR_NAME_HERE]\\AppData\\Local\\Google\\Chrome\\User Data\\Default\\Platform Notifications\\000003.log");

        final List<ChromeNotificationStuff> notifications = obtainChromeNotificationStuff(file);
        for (ChromeNotificationStuff notification : notifications) {
            System.err.println();
            System.err.println(notification);
        }
        System.exit(0);
    }


    public static List<ChromeNotificationStuff> obtainChromeNotificationStuff(final File file) {

        final List<ChromeNotificationStuff> ret = new ArrayList<>();

        final List<DumbTokenList> listOfDumbTokenLists = doTheInsaneParsingThing(file);
        int instanceCounter = 0;
        for (DumbTokenList dtl : listOfDumbTokenLists) {

            final List<String> urls = new ArrayList<>();
            final List<String> texts = new ArrayList<>();

            for (String token : dtl.tokens) {
                if (token.startsWith("https://") || token.startsWith("http://")) {
                    urls.add(token);
                } else {
                    texts.add(token);
                }
            }


            // Remove unimportant URLs.
            for (int i = urls.size() - 1; i > 0; i--) {
                final String urlThis = urls.get(i);
                final int lenThis = urlThis.length();
                for (int ii = i - 1; ii >= 0; ii--) {
                    final String urlThat = urls.get(ii);
                    final int lenThat = urlThat.length();

                    if (lenThis > lenThat) {
                        if (urlThis.startsWith(urlThat)) {
                            final String removed = urls.remove(ii);
                            //                            System.err.println("\nREMOVED: " + removed + "\nKEPT   : " + urlThis); // because was better or equal
                            break;
                        }
                    } else {
                        if (urlThat.startsWith(urlThis)) {
                            final String removed = urls.remove(i);
                            //                            System.err.println("\nREMOVED: " + removed + "\nKEPT   : " + urlThat); // because was better or equal
                            break;
                        }
                    }

                }
            }

            ret.add(new ChromeNotificationStuff(instanceCounter, urls, texts));
            instanceCounter++;
        }

        ret.sort(null);

        return ret;
    }


    final public static class ChromeNotificationStuff implements Comparable<ChromeNotificationStuff> {


        private final int instanceCounter;
        final public List<String> urls;
        final public List<String> texts;


        private ChromeNotificationStuff(final int instanceCounter,
                                        final List<String> urls,
                                        final List<String> texts) {

            this.instanceCounter = instanceCounter;

            this.urls = Collections.unmodifiableList(urls);
            this.texts = Collections.unmodifiableList(texts);
        }


        public String toString() {

            final StringBuilder sb = new StringBuilder();
            for (String url : urls) {
                sb.append(url).append('\n');
            }
            for (String text : texts) {
                sb.append(text).append('\n');
            }
            return sb.toString();
        }


        @Override
        public int compareTo(final ChromeNotificationStuff o) { // Newest (= last) notifications first, please.

            return Integer.compare(o.instanceCounter, instanceCounter);
        }
    }




    final private static double MIN_LENGTH_DIFFERENCE_RATIO = 0.7;//0.9;
    final private static double MIN_REMAININGLINES_PERCENTAGEOF_ALLLINES = 0.2;




    final private static class DumbTokenList {


        final private static int MIN_LENGTH = 10; //6;
        final private static String[] EXTENSIONS = new String[] { ".jpg", ".jpeg", ".png", ".gif", ".html", ".htm", ".php" };
        final private static int MAX_EXTRA_CRAP_AFTER_EXTENSIONS = 3;
        final private static String SAFE_URL_CHARACTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~:/?#[]@!$&'()*+,;="; // https://stackoverflow.com/a/1547940/3500521

        final private String originalText;
        final private List<String> tokens;


        private DumbTokenList(final String textWithBinaryCrap) {

            originalText = textWithBinaryCrap;

            final List<String> tokens = new ArrayList<>();

            final Consumer<String> addTokenButTryToDecrappifyExtensionsFirstAnTing = token -> {


                if (token.startsWith("ttps://") || token.startsWith("ttp://")) {
                    token = "h" + token;
                }


                final List<String> newTokens = new ArrayList<>();

                if (token.startsWith("http")) {
                    final int tokenLength = token.length();
                    boolean found = false;
                    for (int i = 0; i < tokenLength; i++) {
                        final char c = token.charAt(i);
                        if (SAFE_URL_CHARACTERS.indexOf(c) < 0) {
                            newTokens.add(token.substring(0, i));
                            newTokens.add(token.substring(i));
                            found = true;
                            break;
                        }
                    }
                    if (!found) {
                        newTokens.add(token);
                    }
                } else {
                    newTokens.add(token);
                }

                for (String newToken : newTokens) {


                    String foundExt = null;
                    int foundExtLen = 0;
                    int foundExtAt = -1;
                    for (String extension : EXTENSIONS) {
                        final int idx = newToken.indexOf(extension);
                        if (idx >= 0) {
                            final int extLen = extension.length();
                            if (idx > foundExtAt || (idx == foundExtAt && extLen > foundExtLen)) {
                                foundExt = extension;
                                foundExtLen = extLen;
                                foundExtAt = idx;
                            }
                        }
                    }
                    if (foundExt != null) {
                        final int amountOfCharactersAfterThisFind = newToken.length() - foundExtAt - foundExtLen;
                        if (amountOfCharactersAfterThisFind <= MAX_EXTRA_CRAP_AFTER_EXTENSIONS) {
                            // OK. Shorten this bitch.
                            newToken = newToken.substring(0, foundExtAt + foundExtLen);
                        }
                    }


                    if (newToken.startsWith("http")) {
                        if (!newToken.startsWith("http://") && !newToken.startsWith("https://")) {
                            continue;
                        }
                    }


                    if (newToken.startsWith("/watch?v=")) {
                        newToken = "https://www.youtube.com" + newToken;
                    }


                    if (newToken.length() >= MIN_LENGTH) {
                        tokens.add(newToken);
                    }


                }

            };

            final StringBuilder sb = new StringBuilder();

            final int len = textWithBinaryCrap.length();
            for (int i = 0; i <= len + 1; i++) {

                final char c = i < len ? textWithBinaryCrap.charAt(i) : 0;

                if (c < ' ' || c == '"') {

                    String potentialText = sb.toString();
                    while (true) {
                        final int httpIDX = potentialText.indexOf("http", 1);
                        if (httpIDX < 0) {
                            addTokenButTryToDecrappifyExtensionsFirstAnTing.accept(potentialText);
                            break;
                        } else {
                            final String snippet = potentialText.substring(0, httpIDX);
                            potentialText = potentialText.substring(httpIDX);
                            addTokenButTryToDecrappifyExtensionsFirstAnTing.accept(snippet);
                        }
                    }

                    sb.setLength(0);

                    if (c == '"') {
                        // Skip this and the next. (thus "i < len +1")
                        i++;
                    }
                } else {
                    sb.append(c);
                }
            }


            // Remove quasi-duplicates. Sue me.
            //            System.err.println("\n*** STARTING DEDUPLICATION ***");
            final int lSize = tokens.size();
            for (int i = lSize - 1; i > 0; i--) { // (not 0 itself, wouldn't make sense)

                if (i < tokens.size()) {

                    final String entry = tokens.get(i);

                    for (int ii = i - 1; ii >= 0; ii--) { // (incl. 0)

                        final String otherEntry = tokens.get(ii);

                        final Boolean removeNoneOrFirstOrSecond = areLinesTooSimilar(entry, otherEntry);
                        if (removeNoneOrFirstOrSecond != null) {

                            if (!removeNoneOrFirstOrSecond) {
                                final String removed = tokens.remove(i);
                                //                                System.err.println("\nREMOVED: " + removed + "\nKEPT   : " + otherEntry); // because was better or equal
                            } else {
                                final String removed = tokens.remove(ii);
                                //                                System.err.println("\nREMOVED: " + removed + "\nKEPT   : " + entry); // because was better or equal
                            }
                            break; // IMPORTANT!
                        }

                    }
                }
            }


            this.tokens = Collections.unmodifiableList(tokens);

        }


        public String toString() {

            final StringBuilder sb = new StringBuilder();
            for (String token : tokens) {
                sb.append(token).append('\n');
            }
            return sb.toString();
        }


    }


    /**
     * Do NOT call with NULL/EMPTY arguments.
     *
     * @return NULL if not too similar. False if the FIRST seems superfluous. True if the SECOND seems superfluous.
     */
    private static Boolean areLinesTooSimilar(final String line1,
                                              final String line2) {

        final int l1 = line1.length();
        final int l2 = line2.length();

        final double lenDiffRatio = Math.min(l1, l2) / (double) Math.max(l1, l2); // Results in 1 or less.

        if (lenDiffRatio >= MIN_LENGTH_DIFFERENCE_RATIO) {

            if (l2 < l1) {
                // Compare the other way round.
                if (line1.contains(line2)) {
                    return false;
                }
            } else {
                if (line2.contains(line1)) {
                    return true;
                }
            }

        }

        return null;
    }


    private static List<DumbTokenList> doTheInsaneParsingThing(final File file) {

        final List<DumbTokenList> ret = new ArrayList<>();

        final StringBuilder sb = new StringBuilder();
        try (final InputStream is = new BufferedInputStream(new FileInputStream(file))) {

            final int bufMinus1 = 4;
            final Charset charset = Charset.forName("Cp1252"); // =ansi

            final int[] buf = new int[bufMinus1 + 1]; // "DATA"
            //            while ((buf[buf.length - 1] = is.read()) >= 0) {
            while (true) {

                buf[bufMinus1] = is.read();

                if (buf[bufMinus1] < 0 || (
                        buf[0] == 'D' &&
                                buf[1] == 'A' &&
                                buf[2] == 'T' &&
                                buf[3] == 'A' &&
                                buf[4] == ':')) {

                    if (sb.length() > 0) {
                        ret.add(new DumbTokenList(sb.toString()));
                        sb.setLength(0);
                    }

                    if (buf[bufMinus1] < 0) {
                        break;
                    }

                } else {

                    sb.append(new String(new byte[] { (byte) buf[bufMinus1] }, charset));
                    //                    sb.append((char) buf[bufMinus1]);
                }


                // Shift minibuffer to front.
                for (int i = 0; i < bufMinus1; i++) {
                    buf[i] = buf[i + 1];
                }
            }


        } catch (IOException e) {
            e.printStackTrace();
        }


        // DEDUPLICATE DTLs
        for (int i = ret.size() - 1; i > 0; i--) {

            if (i < ret.size()) {
                final DumbTokenList dtlThis = ret.get(i);
                final int dtlThisTokenCount = dtlThis.tokens.size();

                for (int ii = i - 1; ii >= 0; ii--) {
                    final DumbTokenList dtlThat = ret.get(ii);
                    final int dtlThatTokenCount = dtlThat.tokens.size();


                    int scoreViaRemainingLines_this = dtlThisTokenCount;
                    int scoreViaRemainingLines_that = dtlThatTokenCount;


                    for (int o = 0; o < dtlThisTokenCount; o++) {
                        final String tokenThis = dtlThis.tokens.get(o);
                        for (int oo = 0; oo < dtlThatTokenCount; oo++) {
                            final String tokenThat = dtlThat.tokens.get(oo);

                            final Boolean tooSimilar = areLinesTooSimilar(tokenThis, tokenThat);
                            if (tooSimilar != null) {
                                scoreViaRemainingLines_this--;
                                scoreViaRemainingLines_that--;
                                break;
                            }

                        }
                    }

                    if (scoreViaRemainingLines_this < 0 || scoreViaRemainingLines_that < 0) {
                        throw new Error();
                    }

                    final double scoreActual_this = scoreViaRemainingLines_this / (double) dtlThisTokenCount;
                    final double scoreActual_that = scoreViaRemainingLines_that / (double) dtlThatTokenCount;


                    if (scoreViaRemainingLines_this < scoreViaRemainingLines_that) {
                        if (scoreActual_this < MIN_REMAININGLINES_PERCENTAGEOF_ALLLINES) {
                            final DumbTokenList removed = ret.remove(i);
                            //                            System.err.println("\nREMOVED:\n" + removed + "\nKEPT   :\n" + dtlThat);
                            break; // IMPORTANT.
                        }
                    } else {
                        if (scoreActual_that < MIN_REMAININGLINES_PERCENTAGEOF_ALLLINES) {
                            final DumbTokenList removed = ret.remove(ii);
                            //                            System.err.println("\nREMOVED:\n" + removed + "\nKEPT   :\n" + dtlThis);
                            break; // IMPORTANT.
                        }
                    }


                }

            }
        }

        return ret;
    }


}

1
Bunu çalıştırmak için, aşağıdaki komutları kullandım, javac "C:\Users\MLM\Downloads\CrappyChromeNotificationHistoryReader.java"(derlemek için), java -cp C:\Users\MLM\Downloads CrappyChromeNotificationHistoryReader(çalıştırmak için) Script başarısız oldu, if (scoreViaRemainingLines_this < 0 || scoreViaRemainingLines_that < 0) {bu yüzden tüm ayrıştırmayı yorumladım ve belirteç listeye eklendiğinde doTheInsaneParsingThingher şeyi yazdırdım System.out.println(sb.toString());. "Platform Bildirimleri" yalnızca sunucu çalışanı push bildirimlerini yönetir gibi görünüyor.
MLM

@MLM: Javac bilgisi için teşekkürler. Soruna gelince: Kaynağı açık bir Java 8 IntelliJ projesine yapıştırırsam, kullanıcı adımı ("dosya" değişkeni) ekler ve kodu çalıştırırsam benim için çalışır.
Rüya alanı başkanı
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.