iOS SDK 集成指南

转载 2015年11月19日 15:59:53


使用提示

本文匹配的 SDK版本:r1.2.5 以后。

查看最近更新了解最新的SDK更新情况。

产品功能说明

极光推送(JPush)是一个端到端的推送服务,使得服务器端消息能够及时地推送到终端用户手机上,让开发者积极地保持与用户的连接,从而提高用户活跃度、提高应用的留存率。极光推送客户端支持 Android, iOS 两个平台。

本 iOS SDK 方便开发者基于 JPush 来快捷地为 iOS App 增加推送功能,减少集成 APNs 需要的工作量、开发复杂度。

主要功能

  • 为 JPush Server 上报 Device Token,免除开发者管理 Device Token 的麻烦
  • 应用运行时,应用内 JPush 长连接可以持续地收到推送消息

主要特点

  • 集成简单
  • iOS SDK 集成后,服务器端向 iOS 设备推送简单方便

集成压缩包内容

包名为JPush-iOS-SDK-[版本号]

  • lib文件夹:包含头文件 APService.h,静态库文件 libPushSDK.a ,支持的iOS版本为 5.0 及以上版本。(请注意:模拟器不能实现APNS)
  • pdf文件:开发指南
  • demo文件夹:示例

开发环境

  • 使用Xcode 6版本运行IOS8版本SDK,XCode 5运行非IOS 8版本SDK

SDK集成步骤

在JPush Portal上创建应用

  • 在JPush的管理Portal上 上传证书并创建应用。如果对APNs证书不太了解 请参考 iOS 证书设置指南

* 创建成功后自动生成 AppKey 用以标识该应用。

导入API开发包到应用程序项目

  • 将SDK包解压,在XCode中选择“Add files to 'Your project name'...”,将解压后的lib子文件夹(包含APService.h、libPushSDK.a)添加到你的工程目录中。

必要的框架

  • CFNetwork.framework
  • CoreFoundation.framework
  • CoreTelephony.framework
  • SystemConfiguration.framework
  • CoreGraphics.framework
  • Foundation.framework
  • UIKit.framework
  • Security.framework
  • libz.dylib

Build Settings

  • 设置 Search Paths 下的 User Header Search Paths 和 Library Search Paths,比如SDK文件夹(默认为lib)与工程文件在同一级目录下,则都设置为"$(SRCROOT)/[文件夹名称]"即可。

创建并配置PushConfig.plist文件

在你的工程中创建一个新的Property List文件,并将其命名为PushConfig.plist,填入Portal为你的应用提供的APP_KEY等参数。

{
 "APS_FOR_PRODUCTION" = "0";
 "CHANNEL" = "Publish channel";
 "APP_KEY" = "AppKey copied from JPush Portal application";
}
  • CHANNEL
    • 指明应用程序包的下载渠道,为方便分渠道统计。根据你的需求自行定义即可。
  • APP_KEY
    • 在管理Portal上创建应用时自动生成的(AppKey)用以标识该应用。请确保应用内配置的 AppKey 与第1步在 Portal 上创建应用时生成的 AppKey 一致,AppKey 可以在应用详情中查询。

  • APS_FOR_PRODUCTION

    • 1.3.1版本新增,表示应用是否采用生产证书发布( Ad_Hoc 或 APP Store ),此参数值需要与应用(code signing)所使用的证书环境一致,0 (默认值)表示采用的是开发者证书,1 表示采用生产证书发布应用。
    • push所指定的环境(apns_production)需要和应用证书环境一致才能收到推送。
  • 在1.2.2或之前版本的配置文件中,有 TEST_MODE 这个键,新版的SDK不再使用,可以将它删除。

添加代码

API

APIs 主要集中在 APService 接口类里。

@interface APService : NSObject

// init Push
+ (void)setupWithOption:(NSDictionary *)launchingOption;

// register notification type
+ (void)registerForRemoteNotificationTypes:(UIRemoteNotificationType)types;

// upload device token
+ (void)registerDeviceToken:(NSData *)deviceToken;

// handle notification recieved
+ (void)handleRemoteNotification:(NSDictionary *)remoteInfo;

调用代码

监听系统事件,相应地调用 JPush SDK 提供的 API 来实现功能。

以下 3 个事件监听与调用 JPush SDK API 都是必须的。请直接复制如下代码块里,注释为 "Required" 的行,到你的应用程序代理类里相应的监听方法里。


    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];

    // Required
   if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) {
    //可以添加自定义categories
    [APService registerForRemoteNotificationTypes:(UIUserNotificationTypeBadge |
                                                   UIUserNotificationTypeSound |
                                                   UIUserNotificationTypeAlert)
                                       categories:nil];
  } else {
    //categories 必须为nil  8.0之后的版本
    [APService registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge |
                                                   UIRemoteNotificationTypeSound |
                                                   UIRemoteNotificationTypeAlert)
                                       categories:nil];
  }

    // Required
    [APService setupWithOption:launchOptions];

    return YES;
}

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {

    // Required
    [APService registerDeviceToken: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);
}

