מודול Reaative Native המאפשר לך לרשום מטפל שגיאות גלובלי

בלוג

מודול Reaative Native המאפשר לך לרשום מטפל שגיאות גלובלי

reag-native-exception-handler

מודול מקורי של תגובה המאפשר לך לרשום מטפל שגיאות עולמי שיכול ללכוד חריגים קטלניים/לא קטלניים שלא נתפסו. המודול מסייע במניעת התרסקות פתאומית של אפליקציות RN ללא הודעה חיננית למשתמש.

בתרחיש הנוכחי:

כיצד לקבל קלט משתמש ב-c++
  • In DEV mode , you get a RED Screen error pointing your errors.
  • In Bundled mode , the app just quits without any prompt !

כדי להתמודד עם זה אנו רושמים מטפל שגיאות עולמי שיכול לשמש למשל:

  1. שלח דוחות באג לצוות dev כאשר האפליקציה קורסת
  2. הצג תיבת דו -שיח יצירתית שאומרת שהמשתמש צריך להפעיל מחדש את היישום

עדכון - V2:

** V2 של מודול זה תומך כעת בתפיסת חריגים מקומיים לא מטופלים גם יחד עם חריגות JS ** ישנם לא שבירת שינויים. אז בטוח לשדרג מ- v1 ל- v2. אז אין סיבה שלא.

V2.9

  • מוסיף תמיכה לביצוע מטפלי שגיאות שהוגדרו בעבר (כעת מודול זה יכול לעבוד עם מודולי ניתוח אחרים)
  • מוסיף גישה משופרת להחלפת מטפלי שגיאות מקומיים.
  • תודה @ דמיאן סולימנדו

דוגמא ריפו ניתן למצוא כאן: _ https://github.com/master-atul/react-native-exception-handler-example _

מסכים

ללא כל טיפול בשגיאות

ב- DEV MODE

במצב BUNDLED

עם מטפל בתגובה-מקורית-חריגה במצב BUNDLED

הַתקָנָה:

yarn add react-native-exception-handler

אוֹ

npm i react-native-exception-handler --save

התקנה אוטומטית לרוב

react-native link react-native-exception-handler

דוגמה לשיחה ב-javascript API

התקנה ידנית

ios

  1. ב- XCode, בנווט הפרויקט, לחץ באמצעות לחצן העכבר הימני | _+_ | ➜ | _+_ |
  2. עבור אל | _+_ | ➜ | _+_ | והוסף | _+_ |
  3. ב- XCode, בנווט הפרויקט, בחר את הפרויקט שלך. הוסף | _+_ | לפרויקט שלך | _+_ | ➜ | _+_ |
  4. הפעל את הפרויקט שלך (| _+_ |)<
שימוש ב- Cocoapods
  1. הוסף | _+_ | לפודפיל שלך
  2. הפעלה | _+_ |

