/
Flutter - Push Notification

Flutter - Push Notification

Push bildirim izni istemek ve izine onay verildikten sonra token'ı yakalamak için alttaki satırları çalıştırın.

  • Kullanıcıdan push bildirimleri göndermek için izin istemek yerine, uygulamanız geçici yetkilendirme isteyebilir. 
    Geçici yetkilendirmeyi etkinleştirmek içinrequestPermission methodu içerisine isProvisional parametresini true olarak ayarlamalısınız(Provisional push yalnızca iOS platformunda desteklenmektedir)

String token = '-'; void _getTokenCallback(RDTokenResponseModel result) { if(result != null && result.deviceToken != null && result.deviceToken.isNotEmpty) { setState(() { token = result.deviceToken; }); } else { setState(() { token = 'Token not retrieved'; }); } } Future<void> requestPermission() async { await relatedDigitalPlugin.requestPermission(_getTokenCallback, isProvisional: true); }

 

Rich Push Notifications

Resimli, butonlu ve rozetli bildirimler alabilmek için aşağıdaki adımları takip ediniz.

  • Xcode'da yeni bir Notification Service Extension hedefi ekleyin ve bunu NotificationService olarak adlandırın.

  • Pod dosyanıza aşağıdaki bölümü ekleyin ve ardından pod install çalıştırın.

    target 'NotificationService' do use_frameworks! pod 'Euromsg' end post_install do |installer| installer.pods_project.targets.each do |target| flutter_additional_ios_build_settings(target) target.build_configurations.each do |config| config.build_settings['APPLICATION_EXTENSION_API_ONLY'] = 'No' end end end

     

  • NotificationService hedefinin dağıtım hedefini iOS 11 olarak ayarlayın.

  • NotificationService.swift dosya içeriğini aşağıdaki kodla değiştirin.

    import UserNotifications import Euromsg class NotificationService: UNNotificationServiceExtension { var contentHandler: ((UNNotificationContent) -> Void)? var bestAttemptContent: UNMutableNotificationContent? override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) { self.contentHandler = contentHandler bestAttemptContent = (request.content.mutableCopy() as? UNMutableNotificationContent) Euromsg.didReceive(bestAttemptContent, withContentHandler: contentHandler) } override func 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. if let contentHandler = contentHandler, let bestAttemptContent = bestAttemptContent { Euromsg.didReceive(bestAttemptContent, withContentHandler: contentHandler) } } }

 

Carousel Push Notifications

Carousel push bildirimleri alabilmek için aşağıdaki adımları izleyin.

  • Xcode'da yeni bir Notification Content Extension hedefi ekleyin ve bunu NotificationContent olarak adlandırın.

  • Pod dosyanıza aşağıdaki bölümü ekleyin ve ardından pod install çalıştırın.

    target 'NotificationContent' do use_frameworks! pod 'Euromsg' end

     

  • NotificationContent hedefinin dağıtım hedefini iOS 11 olarak ayarlayın.

  • MainInterface.storyboard ve NotificationContent.swift dosyalarını silin. Ardından, NotificationContent klasörü altında EMNotificationViewController.swift adlı bir Swift dosyası oluşturun.

  • EMNotificationViewController.Swift dosya içeriğini aşağıdaki kodla değiştirin.

    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 //Add if you want to track which element has been selected carouselView.delegate = self self.view = carouselView } } /** Add if you want to track which carousel element has been selected */ extension EMNotificationViewController: CarouselDelegate { func selectedItem(_ element: EMMessage.Element) { //Add your work... print("Selected element is => \(element)") } }

     

  • NotificationContent/Info.plist'inize aşağıdaki bölümü ekleyin.

    <key>NSExtension</key> <dict> <key>NSExtensionAttributes</key> <dict> <key>UNNotificationExtensionCategory</key> <string>carousel</string> <key>UNNotificationExtensionDefaultContentHidden</key> <false /> <key>UNNotificationExtensionInitialContentSizeRatio</key> <real>1</real> <key>UNNotificationExtensionUserInteractionEnabled</key> <true /> </dict> <key>NSExtensionPointIdentifier</key> <string>com.apple.usernotifications.content-extension</string> <key>NSExtensionPrincipalClass</key> <string>NotificationContent.EMNotificationViewController</string> </dict>

 

Geofencing

Kullanıcılarınızı lokasyon bazlı takip edip önceden belirlediğiniz alanlara girdiklerinde push bildirim atabilirsiniz. Bunu kullanmak için alttaki adımları takip edin.

iOS

  • Xcode'da, Info.plist dosyasına NSLocationAlwaysAndWhenInUseUsageDescription ve NSLocationWhenInUseUsageDescription anahtarlarını ekleyin.

  • Xcode'da, background modlarından Background fetch ve Location updates modlarını etkinleştirin.

  • Eklentiyi başlatırken geofenceEnabled değerini true olarak ayarlayın. Ayrıca maxGeofenceCount parametresi için bir sayı sağlayın (maks. 20 desteklenir).

Android

  • AndroidManifest.xml dosyanıza aşağıdaki izinleri ekleyin

    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />

     

  • AndroidManifest.xml dosyanıza aşağıdaki hizmeti ve alıcıları ekleyin

    <service android:name="com.visilabs.android.gps.geofence.GeofenceTransitionsIntentService" android:enabled="true" android:permission="android.permission.BIND_JOB_SERVICE" /> <receiver android:name="com.visilabs.android.gps.geofence.VisilabsAlarm" android:exported="false"/> <receiver android:name="com.visilabs.android.gps.geofence.GeofenceBroadcastReceiver" android:enabled="true" android:exported="true"/>

 

Set Push Permit

Uygulama için push bildirimlerini etkinleştirmek veya devre dışı bırakmak için yalnızca setNotificationPermission yöntemini çağırabilirsiniz.

relatedDigitalPlugin.setNotificationPermission(true);

 

Related content

Copyright 2020 Related Digital