Метод обмена сообщениями Firebase Swizzling не работаетIOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Метод обмена сообщениями Firebase Swizzling не работает

Сообщение Anonymous »

Я внедряю FCM (обмен сообщениями Firebase Cloud). Я сделал приложение для получения уведомления и данных от консоли FCM. У меня есть и уведомление о моем сервере, так и уведомление Firebase. Я хочу обработать 2 -ти тип уведомлений (с моего сервера и от FCM) отдельно. Я прошел через документы, и это можно достичь, пройдя обработчик уведомлений в AppDelegate < /p>
Но проблема в том, что я могу получить только данные сообщений FCM (iOS 10) в < /p>
-(void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler {}
< /code>
и < /p>
-(void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler {}
< /code>
обратный вызов для FCM Delegate < /p>
// The callback to handle data message received via FCM for devices running iOS 10 or above.
- (void)applicationReceivedRemoteMessage:(nonnull FIRMessagingRemoteMessage *)remoteMessage {

// Print full message
NSLog(@"Can get here firebase?%@", [remoteMessage appData]);
}
< /code>
Приведенный выше обратный вызов никогда не называется < /p>
Как мы можем использовать Swizzling для настройки сообщения обработчика FCM отдельно? application.applicationIconBadgeNumber = 0;

if (floor(NSFoundationVersionNumber) = __IPHONE_10_0
UNAuthorizationOptions authOptions =
UNAuthorizationOptionAlert
| UNAuthorizationOptionSound
| UNAuthorizationOptionBadge;
[[UNUserNotificationCenter currentNotificationCenter]
requestAuthorizationWithOptions:authOptions
completionHandler:^(BOOL granted, NSError * _Nullable error) {
}
];

// For iOS 10 display notification (sent via APNS)
[[UNUserNotificationCenter currentNotificationCenter] setDelegate:self];
// For iOS 10 data message (sent via FCM)

[[FIRMessaging messaging] setRemoteMessageDelegate:self];
#endif
}

[[UIApplication sharedApplication] registerForRemoteNotifications];

// [START configure_firebase]
[FIRApp configure];
// [END configure_firebase]
// Add observer for InstanceID token refresh callback.
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(tokenRefreshNotification:)
name:kFIRInstanceIDTokenRefreshNotification object:nil];

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.backgroundColor = [UIColor whiteColor];

_rootViewController = [[RootViewController alloc] initWithNibName:nil bundle:nil];

[self.window setRootViewController:_rootViewController];
[self.window makeKeyAndVisible];

NSDictionary *remoteNotification = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
if (remoteNotification)
[self handleRemoteNotification:remoteNotification shouldPrompt:NO];

self.isFirstTime = true;
self.isJustForRefresh = 0;

return YES;
< /code>
Как я могу заставить его работать?// [START refresh_token]
- (void)tokenRefreshNotification:(NSNotification *)notification {
// Note that this callback will be fired everytime a new token is generated, including the first
// time. So if you need to retrieve the token as soon as it is available this is where that
// should be done.
NSString *refreshedToken = [[FIRInstanceID instanceID] token];
NSLog(@"InstanceID token: %@", refreshedToken);

// Connect to FCM since connection may have failed when attempted before having a token.
[self connectToFcm];

// TODO: If necessary send token to application server.
}
// [END refresh_token]

// [START connect_to_fcm]
- (void)connectToFcm {
[[FIRMessaging messaging] connectWithCompletion:^(NSError * _Nullable error) {
if (error != nil) {
NSLog(@"Unable to connect to FCM. %@", error);
} else {
NSLog(@"Connected to FCM.");
}
}];
}
// [END connect_to_fcm]

- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken {
NSString *sanitizedDeviceToken = [[[[deviceToken description]
stringByReplacingOccurrencesOfString:@"" withString:@""]
stringByReplacingOccurrencesOfString:@" " withString:@""];

DLog(@"sanitized device token: %@", sanitizedDeviceToken);
[PushNotificationManager API_registerAPNSToken:sanitizedDeviceToken
onCompletion:^(BOOL success, NSError *error){}];

[[FIRInstanceID instanceID]setAPNSToken:deviceToken type:FIRInstanceIDAPNSTokenTypeSandbox];

}
< /code>
обновлено < /h2>
Я включил эту функцию, но все еще не работал < /p>
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler{
if (userInfo[@"gcm.message_id"] != nil) {
NSLog(@"Should get here FCM?");
[[FIRMessaging messaging]appDidReceiveMessage:userInfo];
}else {
NSLog(@"test fetchCompletion handler: %@",userInfo.description);
}

}


Подробнее здесь: https://stackoverflow.com/questions/409 ... ot-working
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Метод Swizzling не вызывает оригинальных Touchesbegan и Touchesdended Methods в Swift
    Anonymous » » в форуме IOS
    0 Ответы
    1 Просмотры
    Последнее сообщение Anonymous
  • Ошибка токена обмена сообщениями Firebase Cloud, но токен обновлен
    Гость » » в форуме IOS
    0 Ответы
    93 Просмотры
    Последнее сообщение Гость
  • Ошибка сборки Android: повторяющийся класс с Protobuf при добавлении обмена сообщениями Firebase в приложении
    Anonymous » » в форуме Android
    0 Ответы
    29 Просмотры
    Последнее сообщение Anonymous
  • Генерация токена OAUTH для обмена облачными сообщениями Firebase PHP
    Anonymous » » в форуме Php
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Генерация токена OAUTH для обмена облачными сообщениями Firebase PHP
    Anonymous » » в форуме Php
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous

Вернуться в «IOS»