zoukankan      html  css  js  c++  java
  • ios推送(友盟推送,百度推送,极光推送)

    我先来说一下我对原理的理解:

    移动设备一联网或者更换网络,都会把该网络的公网和路由的地址和端口,以及设备的信息请求到apns,这样苹果服务器apns就可以根据设备id找到ip地址。

    那么,在以上的基础上,一旦我们自己的服务器向apns发送消息,该消息携带指向目标设备和目标app等信息,apns接收到新消息准备推送,他就可以跟据该消息指向的设备找到ip地址,给该地址推送消息。

    手机接收到消息,会根据消息携带的信息判断是属于哪个app的,所以在点击推送消息的时候会启动相应的app

    友盟推送:

    开发测试时推送(必须在真机上),这里以下的操作,最好是在已经完成真机测试了,再进行以下操作:

    1,在苹果开发者中心,添加app ids,然后添加APNS Development Cer,下载安装,并导出.p12;创建developmentProfiles,运行。

    2,用.p12在 http://message.umeng.com/appList 中添加应用,复制appkey(后面会用到)

    3,下载sdk  http://dev.umeng.com/message/ios/sdk-download,导入sdk,在appDelegate.m中添加:

    - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
    {
        NSString *token = [[deviceToken description] stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]];
        token = [token stringByReplacingOccurrencesOfString:@" " withString:@""];
        NSLog(@"%@",token);
        [UMessage registerDeviceToken:deviceToken];
    }
    
    - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
    {
        [UMessage didReceiveRemoteNotification:userInfo];
    }

    4,回到第2步,http://message.umeng.com/540aaa38fd98c5727c021ac9/device ,添加设备,把在控制台打印的deviceToken复制过去。然后差不多就可以了

    以上有很多步骤省略了,大体意思应该能明白。

    百度推送:

    首先注意,百度推送是个坑,我建议使用友盟推送,但是为了统一,我才使用百度推送。

    为什么是坑呢,因为百度有两种推送,有一种不是我们用的,但是却混淆在一起。

    请在:http://developer.baidu.com/console#app/project 创建工程;并拿到key,

    而且开发文档也有2套,注意是这一套:http://developer.baidu.com/wiki/index.php?title=docs/cplat/push/guideios

    另外:文档中要注意的是:

    添加SDK到APP工程。

    1. 将libBPush.a和BPush.h添加到Xcode工程

    2. 添加JSONKit.m和JSONKit.h到Xcode工程,注意百度推送提供的JSONKit.m需要设置-fno-objc-arc,以兼容arc

    3,添加CoreTelephony.framework到工程

    草,现在还不能支持ios8,ios8都出来3个多月了

    激光推送

    也是个坑,总之有两个地方坑了我。

    1,我是用pods导入的JPush库,会报错

    Undefined symbols for architecture armv7: "_OBJC_CLASS_$_UIUserNotificationSettings"

    原因,pods下好的一个libPushSDK-1.8.2.a库文件需要手动导入。

    2,我是用的多个开发者账号同时开发,会报错

    Not get deviceToken yet. Maybe: your certificate not configured APNs

    或者

    did Fail To Register For Remote Notifications With Error: Error Domain=NSCocoaErrorDomain Code=3000 "未找到应用程序的“aps-environment”的权利字符串" UserInfo=0x1c55e000

    官网解释:http://docs.jpush.cn/pages/viewpage.action?pageId=7864782#iOS常见问题-为什么启动的时候出现DidFailToRegisterForRemoteNotificationsWithError的错误

    很系统,但是漏掉了我这种情况。

    还需要设置Code signing identity为你现在使用的开发者账号。

  • 相关阅读:
    图形化编程娱乐于教,Kittenblock实例,列表的应用
    图形化编程娱乐于教,Kittenblock实例,色辨成音
    图形化编程娱乐于教,Kittenblock实例,演奏音符
    图形化编程娱乐于教,Kittenblock实例,鼠标改变变量制作图形特效
    图形化编程娱乐于教,Kittenblock实例,随机数特效
    图形化编程娱乐于教,Kittenblock实例,语言翻译模块应用
    android studio下JNI开发流程
    使用Handler进行Activity之间的通信
    Grade多渠道打包
    SVN创建新文件不能提交的处理
  • 原文地址:https://www.cnblogs.com/MartinLi841538513/p/3959437.html
Copyright © 2011-2022 走看看