אני מנסה להפעיל התראות מקומיות עבור TWA של אתר ה-Discourse העצמי שלי ונתקלתי ב"כישלון רך" מוזר מאוד באימות Digital Asset Link.
להלן התסמינים המדויקים:
-
האפליקציה מופעלת ופועלת במסך מלא ללא שורת הכתובת, מה שמרמז שהקישור לנכס עובד חלקית.
-
עם זאת, הודעת Toast “פועל ב-Chrome” מופיעה בכל הפעלה.
-
והכי חשוב, כאשר ה-PWA מבקש הרשאת התראות, הוא מציג את ההנחיה בסגנון דפדפן, לא את תיבת הדו-שיח המקומית של אנדרואיד. זה מוכיח שהאצלת ה-API המקומית נכשלת.
התנהגות זו עקבית בכל מכשירי הבדיקה (אנדרואיד 12 ו-13) ועם קבצי APK שנוצרו על ידי Bubblewrap וגם על ידי PWABuilder של מיקרוסופט.
לאחר ניפוי באגים נרחב, אישרתי שכל תצורת הלקוח שלי והתצורה הפונה לציבור של השרת נראית מושלמת. הבעיה נראית כבעיית שרת עדינה שמשפיעה רק על מאמת אנדרואיד.
הנה מה שכבר אימתתי:
-
מפתח חתימה ו-
assetlinks.json: טביעת האצבע SHA-256 שלandroid.keystoreשלי היא התאמה מדויקת של 100% עם טביעת האצבע בקובץ/.well-known/assetlinks.jsonהחי שלי. -
תגובת השרת: השרת שלי מגיש את כתובת ה-URL של
assetlinks.jsonעם סטטוס200 OK, ה-Content-Typeהנכון שלapplication/json, וללא כותרות CORS חוסמות כאשר נבדק עם כלים סטנדרטיים של אינטרנט. -
תצורת אפליקציית אנדרואיד: ה-
AndroidManifest.xmlשנוצר נכון ומכיל אתcom.google.androidbrowserhelper.trusted.DelegationServiceהסטנדרטי. -
הגדרות מנהל Discourse: הגדרות האבטחה שלי עבור
cors originsו-Allowed crawler user agentsריקות שתיהן.
בהתחשב בהתנהגות “כישלון רך” ספציפית זו, השאלה שלי היא:
האם יש כלל Nginx ידוע, הגדרת חומת אש, או בעיית תגובת שרת עדינה (כמו עיכוב קל או כותרת לא סטנדרטית) בהגדרת ברירת המחדל של Discourse העצמי שתגרום למאמת אנדרואיד להעניק “אמון חלקי” (המאפשר את ממשק המשתמש במסך מלא) אך לדחות את רמת האמון הגבוהה יותר הנדרשת להאצלת API מקומית?
אני מגיע לסוף מה שניתן לאבחן מצד הלקוח. כל תובנה לגבי התצורה העמוקה של השרת תתקבל בברכה רבה.