监听通知

API里面提供了下面 5 种类型的通知:

extern NSString * const kJPFNetworkDidSetupNotification; // 建立连接

extern NSString * const kJPFNetworkDidCloseNotification; // 关闭连接

extern NSString * const kJPFNetworkDidRegisterNotification; // 注册成功

extern NSString * const kJPFNetworkDidLoginNotification; // 登录成功

extern NSString * const kJPFNetworkDidReceiveMessageNotification; // 收到消息(非APNS)

其中,kJPFNetworkDidReceiveMessageNotification通知是有传递数据的,可以通过NSNotification中的userInfo方法获取,包括标题、内容、内容类型、扩展信息等

高级功能

请参考:

标签与别名API

页面的统计

技术支持

邮件联系:support@jpush.cn

问答社区:http://www.jpush.cn/qa/

iOS 极光推送SDK的集成

SDK说明 适用版本 本文匹配的 SDK版本:r2.1.5 以后。 查看最近更新了解最新的SDK更新情况。 使用Xcode 6及以上版本可以使用新版Push SDK,Xcode 5环境...
  • Alexander_Wei
  • Alexander_Wei
  • 2017年05月03日 23:52
  • 1304

iOS平台5+SDK集成

iOS嵌套H5项目,5+SDK集成 网上H5页面与原生框架的交互很多,但是在原生框架中嵌入H5页面资料不多。(在多次HBuilder官方人员的指导下才完成,主要官网的文档说明太少) 5+SDK下载地...
  • qq_28865297
  • qq_28865297
  • 2017年10月25日 15:15
  • 244

iOS - 百度地图SDK集成(地理定位)

一、注册账号 打开百度开放者平台,注册账号,有账号直接登录。 二、申请密钥 1.点击申请密钥 2、创建应用 注意:安全码的填写规则。这就是密钥 三、配置环境 1、在Xcode...
  • Arnly
  • Arnly
  • 2016年11月07日 16:09
  • 846

IOS支付宝SDK集成到工程中(小白适用大神勿扰)

1.新建工程Alipay_test 2.找到并下载支付宝SDK 此步骤暂时不提供网址,我本来重新找到下载网站,下载解压运行试了一下,发现不知道怎么回事出现了13个错误的地方。在此我还是用我之前...
  • NarutoHainata
  • NarutoHainata
  • 2015年12月09日 16:26
  • 1035

iOS 环信3.2集成 (一)基本使用

前言1、本教程对应环信即时聊天 iOS SDK V3.2.0 (2016-10-15)2、请自行注册好环信APP_ID和APP_KEY3、请自行下载好环信即时聊天SDK对应的版本(easemob.co...
  • u010545480
  • u010545480
  • 2016年10月31日 12:10
  • 1670

iOS开发教你怎么集成ApplePay

ApplePay在中国上线后,就有许多线上app前后脚加入了对其的接入支持,个人比较喜欢的ENJOY也抢在首批接入了ApplePay应用内支付。本文将分享作者的接入经验。 ApplePay是...
  • william66688
  • william66688
  • 2016年04月01日 00:39
  • 6401

IOS开发广告接入iAD框架_InMobi框架

IOS开发植入广告的话,常用广告框架来实现,一般常用的有苹果官方的:iAd以及三方的像:InMobi等 以下分别介绍: iAd框架 iOS 4.0引入了iAd框架(iAd.framewo...
  • jiang314
  • jiang314
  • 2016年07月15日 17:58
  • 2229

Android中第三方SDK集成之百度地图集成(入门篇)

1,使用百度帐号,登录百度地图开放平台 ,网址是:http://lbsyun.baidu.com2,在“开发”栏选择“Android地图SDK”,选择左侧的开发指南,按照指南的指导进行操作3,开发指南...
  • zxc514257857
  • zxc514257857
  • 2017年04月08日 20:27
  • 1169

GPUImageSDK 集成 亲测可用

GPUImage 是一个开源的图像处理库,提供了非常多的滤镜效果来加工图片。GPUImage 并不像一般的第三方库可以直接拖入到工程中使用,而是需要先在本地编译,然后将编译后的文件拖入到工程中使用。配...
  • qq_29846663
  • qq_29846663
  • 2016年12月17日 15:53
  • 921

iOS项目集成LinPhone

1、首先准备工作:下载linphone官方SDK http://www.linphone.org/technical-corner/liblinphone/downloads 我的Demo中使用的是...
  • qq_34047841
  • qq_34047841
  • 2016年09月06日 09:23
  • 1412
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS SDK 集成指南
举报原因:
原因补充:

(最多只允许输入30个字)