اساتید بزرگوار اگه بخواهیم تو ری اکت نیتیو کدهای ussd (به طور مثال *۶۶۵۵*۱۰۰#
) را مستقیم اجرا کنیم بدون این که این کد در صفحه شماره گیر گوشی حک بشه چیکار باید کرد؟ یعنی کاربر دیگه مجبور نباشه دکمه call را بزنه و مستقیم اجرا بشه و response دریافت کنه
۱۰۰#*۶۶۵۵*
با تشکر
درود
در نسخه های اولیه ریاکت نیتیو باید این کارو با زبان نیتیو انجام میدادید، فکر کنم هنوز به همین شکله
و پکیجی هم براش منتشر شده که iOS, Android & Windows رو پشتیبانی میکنه:
https://github.com/Kwamena-S/react-native-ussd-dial
کدهای نیتیو موجود در این پروژه رو باید با پروژه ریاکت نیتیو ادغام کنید.
مستنداتش هم برای سیستم عامل های مختلف رو توضیح داده
خدمت دوست عزیز علی آقای بیات عارضم که من دو تا پکیج برای این موضوع پیدا کردم که یکیش همینی هست که شما فرمودید ولی ظاهرا این پکیج خیلی معتبر نیست چون هیچ issue هم مطرح نشده
لطف کنید آخر صفحه قسمت Usage ملاحظه بفرمایید هیچی توضیح نداده
اصلا چه متدهایی داره هیچی نگفته و فقط کتابخونه را به شکل زیر معرفی کرده
import RNUssdDial from 'react-native-ussd-dial';
و اصلا روش استفاده نگفته و RNUssdDial را داده بدون هیچ پارامتری
لااقل یه پارامتری میداد که کد ussd را بشه وارد کرد
توابع dialNumber() و getDeviceName() را هم که وب استورم نشون داد کار نکرد.
کتابخونه دوم هم اینه:
https://www.npmjs.com/package/react-native-send-intent
که این هم با این که مو به مو همه مراحل نصب و تنظیماتشو انجام دادم یه مشکلی داشت که هرکاری کردم نشد که نشد
مثلا برای استفاده اینجوری گفته:
var SendIntentAndroid = require('react-native-send-intent');
SendIntentAndroid.sendPhoneDial('+55 48 9999-9999', false);
ولی تو اجرا ارور زیر را نشون میده
undefined is not an object (evaluating ‘_reactNativeSendIntent.SendINtentAndroid.sendPhoneCall’)
که اصلا پکیج را نشناخته من حتی به روش import هم تعریف کردم ولی بازم نشد و همچنان همین ارور را نشون میده
import SendIntentAndroid from ‘react-native-send-intent’;
و یا
import {SendIntentAndroid} from ‘react-native-send-intent’;
در پکیج دوم هم که لینکشو گذاشتید، باید ماژول رو Register کنید. در فایل "MainApplication.java":
import com.burnweb.rnsendintent.RNSendIntentPackage; // <--- import
public class MainApplication extends Application implements ReactApplication {
......
@Override
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
new MainReactPackage(),
new RNSendIntentPackage()); // <------ add this line to your MainApplication class
}
......
}
آیا این مرحله رو هم انجام دادید؟
اگه پکیج ها کار نمیکنند، فکر کنم باید کد این قسمت رو به صورت بومی بنویسید و به برنامه ریاکت نیتیو الحاقش کنید.
کد این کار در جاوا کم و بیش شبیه زیره:
ابتدا یه متد مینویسید برای پارس کردن کد:
private Uri ussdToCallableUri(String ussd) {
String uriString = "";
if(!ussd.startsWith("tel:"))
uriString += "tel:";
for(char c : ussd.toCharArray()) {
if(c == '#')
uriString += Uri.encode("#");
else
uriString += c;
}
return Uri.parse(uriString);
}
و سپس در کلاس Intent متد رو لود و استفاده میکنید:
Intent callIntent = new Intent(Intent.ACTION_CALL, ussdToCallableUri(yourUSSDCodeHere));
startActivity(callIntent);
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