• (九十七)集成JPush实现远程通知和推送的发送


    上节介绍了通过直接和APNS交互实现推送的方法,较为繁琐,最为重要的是发送推送需要特定的服务端,通过JPush,不仅可以简化客户端的接收,还可以通过控制台或者API实现通知的发送。

    首先注册JPush,创建应用,需要传入p12交换证书,如果只是调试,传入开发证书即可,打开Keychain Access,点击左侧的login,右键点击Export,即可导出为p12,注意设置密码,在应用创建时有相应的地方填入证书密码。选择p12后即可完成应用的创建,点击应用可以看到App Key和Master Secret,App Key在客户端用的到,二者在服务端都用的到。

    【客户端的集成】

    ①首先去JPush官网下载iOS SDK,将lib导入工程,并且导入下面这些框架:


    这些框架必须导入,因为即使是高版本的Xcode也不能自动导入storyboard和静态库所需要的框架

    ②新建一个plist,名为PushConfig.plist,在里面填写下面的内容:

    注意APP_KEY填写创建的应用的KEY;CHANNEL指的是统计渠道,可以随意填写;第一项写0代表开发者证书,1代表生产证书。

    不要忘记修改info.plist中的bundle identifier和创建应用时一致,也必须和推送证书一致

    ③打开后台开关:

    ④在AppDelegate中用下面的代码来初始化,就可以接收消息了。

    //
    //  AppDelegate.m
    //  集成JPush
    //
    //  Created by 11 on 7/30/15.
    //  Copyright (c) 2015 soulghost. All rights reserved.
    //
    
    #import "AppDelegate.h"
    #import "APService.h"
    
    @interface AppDelegate ()
    
    @end
    
    @implementation AppDelegate
    
    
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        
        if ([[UIDevice currentDevice].systemVersion doubleValue] >= 8.0) {
            
            [APService registerForRemoteNotificationTypes:UIUserNotificationTypeBadge categories:nil];
            
        }else{
            
            [APService registerForRemoteNotificationTypes:UIUserNotificationTypeBadge categories:nil];
            
        }
        
        [APService setupWithOption:launchOptions];
        
        return YES;
    }
    
    - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
        
        // Required
        [APService registerDeviceToken:deviceToken]; // JPush自动管理deviceToken。
    }
    
    - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
        
        // Required
        [APService handleRemoteNotification:userInfo];
    }
    
    - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
        
        
        // IOS 7 Support Required
        [APService handleRemoteNotification:userInfo];
        completionHandler(UIBackgroundFetchResultNewData);
    }
    
    @end
    

    【推送的发送】

    有两种方式,一是通过控制台,二是通过API。

    ①控制台发送:

    在控制台点击推送、发送通知,经过设置即可发送出去。

    ②利用API,这里以php为例,首先下载vendor.tar.gz到服务端,然后解压,新建一个php文件,写入如下内容:

    注意引入vendor/autoload.php时的路径。

    注意填写key和secret,然后修改消息体,即可实现发送不同内容。

    <?php
    require_once 'vendor/autoload.php';
    use JPushModel as M;
    use JPushJPushClient;
    use JPushExceptionAPIConnectionException;
    use JPushExceptionAPIRequestException;
    
    $br = '<br/>';
    $app_key = '这里填写key';
    $master_secret = '这里填写secret';
    $client = new JPushClient($app_key, $master_secret);
    
    $result = $client->push()
        ->setPlatform(Mall)
        ->setAudience(Mall)
        ->setNotification(M
    otification('Hi, JPush')) // 消息体
        ->send();
    echo 'Push Success.' . $br;
    echo 'sendno : ' . $result->sendno . $br;
    echo 'msg_id : ' .$result->msg_id . $br;
    echo 'Response JSON : ' . $result->json . $br;
    ?>



  • 相关阅读:
    关于多机处理问题
    Prime
    Djkstra
    jbdc总结
    mysql存储过程
    sqlHelper 类型的编写
    JDBC开发
    java线程
    java事件监听机制
    坦克大战编程
  • 原文地址:https://www.cnblogs.com/aiwz/p/6154095.html
Copyright © 2020-2023  润新知