تمنحك وحدة SearchApi
واجهة React Native عامة للتفاعل مع iOS Search API، Core Spotlight.
لمزيد من المعلومات حول واجهات برمجة تطبيقات بحث iOS، راجع https://developer.apple.com/ios/search/.
npm install react-native-search-api --save
react-native link
إلى الجزء العلوي من AppDelegate.m
الخاص بك أضف السطر التالي:
# import " RCTSearchApiManager.h "
في تطبيق AppDelegate الخاص بك، قم بإضافة ما يلي:
- ( BOOL )application:(UIApplication *)application continueUserActivity:( NSUserActivity *)userActivity restorationHandler:( void (^)( NSArray * _Nullable))restorationHandler {
return [RCTSearchApiManager application: application continueUserActivity: userActivity restorationHandler: restorationHandler];
}
اشترك في الأحداث المفتوحة لعنصر البحث في مكوناتك مثل هذا:
componentDidMount ( ) {
< ... >
SearchApi . addOnSpotlightItemOpenEventListener ( this . handleOnSpotlightItemOpenEventListener ) ;
SearchApi . addOnAppHistoryItemOpenEventListener ( this . handleOnAppHistoryItemOpenEventListener ) ;
}
لمنع تسرب الذاكرة، لا تنس إلغاء الاشتراك:
componentWillUnmount ( ) {
< ... >
SearchApi . removeOnSpotlightItemOpenEventListener ( this . handleOnSpotlightItemOpenEventListener ) ;
SearchApi . removeOnAppHistoryItemOpenEventListener ( this . handleOnAppHistoryItemOpenEventListener )
}
بشكل عام، يجب أن تكون مهتمًا بما إذا كان التطبيق قد تم تشغيله باستخدام البحث، لذلك فكر في استخدام الطريقتين التاليتين:
// For the spotlight item:
SearchApi . getInitialSpotlightItem ( ) . then ( result => {
if ( result ) {
console . log ( 'Started with a spotlight item!' )
}
} )
// For the app history item:
SearchApi . getInitialAppHistoryItem ( ) . then ( result => {
if ( result ) {
console . log ( 'Started with an app history item!' )
}
} )
لإنشاء عنصر تسليط الضوء جديد، استخدم indexSpotlightItem
أو indexSpotlightItems
:
SearchApi . indexSpotlightItem ( item ) . then ( result => {
console . log ( 'Success' ) ;
} ) . catch ( err => {
console . log ( 'Error: ' + err ) ;
} ) ;
لإضافة عناصر جديدة إلى سجل التطبيق، استخدم createUserActivity
:
SearchApi . indexAppHistoryItem ( item ) . then ( result => {
console . log ( 'Success' ) ;
that . setState ( { labelText : 'Success' } ) ;
} ) . catch ( err => {
console . log ( 'Error: ' + err ) ;
that . setState ( { labelText : ( 'Error: ' + err ) } ) ;
} ) ;
المعلمات التي قد تحددها العناصر مذكورة أدناه:
تحتوي القواميس، التي تم تمريرها لإنشاء عناصر بارزة وسجل التطبيقات، على بعض المفاتيح الشائعة وبعض المفاتيح المحددة، إليك قائمة بجميع المفاتيح الممكنة.
title
: سلسلةعنوان السلعة. مطلوب لكلا النوعين من العناصر.
contentDescription
: سلسلةوصف السلعة. خياري.
keywords
: مصفوفةمجموعة من الكلمات الرئيسية المخصصة لعنصر البحث. خياري.
thumbnail
: سلسلة|int|object الصورة المصغرة التي سيتم عرضها في نتائج البحث. نفس تنسيق source
في مكون Image
. خياري.
أمثلة:
var localItem = {
< ... > ,
thumbnail : require ( '/react-native/img/favicon.png' )
} ;
var remoteItem = {
< ... > ,
thumbnail : { uri : 'https://facebook.github.io/react-native/docs/assets/favicon.png' }
} ;
يرجى الرجوع إلى الوثائق لمزيد من التفاصيل.
uniqueIdentifier
: سلسلةالمعرف الفريد للعنصر المميز، والذي تم تمريره لاحقًا أثناء حدث فتح العنصر. مطلوب.
domain
: سلسلةمجال العنصر المميز. خياري.
userInfo
: كائنقاموس، تم تمريره لاحقًا أثناء حدث فتح العنصر. مطلوب.
eligibleForPublicIndexing
: منطقي تسمح العلامة، عند ضبطها على true
بإضافة العنصر إلى الفهرس العام. خياري.
expirationDate
: تاريختاريخ انتهاء صلاحية عنصر نشاط المستخدم. خياري.
webpageURL
: سلسلةعنوان URL للصفحة، الذي يمثل نفس المحتوى الموجود على موقع التطبيق.
© 2017 PresenceKit بواسطة Ombori AB