2

プロジェクトに Firebase を使用しており、プッシュ通知を使用したいと考えています。

コンソールを使用せずに、コードからアプリのすべてのユーザーにプッシュ通知を送信する方法はありますか?

Cloudkit と CKSubscritpitons を使用してこれを達成しましたが、Firebase で同様のことを行う方法があるかどうか疑問に思っています。

ありがとう!

4

2 に答える 2

2

通知コンソールは、ユーザーのグループに通知を送信するためのものです。

プログラムで通知を送信したい場合は、Firebase Cloud Messagingをご覧ください。これには、信頼できるプロセス (サーバーなど) でコードを実行する必要があります。

于 2016-05-25T15:19:25.740 に答える
2

CocoaPods なしで統合する

最初に Firebase Doc を読んでください。=> Firebase Doc

  1. ここで Firebase にプロジェクトを登録します => ここでプロジェクトを登録します
  2. ここから GoogleService-Info.plist ファイルを取得します => プロジェクト => 設定 => 一般
  3. プロジェクトに GoogleService-Info.plist ファイルをドロップします。
  4. Firebase => project => settings => Cloud Messaging で Notification .p12 Certificates (Production and Development) を設定します。
  5. Firebase SDK のダウンロードはこちら => Firebase SDK のダウンロード
  6. プロジェクトに SDK フォルダーを作成し、その中にすべての SDK フォルダーをドロップします。
  7. このフレームワークを Xcode に追加します => libicucore.tbd
  8. Xcodeでバックグラウンドモードをオンに設定=>プロジェクト=>機能=>バックグラウンドモードをオン=>リモート通知
  9. Info.Plist ファイルFirebaseAppDelegateProxyEnabled Set BOOL NOに追加します。

ここに画像の説明を入力

Objective-c では、Appdelegate.m ファイル

#import "AppDelegate.h"
#import "Firebase.h"
#import "AFNHelper.h"

@interface AppDelegate (){

    NSString *InstanceID;
}
@property (nonatomic, strong) NSString *strUUID;
@property (nonatomic, strong) NSString *strDeviceToken;
@end
@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    UIUserNotificationType allNotificationTypes =
    (UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge);
    UIUserNotificationSettings *settings =
    [UIUserNotificationSettings settingsForTypes:allNotificationTypes categories:nil];
    [[UIApplication sharedApplication] registerUserNotificationSettings:settings];
    [[UIApplication sharedApplication] registerForRemoteNotifications];

    [FIRApp configure];

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(tokenRefreshNotification:) name:kFIRInstanceIDTokenRefreshNotification object:nil];

    return YES;
}
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {

    NSLog(@"Message ID: %@", userInfo[@"gcm.message_id"]);
    [[FIRMessaging messaging] appDidReceiveMessage:userInfo];

    NSLog(@"userInfo=>%@", userInfo);
}
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {

    [[FIRInstanceID instanceID] setAPNSToken:deviceToken type:FIRInstanceIDAPNSTokenTypeProd];
    NSLog(@"deviceToken1 = %@",deviceToken);

}
- (void)tokenRefreshNotification:(NSNotification *)notification {
   NSLog(@"instanceId_notification=>%@",[notification object]);
    InstanceID = [NSString stringWithFormat:@"%@",[notification object]];

 [self connectToFcm];  
}

- (void)connectToFcm {

[[FIRMessaging messaging] connectWithCompletion:^(NSError * _Nullable error) {
    if (error != nil) {
        NSLog(@"Unable to connect to FCM. %@", error);
    } else {

        NSLog(@"InstanceID_connectToFcm = %@", InstanceID);
        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{

            dispatch_async(dispatch_get_main_queue(), ^{
                [self sendDeviceInfo];
                NSLog(@"instanceId_tokenRefreshNotification22=>%@",[[FIRInstanceID instanceID] token]);

            });
        });


    }
}];}
于 2016-07-13T12:00:51.353 に答える