راهاندازی سریع ریاکتنیتیو
پیشنیاز
قبل از شروع کار موارد زیر را بررسی و از درستی آنها اطمینان حاصل نمایید.
- Android
- iOS
- برای گذر از تحریم سرورهای Jcenter از ابزار گذرازتحریم یا ... استفاده کنید.
MinSDKVersion
>= 14- اپلیکیشن باید در کنسول ثبتشود. Pushe console
- توکن مانیفست از کنسول برداشتهشود.
- دستگاه تست باید دارای گوگلپلیسرویس بوده و اینترنت آن فعالباشد.
- اپلیکیشن باید در کنسول ثبتشود. Pushe console
- توکن مانیفست از کنسول برداشتهشود.
- اینترنت دستگاه فعال باشد
اضافه کردن کتابخانه
اضافه کردن کتابخانه در نسخه قبل از ۶۰ ریاکتنیتیو و بعد از آن کمی متفاوت میباشد که در زیر هر دو حالت را میتوانید مشاهده کنید.
- نسخهی 0.60 و بالاتر
- نسخهی زیر 0.60
با استفاده از دستور زیر کتابخانه ی پوشه را به پروژه خود اضافه کنید.
npm i -P pushe-react-native
با استفاده از دستور زیر کتابخانه ی پوشه را به پروژه خود اضافه کنید.
npm i -P pushe-react-native
سپس باید آن را به پروژهی خود لینک کنید:
react-native link pushe-react-native
دستور باید در کامندلاین وارد شود و در صورتی که
npm
در کامندلاین دستور معتبری نیست بایستی به داکیومنت ReactNative برای حل مشکل مراجعه کنید.
در صورتی که نسخه ریاکتنیتوی که استفاده می کنید 0.60.0 و به بعد میباشد دیگر نیازی به لینککردن کتابخانه نیست.
- Android
- iOS
اضافهکردن محتوای مانیفست
محتوای مانیفست را از کنسول (اطلاعات بیشتر) کپی کنید و آن را به فایل AndroidManifest.xml
در پروژهی خود اضافهکنید. محتوا باید شبیه خط زیر باشد:
<manifest ...>
<application ...>
<meta-data android:name="pushe_token" android:value="{PUSHE_TOKEN}" />
</application>
</manifest>
فایل مانیفست برنامه در آدرس زیر در پروژه قابل دسترسیست:
android/src/main/AndroidManifest.xml
تست و ثبت دستگاه در پوشه
پس از اجرای برنامه، باید در Android logcat لاگهای زیر را ببینید (ممکن است به دلیل ارتباط با سرور این پروسه چند ثانیه طول بکشد):
میتوانید از دستور react-native log-android
و یا react-native log-ios
برای مشاهدهی لاگهای خروجی از اپلیکیشن استفاده کنید.
// Android logcat:
Pushe: Starting Pushe initialization
Pushe: Pushe initialization complete
Pushe: Registration is required, performing registration
Pushe: Registration successful
نصب podهای لازم
وارد فولدر ios شوید و دستور زیر را اجرا کنید.
pod install --repo-update
پس از اجرای این دستور میتوانید با بازکردن فایل YourProjectName.xcworkspace
برنامه ios خود را اجرا کنید.
اضافه کردن کلیدهای موردنیاز
در فایل Info.plist
متناظر با Target
اصلی برنامه، کلیدها و مقادیر زیر را وارد کنید.
<plist version="1.0">
<dict>
...
<key>FirebaseAppDelegateProxyEnabled</key>
<false/>
<key>Pushe</key>
<dict>
<key>AppGroupsId</key>
<string>Enter your App-Groups id</string>
<key>ManifestKey</key>
<string>Enter your Menifest-Key from console.pushe.co</string>
</dict>
</dict>
</plist>
برای نمونه:
<plist version="1.0">
<dict>
<key>FirebaseAppDelegateProxyEnabled</key>
<false/>
<key>Pushe</key>
<dict>
<key>AppGroupsId</key>
<string>group.my.uri.myApp.shared</string>
<key>ManifestKey</key>
<string>cWQyMzR3bTlsOxBUcjQ0ZUBJaxZAOTA4NDU35Tk1MDcy</string>
</dict>
</dict>
</plist>
همچنین در فایل Info.plist
متناظر با Notification Service Extension، کلیدها و مقادیر زیر را وارد کنید.
<plist version="1.0">
<dict>
<key>Pushe</key>
<dict>
<key>AppGroupsId</key>
<string>Enter your App-Groups id</string>
</dict>
</dict>
</plist>
- برای راهنمایی در مورد نحوه ایجاد
App-Groups
به لینک زیر مراجعه کنید.
اضافهکردن کدهای موردنیاز
و در Target مربوط به NotificationServiceExtension
:
- Swift
- Objective-C
// NotificationService.swift file
import UserNotifications
import Pushe
class NotificationService: UNNotificationServiceExtension {
var contentHandler: ((UNNotificationContent) -> Void)?
var bestAttemptContent: UNMutableNotificationContent?
override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
self.contentHandler = contentHandler
self.bestAttemptContent = (request.content.mutableCopy() as? UNMutableNotificationContent)
if let bestAttemptContent = self.bestAttemptContent {
PusheClient.shared.didReceiveNotificationExtensionRequest(mutableContent: bestAttemptContent, contentHandler: contentHandler)
}
}
override func serviceExtensionTimeWillExpire() {
if let contentHandler = self.contentHandler, let bestAttemptContent = self.bestAttemptContent {
contentHandler(bestAttemptContent)
}
}
}
// NotificationService.m file
#import "NotificationService.h"
@import Pushe;
@interface NotificationService ()
@property (nonatomic, strong) void (^contentHandler)(UNNotificationContent *contentToDeliver);
@property (nonatomic, strong) UNMutableNotificationContent *bestAttemptContent;
@end
@implementation NotificationService
- (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler {
self.contentHandler = contentHandler;
self.bestAttemptContent = [request.content mutableCopy];
[PusheClient.shared didReceiveNotificationExtensionRequest:self.bestAttemptContent :self.contentHandler];
}
- (void)serviceExtensionTimeWillExpire {
self.contentHandler(self.bestAttemptContent);
}
@end
تست و ثبت دستگاه در پوشه
پس از اجرای برنامه و فراخوانی کد رجیستر پوشه، باید در کنسول Xcode لاگهای زیر را ببینید (ممکن است به دلیل ارتباط با سرور این پروسه چند ثانیه طول بکشد):
Setting up Pushe ...
apns-token:<YOUR_APNS_TOKEN>
fcm-token:<DEVICE_FCM_TOKEN>
registering in Pushe ...
📗 -> successfully registered in Pushe
در صورتی که نصب و راهاندازی پوشه مشکل داشتید میتوانید به مشکلات و خطاها مراجعه کنید.
برای بررسی امکانات بیشتر پوشه به مطالعهی ادامهی مستندات بپردازید.