JPush(オーロラプッシュ)実戦まとめ


JPushについて
オーロラプッシュは国内のサービスメーカーが提供するワンストップpushサービス(iOS、androidもサポート)で、後にインスタント通信の能力を加えてappで使用する.シンプルで信頼性が高く、価格競争力のあるサービス(シンプルな機能はすべて無料、プレミアム版は有料)の構築に力を入れ、アプリケーション開発者が業務開発に焦点を当てることができ、push関連の技術はすべてオーロラプッシュで解決され、オーロラプッシュのapiを呼び出すだけでよい.だからこそ、開発者の仲間たちはその評価がかなりいい.筆者のappは、サーバからモバイルクライアントへの簡単なメッセージの送信のニーズを追加し、jpushのサービスを試して問題を解決する準備をしています(iOS側の統合プロセスのみを説明します).
統合手順
Step 1:オーロラ除去登録アカウント:https://www.jpush.cn/を選択し、アプリケーションを登録します.
Step 2:apns証明書をオーロラにアップロードし、apns証明書の生成手順を参照します.
http://docs.jpush.io/client/ios_tutorials/#ios_1このドキュメントをよく読むと、アップロードに成功するとコンソールのアプリケーションの詳細に「検証済み」と表示され、証明書が有効であることを示します.
Step 3:あなたのappプロジェクトを再構成し、新しいapnsをサポートするprovisionファイルを使用します(この前にapnsをサポートしている場合は、交換しなくてもいいです).そうしないと、devicetokenは正常に入手できません.
Step 4:そのsdkを統合し、1つを含む.aと1つ.hファイル、最新バージョンは約2.1で、sdkにはdemoも含まれています.2.1バージョンまでに鍵情報などを保存するためにplistファイルを作成する必要があります.最新バージョンではこのファイルは必要ありません.
sdkダウンロードアドレス:https://www.jpush.cn/common/products#product-download
Step 5:主なコードは以下のように変更されました.
appdelegate.h:
static NSString *appKey = @"Your_app_key";
static NSString *channel = @"Your_channel_identifier";
static BOOL isProduction = NO;

appdelegate.m:
#import "JPUSHService.h"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [JPUSHService registerForRemoteNotificationTypes:(UIUserNotificationTypeBadge |
                                                      UIUserNotificationTypeSound |
                                                      UIUserNotificationTypeAlert)
                                          categories:nil];
    [JPUSHService setupWithOption:launchOptions appKey:appKey
                      channel:channel apsForProduction:isProduction];
    // your codes
    return YES;
}

- (void)application:(UIApplication *)application
didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
    NSLog(@"%@", [NSString stringWithFormat:@"Device Token: %@", deviceToken]);
    [JPUSHService registerDeviceToken:deviceToken];
}

- (void)application:(UIApplication *)application
didReceiveRemoteNotification:(NSDictionary *)userInfo
{
    NSLog(@"didReceiveRemoteNotification :%@", userInfo);
    [JPUSHService handleRemoteNotification:userInfo];
}
- (void)application:(UIApplication *)application
didReceiveRemoteNotification:(NSDictionary *)userInfo
fetchCompletionHandler:
(void (^)(UIBackgroundFetchResult))completionHandler
{
    NSLog(@"didReceiveRemoteNotification fetchCompletionHandler:%@", userInfo);
    [JPUSHService handleRemoteNotification:userInfo];
    completionHandler(UIBackgroundFetchResultNewData);
}

- (void)application:(UIApplication *)application
didReceiveLocalNotification:(UILocalNotification *)notification
{

    //[JPUSHService showLocalNotificationAtFront:notification identifierKey:nil];
}

カスタムメッセージに関する通知をリスニングします(アプリケーションで単一のmanagerを作成して管理することをお勧めします):
        NSNotificationCenter *defaultCenter = [NSNotificationCenter defaultCenter];
        [defaultCenter addObserver:self
                          selector:@selector(networkDidSetup:)
                              name:kJPFNetworkDidSetupNotification
                            object:nil];
        [defaultCenter addObserver:self
                          selector:@selector(networkDidClose:)
                              name:kJPFNetworkDidCloseNotification
                            object:nil];
        [defaultCenter addObserver:self
                          selector:@selector(networkDidRegister:)
                              name:kJPFNetworkDidRegisterNotification
                            object:nil];
        [defaultCenter addObserver:self
                          selector:@selector(networkDidLogin:)
                              name:kJPFNetworkDidLoginNotification
                            object:nil];
        [defaultCenter addObserver:self
                          selector:@selector(networkDidReceiveMessage:)
                              name:kJPFNetworkDidReceiveMessageNotification
                            object:nil];
        [defaultCenter addObserver:self
                          selector:@selector(serviceError:)
                              name:kJPFServiceErrorNotification
                            object:nil];
// handler
- (void)networkDidSetup:(NSNotification *)notification
{
    NSLog(@"networkDidSetup %@, alias=%@", [notification userInfo], [NSString stringWithFormat:@"iOS_%@", GSignInConfig.userID]);
    //               ,app                
    [JPUSHService setTags:nil
                    alias:[NSString stringWithFormat:@"iOS_%@", GSignInConfig.userID]
         callbackSelector:nil
                   target:nil];
}

- (void)networkDidClose:(NSNotification *)notification
{
    NSLog(@"networkDidClose %@", [notification userInfo]);
}

- (void)networkDidRegister:(NSNotification *)notification
{
    NSLog(@"networkDidRegister %@", [notification userInfo]);
}

- (void)networkDidLogin:(NSNotification *)notification
{
    NSLog(@"networkDidLogin %@", [notification userInfo]);
}

- (void)networkDidReceiveMessage:(NSNotification *)notification
{
    NSLog(@"networkDidReceiveMessage notification = %@", notification);
}

- (void)serviceError:(NSNotification *)notification
{
    NSDictionary *userInfo = [notification userInfo];
    NSString *error = [userInfo valueForKey:@"error"];
    NSLog(@"serviceError %@", error);
}

apiリファレンス:http://docs.jpush.io/client/ios_api/#api-ios
Step 6:コンソールでメッセージを送信し、テストします.
https://www.jpush.cn/push/apps/61466f6a310571060af61a13/push/message/ここではカスタムメッセージとpushメッセージを送信できます.カスタムメッセージはフロントでのみ受信され、長接続で送信されます.筆者はここではカスタムメッセージのみを使用し,フロントでサーバがアプリケーションにメッセージを送信するためのリアルタイム性がよい.
エラーチェック
http://docs.jpush.io/client/ios_tutorials/上のリンクの思考ガイドを参照して、demo(demoのbundle idをあなたのエンジニアリングのbundle idに変更し、自分のmobile provisionファイルを構成してテストを比較する)と組み合わせて、一般的によくある問題を解決することができます.
まとめ
筆者の数時間の実戦を経て、アプリケーション内にJpushのサービスが統合されたのは、かなり効率的だと言えるだろう.Jpushは速度、信頼性、ドキュメントなど各方面でよく表現されており、開発者に友好的です.このようなニーズを持つ開発者の仲間たちは、JPushの案を優先することができます.