דְמוּי אָדָם

  1. פתח | _+_ |
  • הוסף | _+_ | לייבוא ​​בראש הקובץ
  • הוסף | _+_ | לרשימה שהוחזרה על ידי | _+_ | שיטה
  1. צרף את השורות הבאות ל | _+_ |:

    Libraries
  2. הכנס את השורות הבאות בתוך בלוק התלות ב- | _+_ |:

    Add Files to [your project's name]

אנא קראו לפני שאתם נכנסים לסעיף השימוש

בואו להכיר לכם את סוג השגיאות ביישום RN.

  • שגיאות המיוצרות על ידי קוד Javascript שלך (כולל את כל קוד התגובה שלך). אנו נתייחס לשגיאות אלו כ JS_Exceptions הולך קדימה.

  • שגיאות המיוצרות על ידי מודלים מקוריים. נתייחס לאלה כאל יוצאי דופן הולך קדימה.

חריגים לא מטופלים משאירים את האפליקציה במצב קריטי.

במקרה JS_Exceptions אתה יכול לתפוס את החריגים הלא מטופלים האלה ולבצע משימות כמו התראות הצגה או חלונות קופצים, לבצע ניקוי או אפילו להכות API כדי ליידע את צוותי ה- dev לפני סגירת האפליקציה.

במקרה יוצאי דופן זה נהיה הרבה יותר גרוע. למרות שאתה יכול לתפוס את החריגים הבלתי מטופלים האלה ולבצע משימות כמו ניקוי או יציאה או אפילו להכות על ממשק API כדי ליידע את צוותי ה- dev לפני סגירת האפליקציה, אינך יכול להציג תיבת התראה של JS או לעשות דברים ממשק משתמש באמצעות קוד JS. זה חייב להיעשות באמצעות השיטות המקומיות המסופקות על ידי מודול זה בבסיס הקוד NATIVE המתאים עבור iOS ו- Android. המודול אכן מספק מטפלים המוגדרים כברירת מחדל: P. אז תקבל חלונות קופצים המוגדרים כברירת מחדל במקרה של שגיאות. ברור שאתה יכול להתאים אותם אישית. ראה סעיף התאמה אישית.

נוֹהָג

לתפוס JS_Exceptions

node_modules

לתפוס יוצאי דופן

react-native-exception-handler

מומלץ להגדיר את שני המטפלים. הערה: | _+_ | פועל רק במצב מקובץ - הוא יראה את המסך האדום כאשר הוא מוחל על מצב dev.

עיין בדוגמאות למידע נוסף

התאמה אישית

התאמה אישית setJSExceptionHandler .

במקרה של | _+_ | אתה יכול לעשות כל מה שאפשר. מכאן שאין כאן הרבה להתאים אישית.

ReactNativeExceptionHandler.xcodeproj

התאמה אישית setNativeExceptionHandler

כברירת מחדל בכל פעם ש יוצאי דופן מתרחש אם השתמשת | _+_ |, יחד עם החזרה המצוינת היית רואה חלונות קופצים (זהו מטפל ברירת המחדל המקורי שהוגדר על ידי מודול זה).

באנדרואיד ו- iOS תראה משהו כמו

איפה אפשר לקנות אסימון חיים

שינוי מטפל בחריגה מקומית של Android (גישה מומלצת)

(קוד מקורי חייב להיכתב) מומלץ לעשות זאת באולפן אנדרואיד

  • ב | _+_ |
libReactNativeExceptionHandler.a

שינוי ממשק המשתמש של מטפל ב- Android Native Exception (גישה מותאמת לפעילות מותאמת (גישה ישנה) ... עוזב לתאימות בחזרה)

(קוד מקורי חייב להיכתב) מומלץ לעשות זאת באולפן אנדרואיד

  • צור פעילות ריקה ב | _+_ |. לדוגמה נניח CustomErrorDialog.java
  • התאם אישית את הפעילות שלך כך שתראה ותנהג כפי שאתה צריך.
  • ב | _+_ |
Build Phases

שינוי ממשק המשתמש של מטפל החריגה המקורי של iOS (קוד מקורי חייב להיכתב) מומלץ שתעשה זאת ב- XCode

שלא כמו אנדרואיד, במקרה של iOS, אין דרך להפעיל מחדש את האפליקציה אם היא התרסקה. כמו כן, במהלך א יוצאי דופן ממשק המשתמש הופך להיות יציב למדי מכיוון שהחריג התרחש בשרשור ממשק המשתמש הראשי. מכאן שאף אחד ממפעלי הקליקים או העיתונות לא יעבוד.

בהתחשב בכך, לכל היותר נוכל רק להציג למשתמש דיאלוג ולהודיע ​​למשתמש לפתוח מחדש את האפליקציה.

אם שמת לב שקופץ ברירת המחדל של חריג המקורי עושה בדיוק את זה. להתאמה אישית של ממשק המשתמש לחלון המוקפץ.

  • ב- XCode, פתח את הקובץ | _+_ |
Link Binary With Libraries

מה זה | _+_ |?

במקרה של iOS אנו נועלים את שרשור ממשק המשתמש לאחר הצגת הקופץ שלנו כדי למנוע מהאפליקציה להיסגר. מכאן שכאשר סיימנו להציג את המוקפץ עלינו לסגור את האפליקציה שלנו לאחר זמן מה. אך מכיוון שהכפתורים שלנו לא יפעלו כפי שמפעלי הקליקים שלנו לא יעבדו (הסביר קודם). כדי לסגור את האפליקציה או להסיר את נעילת ממשק המשתמש על חריג, עלינו לקרוא לשיטה זו | _+_ |

מכאן שקבענו טיימר של 4 שניות ולאחר מכן התקשרנו לשיטת releaseExceptionHold לעזוב את האפליקציה לאחר 4 שניות של הצגת הקופץ

Cmd+R

דוגמאות

הפעל מחדש על דוגמת שגיאה

דוגמה זו מראה כיצד להשתמש במודול זה הצג תיבת דו -שיח באג חיננית למשתמש בעת קריסה והפעל מחדש את האפליקציה כאשר המשתמש לוחץ על אישור!

pod 'ReactNativeExceptionHandler', :podspec => '../node_modules/react-native-exception-handler/ReactNativeExceptionHandler.podspec'

באג לכידת דוגמא לצוות dev

דוגמה זו מראה כיצד להשתמש במודול זה כדי לשלוח שגיאות גלובאליות לצוות ה- dev ולהציג למשתמש משתמש דו -שיח חינני בעת קריסה!

pod install

דוגמאות נוספות ניתן למצוא בתיקיית דוגמאות

  • שימור מטפל זקן (תודה לזה)

בעיות ותיקונים ידועים:

תגובת-ניווט-ניווט (Wix)

זה קורה במיוחד כאשר אתה משתמש ספריית wix לניווט יחד עם מטפל מגיב-מותאם-חריג. בכל פעם שמתרחשת שגיאה, היא תיצור מחדש את היישום שמעל למסך ההתרסקות.

לתקן:

עליך להגדיר פרמטר שני כ שֶׁקֶר תוך כדי שיחה setNativeExceptionHandler . הפרמטר השני הוא שדה ספציפי לאנדרואיד אשר מייצג forceQuitOnError. כאשר הוא מוגדר כ- false, הוא אינו עוזב את האפליקציה בכוח על שגיאה. בקצרה :

תפריט bootstrap 4 מגה

האשראי מגיע ל גוסטבו פאו ואלבסורי

android/app/src/main/java/[...]/MainApplication.java

מטפלים חריגים שהוגדרו בעבר אינם מבוצעים יותר

הרבה מסגרות (במיוחד Analytics sdk's) מיישמות מטפלים חריגים עולמיים. על מנת שהמסגרות האלה יפעלו תוך שימוש ב- react-native-exception-hanlder, תוכל להעביר ערך בוליאני כארגומנט שלישי ל | _+_ |) מה שיפעיל את הביצוע של המטפל הגלובלי האחרון שנרשם.

פרטי הורדה:

מְחַבֵּר: מאסטר-אטול

GitHub: https://github.com/master-atul/react-native-exception-handler

#תגובה-מקומית #תגובה #אפליקציות לנייד