Open MatthewJemielity opened 3 years ago
The problem is that IOS push is not working. Messages do not appear. Can anyone tell what I'm doing wrong? I send notification from firebase console
What I did:
dependency:
index.js
App.js
import React from 'react'; import {View, Alert, DeviceEventEmitter, Button} from 'react-native'; import PushNotificationIOS from '@react-native-community/push-notification-ios'; export default class App extends React.Component{ onRegistered = (deviceToken) => { Alert.alert('Registered For Remote Push', `Device Token: ${deviceToken}`, [ { text: 'Dismiss', onPress: null, }, ]); }; onRemoteNotification = (notification) => { const isClicked = notification.getData().userInteraction === 1; const result = ` Title: ${notification.getTitle()};\n Subtitle: ${notification.getSubtitle()};\n Message: ${notification.getMessage()};\n badge: ${notification.getBadgeCount()};\n sound: ${notification.getSound()};\n category: ${notification.getCategory()};\n content-available: ${notification.getContentAvailable()};\n Notification is clicked: ${String(isClicked)}.`; if (notification.getTitle() == undefined) { Alert.alert('Silent push notification Received', result, [ { text: 'Send local push', onPress: sendLocalNotification, }, ]); } else { Alert.alert('Push Notification Received', result, [ { text: 'Dismiss', onPress: null, }, ]); } }; sendNotification = () => { DeviceEventEmitter.emit('remoteNotificationReceived', { remote: true, aps: { alert: {title: 'title', subtitle: 'subtitle', body: 'body'}, badge: 1, sound: 'default', category: 'REACT_NATIVE', 'content-available': 1, 'mutable-content': 1, }, }); }; componentDidMount = async () => { PushNotificationIOS.requestPermissions().then( (data) => { console.log('PushNotificationIOS.requestPermissions', data); }, (data) => { console.log('PushNotificationIOS.requestPermissions failed', data); }, ); PushNotificationIOS.addEventListener('register', this.onRegistered); PushNotificationIOS.addEventListener('notification', this.onRemoteNotification); } render(){ return <View style={{justifyContent: 'center', alignItems: 'center', flex: 1}}> <Button title='send notification' onPress={this.sendNotification}/> </View> } }
AppDelegate.h
#import <UserNotifications/UNUserNotificationCenter.h> #import <React/RCTBridgeDelegate.h> #import <UIKit/UIKit.h> //@interface AppDelegate : UIResponder <UIApplicationDelegate, RCTBridgeDelegate> @interface AppDelegate : UIResponder <UIApplicationDelegate, RCTBridgeDelegate, UNUserNotificationCenterDelegate> @property (nonatomic, strong) UIWindow *window; @end
AppDelegate.m
#import "AppDelegate.h" #import <UserNotifications/UserNotifications.h> #import <RNCPushNotificationIOS.h> #import <React/RCTBridge.h> #import <React/RCTBundleURLProvider.h> #import <React/RCTRootView.h> #import <Firebase.h> #ifdef FB_SONARKIT_ENABLED #import <FlipperKit/FlipperClient.h> #import <FlipperKitLayoutPlugin/FlipperKitLayoutPlugin.h> #import <FlipperKitUserDefaultsPlugin/FKUserDefaultsPlugin.h> #import <FlipperKitNetworkPlugin/FlipperKitNetworkPlugin.h> #import <SKIOSNetworkPlugin/SKIOSNetworkAdapter.h> #import <FlipperKitReactPlugin/FlipperKitReactPlugin.h> static void InitializeFlipper(UIApplication *application) { FlipperClient *client = [FlipperClient sharedClient]; SKDescriptorMapper *layoutDescriptorMapper = [[SKDescriptorMapper alloc] initWithDefaults]; [client addPlugin:[[FlipperKitLayoutPlugin alloc] initWithRootNode:application withDescriptorMapper:layoutDescriptorMapper]]; [client addPlugin:[[FKUserDefaultsPlugin alloc] initWithSuiteName:nil]]; [client addPlugin:[FlipperKitReactPlugin new]]; [client addPlugin:[[FlipperKitNetworkPlugin alloc] initWithNetworkAdapter:[SKIOSNetworkAdapter new]]]; [client start]; } #endif @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { #ifdef FB_SONARKIT_ENABLED InitializeFlipper(application); #endif // Add me --- \/ if ([FIRApp defaultApp] == nil) { [FIRApp configure]; } // Add me --- /\ // ... RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions]; RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge moduleName:@"notify" initialProperties:nil]; rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1]; self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; UIViewController *rootViewController = [UIViewController new]; rootViewController.view = rootView; self.window.rootViewController = rootViewController; [self.window makeKeyAndVisible]; // Define UNUserNotificationCenter UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter]; center.delegate = self; return YES; } - (NSURL *)sourceURLForBridge:(RCTBridge *)bridge { #if DEBUG return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil]; #else return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; #endif } // Required for the register event. - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { [RNCPushNotificationIOS didRegisterForRemoteNotificationsWithDeviceToken:deviceToken]; } // Required for the notification event. You must call the completion handler after handling the remote notification. - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler { [RNCPushNotificationIOS didReceiveRemoteNotification:userInfo fetchCompletionHandler:completionHandler]; } // Required for the registrationError event. - (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error { [RNCPushNotificationIOS didFailToRegisterForRemoteNotificationsWithError:error]; } // Required for localNotification event - (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)(void))completionHandler { [RNCPushNotificationIOS didReceiveNotificationResponse:response]; } //Called when a notification is delivered to a foreground app. -(void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler { completionHandler(UNNotificationPresentationOptionSound | UNNotificationPresentationOptionAlert | UNNotificationPresentationOptionBadge); } @end
screenshoot from application:
When I call function sendNotification() I got this
The problem is that IOS push is not working. Messages do not appear. Can anyone tell what I'm doing wrong? I send notification from firebase console
What I did:
dependency:![Zrzut ekranu 2021-04-13 o 16 48 30](https://user-images.githubusercontent.com/56973197/114584343-dfd6a600-9c82-11eb-9b54-36b1aca708b8.png)
index.js![Zrzut ekranu 2021-04-13 o 16 58 40](https://user-images.githubusercontent.com/56973197/114584381-e8c77780-9c82-11eb-81dd-2500360f9ecd.png)
App.js
AppDelegate.h
AppDelegate.m
screenshoot from application:![IMG_0069](https://user-images.githubusercontent.com/56973197/114586250-c0d91380-9c84-11eb-99f0-7f3a6b405fec.PNG)
When I call function sendNotification() I got this![IMG_0068](https://user-images.githubusercontent.com/56973197/114586452-f847c000-9c84-11eb-8a0d-07d6a78b8288.PNG)