iOS 友盟推送通知使用教程

iOS项目中如果要加入推送通知的功能,首先得在开发者中心创建App IDs的时候勾选Push Notifications 的Development 与 Distribution 两个选项开通推送通知的功能,目前网络上有很多关于在开发者中心创建项目证书的博文,对于证书的申请及配置本篇文章不再做过多的介绍。

140526_tDbf_2728740.png

一,友盟上创建项目并导入开发证书与生产证书

      进入友盟官网(http://push.umeng.com)申请账号并登陆,进入消息推送模块创建应用,根据需要填入相应信息。开发者证书与生产证书创建完成后,需要下载到本地并双击打开,进入钥匙串,找到开发证书与生产证书分别右击导出,输入密码后保存起来。在友盟已经创建的项目中分别上传之前保存的开发证书与生产证书,并输入密码,两个顺序不要弄错,完成后点保存即可。如下图所示:

140327_svjX_2728740.png

二,下载并导入SDK

  1,下载友盟最新的SDK(http://dev.umeng.com/push/ios/sdk-download)找到SDK文件夹UMessage_sdk_xx导入到项目中,导入完成后添加库文件UserNotification.framwork

    2,打开推送开关:

         target->Capbilities->Push Notifications

         144254_O8za_2728740.png

       需要后台静默通知的话,可以打开以下运程推送:

    

   3,添加代码

      打开AppDelegate.m导入以下头文件:

#import "UMessage.h"
#import "UserNotifications/UserNotifications.h"

      在didFinishLaunchingWithOptions方法中添加以下方法:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
[UMessage startWithAppkey:@"5850f2d0310c9364a80018a8" launchOptions:launchOptions httpsenable:YES ];
    
    //注册通知
    [UMessage registerForRemoteNotifications];
    
    //iOS10必须加下面这段代码。
    UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
    center.delegate=self;
    UNAuthorizationOptions types10=UNAuthorizationOptionBadge|  UNAuthorizationOptionAlert|UNAuthorizationOptionSound;
    [center requestAuthorizationWithOptions:types10     completionHandler:^(BOOL granted, NSError * _Nullable error) {
        if (granted) {
            //点击允许
            //这里可以添加一些自己的逻辑
            
            MyLog(@"One");
        } else {
            //点击不允许
            //这里可以添加一些自己的逻辑
            MyLog(@"Two");
        }
    }];
    
    //打开日志,方便调试
    [UMessage setLogEnabled:YES];
}

4,处理运程,前台及后台通知的方法:

//远程推送通知的接收
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler{

    MyLog(@"后台远程推送通知:%@",userInfo);

//iOS10新增:处理前台收到通知的代理方法
-(void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler{
    
    NSDictionary * userInfo = notification.request.content.userInfo;
    if([notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
        //应用处于前台时的远程推送接受
        //关闭友盟自带的弹出框
        [UMessage setAutoAlert:NO];
        //必须加这句代码
        [UMessage didReceiveRemoteNotification:userInfo];
        
        MyLog(@"前台远程推送通知:%@",userInfo);
        
    }else{
        //应用处于前台时的本地推送接受
        MyLog(@"Four");
    }
    //当应用处于前台时提示设置,需要哪个可以设置哪一个
    completionHandler(UNNotificationPresentationOptionSound|UNNotificationPresentationOptionBadge|UNNotificationPresentationOptionAlert);
}

//iOS10新增:处理后台点击通知的代理方法
-(void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler{
    
    NSDictionary * userInfo = response.notification.request.content.userInfo;
    if([response.notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
        //应用处于后台时的远程推送接受
        //必须加这句代码
        [UMessage didReceiveRemoteNotification:userInfo];
        
        MyLog(@"后台推送通知:%@",userInfo);
        
        MyLog(@"Six");
    }
    
}

三,测试模式下通知信息的发送

    1,进入友盟管理平台,点击测试模式:

    165428_V2Ui_2728740.png

    2,添加测试设备,其中Device Token为真机调试时产生的。

165618_k0yC_2728740.png

    3,创建并发送测试消息:

    165902_VIL2_2728740.png

170017_btii_2728740.png

   4,完成后点击发送按钮即可

 

 

"既专注技术也享受生活--iOS资源库"

QQ群:524955567

 

每天一篇最有价值的文章

微信公众号:YiKun_info

微信公众号:

 

转载于:https://my.oschina.net/Kuture/blog/828508

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值