Bu sayfa React-Native-Related-Digital SDK kurulum klavuzudur.
Euromessage entegrasyonu sırasında paket kurulumu yaptıysanız bu adımı atlayın.
Kurulum
SDK içerisinde ihtiyaç duyulan kütüphaneyi kurun
npm install @react-native-community/async-storage
ya da
yarn add @react-native-community/async-storage
Alttaki komutu çalıştırarak React-Native-Related-Digital SDK’sını kurun
npm install react-native-related-digital
ya da
yarn add react-native-related-digital
Pod’ları yükleyin (Sadece IOS)
Alttaki komut satırlarını sırasıyla çalıştırın
cd ios pod install
Platform Entegrasyonları
Android
Bir Firebase projesi oluşturun. Size verilen Google-services.json dosyasını
android/app
klasörü altına kopyalayın. Örnek kullanımandroid/build.gradle
dosyanızın dependencies bölümüne aşağıdaki satırı ekleyin. Örnek kullanımclasspath 'com.google.gms: google-services:4.3.3'
android/app/build.gradle
dosyanızın en altına aşağıdaki satırı ekleyin. Örnek kullanımapply plugin: 'com.google.gms.google-services'
Uygulama ön plandayken bildirim almak için
AndroidManifest.xml
dosyanızınapplication
bölümüne aşağıdaki kodu ekleyin. Örnek kullanım<service android:name="com.relateddigital.reactnative.NotificationService"> <intent-filter> <action android:name="com.google.firebase.MESSAGING_EVENT"/> </intent-filter> </service>
Geofence özelliğini etkinleştirmek için
AndroidManifest.xml
dosyanızınapplication
bölümüne aşağıdaki kodu ekleyin. Örnek kullanım<service android:name="com.visilabs.gps.geofence.GeofenceTransitionsIntentService" android:enabled="true" android:permission="android.permission.BIND_JOB_SERVICE" /> <service android:name="com.visilabs.gps.geofence.GeofenceMonitor" android:enabled="true" android:exported="true" /> <receiver android:name="com.visilabs.gps.geofence.GeofenceTransitionsReceiver" android:enabled="true" android:exported="true"> <intent-filter> <action android:name="com.visilabs.android.gps.geofence.ACTION_RECEIVE_GEOFENCE" /> </intent-filter> </receiver> <receiver android:name="com.visilabs.gps.geofence.VisilabsAlarm" android:exported="false" /> <receiver android:name="com.visilabs.gps.geofence.GeofenceBroadcastReceiver" android:enabled="true" android:exported="true" />
Sdk’yı çalıştırmak için alttaki init kodunu
MainApplication.java
dosyanıza ekleyin.
Geofence özelliğini etkin hale getirmek içinVisilabs.CreateAPI
fonksiyonunun son parametresini(12.)true
değeri girin.import com.visilabs.Visilabs; import euromsg.com.euromobileandroid.EuroMobileManager;
@Override public void onCreate() { // ... initEuroMessage(); } private void initEuroMessage() { String appAlias = "demo-alias"; String huaweiAppAlias = "demo-alias-huawei"; String organizationId = "OID"; String siteId = "SID"; String datasource = "datasource"; String channel = "Android"; String segmentUrl = "http://lgr.visilabs.net"; String realtimeUrl = "http://rt.visilabs.net"; String targetUrl = "http://s.visilabs.net/json"; String actionUrl = "http://s.visilabs.net/actjson"; String geofenceUrl = "http://s.visilabs.net/geojson"; Visilabs.CreateAPI(organizationId, siteId, segmentUrl, datasource, realtimeUrl, channel, this, targetUrl, actionUrl, 30000, geofenceUrl, true); EuroMobileManager euroMobileManager = EuroMobileManager.init(appAlias, huaweiAppAlias, this); euroMobileManager.setPushIntent("com.demo.MainActivity", this); }
iOS
Push Notifications ve Background Modes->Remote Notifications özelliklerini etkinleştirin.
AppDelegate.h
dosyanıza alttaki satırı ekleyin. Örnek kullanım#import <UserNotifications/UNUserNotificationCenter.h>
AppDelegate.h
dosyanızdaki @interface ile başlayan satıra UNUserNotificationCenterDelegate parametresini ekleyin. Son hali alttaki gibi olmalı. Örnek kullanım
Klasik React Native projelerinde@interface AppDelegate : UIResponder <UIApplicationDelegate, RCTBridgeDelegate, UNUserNotificationCenterDelegate>
Expo projelerinde
@interface AppDelegate : UMAppDelegateWrapper <RCTBridgeDelegate, EXUpdatesAppControllerDelegate, UNUserNotificationCenterDelegate>
AppDelegate.m
dosyanıza alttaki satırları ekleyin. Örnek kullanım#import "RelatedDigitalPushModule.h" #import <UserNotifications/UserNotifications.h>
AppDelegate.m
dosyanızdadidFinishLaunchingWithOptions
methodunun içerisindekireturn
ifadesinin hemen üzerine alttaki satırları ekleyin. Örnek kullanımUNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter]; center.delegate = self;
AppDelegate.m
dosyanıza alttaki methodları ekleyin. Örnek kullanım- (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings { [RelatedDigitalPushModule didRegisterUserNotificationSettings:notificationSettings]; } - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { [RelatedDigitalPushModule didRegisterForRemoteNotificationsWithDeviceToken:deviceToken]; } - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler { [RelatedDigitalPushModule didReceiveRemoteNotification:userInfo fetchCompletionHandler:completionHandler]; } - (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error { [RelatedDigitalPushModule didFailToRegisterForRemoteNotificationsWithError:error]; } -(void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler { completionHandler(UNAuthorizationOptionSound | UNAuthorizationOptionAlert | UNAuthorizationOptionBadge); }
AppDelegate.m
dosyasındakididFinishLaunchingWithOptions
fonksiyonununun return ifadesinden hemen öncesine alttaki kodu ekleyin.InAppNotificationsEnabled
vegeofenceEnabled
parametrelerini istediğiniz gibi değiştirin.[RelatedDigitalPushModule initVisilabs:@"organization_id" profileId:@"profile_id" dataSource:@"datasource" inAppNotificationsEnabled:true requestTimeoutSeconds:30 geofenceEnabled:true maxGeofenceCount:20];
SDK Swift kodu içerdiğinden ve xcode her hedefte en az bir boş swift dosyası gerektirdiğinden projenizin ios dizinine boş bir swift dosyası ekleyin.
Empty.swift
Görsel veya video gibi zengin içerikli push bildirim özelliklerini etkinleştirmek için alttaki adımları uygulayın.
1- Projenize Targets altındanNotification Service Extension
ekleyin ve isminiRelatedDigitalNotificationService
olarak değiştirin. Ardından bu hizmetin hedef iOS sürümünü 10.0 olarak değiştirin. Örnek kullanım
2- Yeni eklenmiş olanNotificationService.m
dosyasının içerisini alttakilerle değiştirin.
Örnek kullanım#import "NotificationService.h" #import "RelatedDigitalNotificationService.h" @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]; [RelatedDigitalNotificationService didReceiveNotificationRequest:self.bestAttemptContent withContentHandler:self.contentHandler]; } - (void)serviceExtensionTimeWillExpire { // Called just before the extension will be terminated by the system. // Use this as an opportunity to deliver your "best attempt" at modified content, otherwise the original push payload will be used. [RelatedDigitalNotificationService didReceiveNotificationRequest:self.bestAttemptContent withContentHandler:self.contentHandler]; } @end
3- Podfile dosyanızın kök seviyesine aşağıdaki satırları ekleyin. Örnek kullanımtarget 'RelatedDigitalNotificationService' do pod 'react-native-related-digital', :path => '../node_modules/react-native-related-digital' use_native_modules! end # Post Install processing for RelatedDigitalNotificationService causing errors def notification_service_post_install(installer) installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings['APPLICATION_EXTENSION_API_ONLY'] = 'NO' end end end
4- Podfile dosyanızın ana hedef bölümünenotification_service_post_install(installer)
satırını ekleyin, alttaki şekilde gözükmeli. Örnek kullanımpost_install do |installer| notification_service_post_install(installer) # Other post install function calls end
5- Sdk, Swift kodu içerdiğinden ve xcode her hedefte en az bir boş swift dosyası gerektirdiğinden, RelatedDigitalNotificationService hedefinize de boş bir swift dosyası ekleyin.Empty.swift
6- Projenizin ios dizinindepod install
komutunu çalıştırın.Carousel push bildirim için
1- Projenize Targets altındanNotification Content Extension
ekleyin ve isminiRelatedDigitalNotificationContent
olarak değiştirin. Ardından bu hizmetin hedef iOS sürümünü 10.0 olarak değiştirin. Info.plist dışında RelatedDigitalNotificationContent altına yeni eklenen dosyaları kaldırın. Ardından aşağıdaki içeriğe sahip EMNotificationViewController.swift dosyasını ekleyin.import UIKit import UserNotifications import UserNotificationsUI import Euromsg @available(iOS 10.0, *) @objc(EMNotificationViewController) class EMNotificationViewController: UIViewController, UNNotificationContentExtension { let appUrl = URL(string: "euromsgExample://") let carouselView = EMNotificationCarousel.initView() var completion: ((_ url: URL?, _ userInfo: [AnyHashable: Any]?) -> Void)? func didReceive(_ notification: UNNotification) { carouselView.didReceive(notification) } func didReceive(_ response: UNNotificationResponse, completionHandler completion: @escaping (UNNotificationContentExtensionResponseOption) -> Void) { carouselView.didReceive(response, completionHandler: completion) } override func loadView() { completion = { [weak self] url, userInfo in if let url = url { self?.extensionContext?.open(url) if url.scheme != self?.appUrl?.scheme, let userInfo = userInfo { Euromsg.handlePush(pushDictionary: userInfo) } } else if let url = self?.appUrl { self?.extensionContext?.open(url) } } carouselView.completion = completion self.view = carouselView } }
2- Yeni eklenenRelatedDigitalNotificationContent/Info.plist
dosyanıza alttaki satırları ekleyin, eğer varsa değiştirin.<key>NSExtension</key> <dict> <key>NSExtensionAttributes</key> <dict> <key>UNNotificationExtensionUserInteractionEnabled</key> <true/> <key>UNNotificationExtensionDefaultContentHidden</key> <false/> <key>UNNotificationExtensionCategory</key> <string>carousel</string> <key>UNNotificationExtensionInitialContentSizeRatio</key> <real>1</real> </dict> <key>NSExtensionPrincipalClass</key> <string>RelatedDigitalNotificationContent.EMNotificationViewController</string> <key>NSExtensionPointIdentifier</key> <string>com.apple.usernotifications.content-extension</string> </dict>
3- Podfile dosyanızın kök seviyesine alttaki satırları ekleyin.target 'RelatedDigitalNotificationContent' do use_native_modules! pod 'Euromsg', '>= 2.0.0' end
4- Projenizin ios dizinindepod install
komutunu çalıştırın.