iOS 第一天 推送遇到的一些零碎问题

第一天上班,下午遇到个关于推送的问题,之前没接触过,感觉有点困难。


总结下大致流程


1.用系统自带钥匙串生成一个CertificateSigningRequest.certSigningRequest文件。(后面用来生成aps_development.cer)


2.苹果开发者中心创建APP IDs Bundle Identifier命名 com.*****.** 中间可以为公司名,后面app名称

这里面要用到上面的CertificateSigningRequest.certSigningRequest文件,上传后会生成一个aps_development.cer  是在Development Push SSL Certificate

双击aps_development.cer后在钥匙串中可看到下面包含了刚生成的一个钥匙

3.准备profile证书,因为推送消息只能在真机上测试,所以要建一个profile证书。

profiles Name ,这里写什么后面Xcode中的Plist文件就要写成什么,App IDs,Device 要选正确。

这里会生成一个pushtestdescDevprofile.mobileprovision,双击,在Xcode导航栏Windows  -- oganizor 打开,可看到新添加了一个证书

4.将钥匙串中的一个Apple Development IOS Push Services:***导出 会得到一个**.p12的文件,后台人员要用的一个文件。

至此生成了4个文件

1、PushTest.certSigningRequest
2、aps_development-6.cer(下载生成的支持推送服务的证书。)
3、pushtestdescDevprofile.mobileprovision
4、PushTest.p12

5.在Xcode的工程里面修改内容,在Support 修改Plist的内容改成和证书相同com.***.**  在building setting里面搜索prov  讲code sign 的none改成对应的名称


6,在appDelegate中添加如下代码


1、首先在项目的AppDelegate.m中加入以下两个代理方法
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { 
    NSString *token = [NSString stringWithFormat:@"%@", deviceToken];
    //获取终端设备标识,这个标识需要通过接口发送到服务器端,服务器端推送消息到APNS时需要知道终端的标识,APNS通过注册的终端标识找到终端设备。
    NSLog(@"My token is:%@", token);   
}  
- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {   
    NSString *error_str = [NSString stringWithFormat: @"%@", error];   
    NSLog(@"Failed to get token, error:%@", error_str);   
}
2、在AppDelegate.m的(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法中加入注册消息通知推送能力;加入当应用程序处于未启动状态时,判断是否由远程消息通知触发;加入清除消息推送通知标记。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  //判断是否由远程消息通知触发应用程序启动
    if ([launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey]!=nil) {
        //获取应用程序消息通知标记数(即小红圈中的数字)
        int badge = [UIApplication sharedApplication].applicationIconBadgeNumber;
        if (badge>0) {
           //如果应用程序消息通知标记数(即小红圈中的数字)大于0,清除标记。
            badge--;
          //清除标记。清除小红圈中数字,小红圈中数字为0,小红圈才会消除。
            [UIApplication sharedApplication].applicationIconBadgeNumber = badge;
        }
    }
    //消息推送注册
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:UIRemoteNotificationTypeSound|UIRemoteNotificationTypeAlert|UIRemoteNotificationTypeBadge];
}
3、在项目AppDelegate.m中加入消息接收处理代理方法。
//处理收到的消息推送
- (void)application:(UIApplication *)application 
didReceiveRemoteNotification:(NSDictionary *)userInfo
{
    //在此处理接收到的消息。
    NSLog(@"Receive remote notification : %@",userInfo);
}
到此前台工作完成



处理过程中遇到的问题

在Xcode的oganizor里面添加的证书显示感叹号,初步解决是需要重新下载

pushtestdescDevprofile.mobileprovision这个证书,

对于Xcode报错Not match,或者can not launch之类的,是开发者中心里面的证书,或者Xcode配置有误导致,细致检查一遍。

最后提示了一次***的iPhone locked 手机解锁程序才能运行。


第一天大致总结这样吧,睡觉。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值