"iOS push全方位解析(三)【译文】"——一个极简的demo,并测试一下push

这是一篇来自raywenderlich的教程,内容翔实!结构简单透彻、讲解循序渐进、文章质量上乘!是一篇难的的博文!使用半瓶的英语水平翻译了一下:

1. push的概述

2. 生成push证书,生成Provisioning Profile

3. 一个极简的demo,并测试一下push。(本博文)

这里查看原文

一个极简的demo

到目前为止,上面还不是做的还不够让人兴奋,但是那些准备工作还是很有必要的。本教程像你详细展示了如何生成证书,因为每天都会用到证书,而且没有证书push就不好。刚才你刚搞了一个证书,可以连接到APNS。现在让我们来测试一下吧。

打开Xcode选择File,New Project。在面板中选择Single View Application并下一步:

(建工程)

我是这么填的:

● Product Name:PushChat

● Organization Name:Ray Wenderlich

● Company Indemnifier:com.hollance

● Device Family:iPhone

Product Name和Company Identifier 一起构成了Bundle ID。在我的例子中是“com.hollance.PushChat”.你应该选择一个Product name 和Company Identifier,即,从之前在Provisioning Portal中生成的App ID中获取(例如com.yourname.PushChat)。确保勾选“User Stroyboards”并且“Use Automatic Reference Counting”。好,完成创建工程。进入AppDelegate.m。改一下代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
	// Let the device know we want to receive push notifications
	[[UIApplication sharedApplication] registerForRemoteNotificationTypes:
		(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];

    return YES;
}

函数registerForRemoteNotificationTypes是高速iOS该App想接收push通知。编译并运行该App。你应该在真机上运行,因为模拟器不支持push通知。Xcode会自动选择新的的provisioning profile。当程序启动并注册push通知,手机上弹一个消息,告知用户该app想发送push通知。

(发送push 通知提醒)

app仅仅弹出一次这样的对话框询问用户。如果用户点击OK,那就一切就设置好了。如果点击“Don‘t Allow”,那么这个app将永远收不到push通知了。用户可以更改push的设置在手机设置中。

(设置push通知)

app的名字被添加到设置中,在这里用户可以enable和disable app的push通知,包括badge、声音和alert样式。

(详细设置push通知)

你的app可以设置具体是哪一种push,比如:

UIRemoteNotificationType enabledTypes = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];

在AppDelegate.m中还要添加一个逻辑,来收到push通知

- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken
{
	NSLog(@"My token is: %@", deviceToken);
}

- (void)application:(UIApplication*)application didFailToRegisterForRemoteNotificationsWithError:(NSError*)error
{
	NSLog(@"Failed to get token, error: %@", error);
}

当你的app在远程push 通知注册后,会返回一个device token。这是一个32字节的数字,可以唯一标识你的设备。可以吧device token想象成一个push通知的地址。再次运行app,你应该在控制台看到下面的输出:

My token is:

<740f4707 bebcf74f 9b7c25d4 8e335894 5f6aa01d a5ddb387 462c7eaf 61bb78ad>

token是一串儿二进制的数据,在一个NSData中存放着。Apple不想让开发者对token做什么更改。对我们而言知道它是一个32字节长的数据就足够了。

APP工程的修改就这些了,还有一件事做完,就能看到push通知了。

发送第一个push通知

我之前很多次提到的,你需要搞一个server来发送push通知。这里为了测试,你不必设置一个server了。我已经写好一个简单的php脚本,可以连接到APNS并发送指定token的push通知。你可以在mac上运行。

下载SimplePush code并解压,你还需要改一下simplepush.php文件:

// Put your device token here (without spaces):
$deviceToken = '0f744707bebcf74f9b7c25d48e3358945f6aa01da5ddb387462c7eaf61bbad78';

// Put your private key's passphrase here:
$passphrase = 'pushchat';

// Put your alert message here:
$message = 'My first push notification!';

将app工程运行结果中的device token拷贝到$deviceToken变量,去掉空格和回车。一共是64个十六进制字符。将私钥的密码放放到$passphrase变量;设置你希望的文本内容到$message变量。

将ck.pem拷贝到SimplePush文件夹下,记得!ck.pem文件一定是包含了证书和私钥。打开命令行:

$ php simplepush.php

如果一切正常,脚本输出是:

Connected to APNS

Message successfully delivered

几秒钟后,你的设备收到了第一个push通知。

(push测试成功)

注意:app启动后什么也看不到。push消息是被派发了,但是app中并没有处理它。

时间: 2024-10-07 05:07:09

"iOS push全方位解析(三)【译文】"——一个极简的demo,并测试一下push的相关文章

iOS push全方位解析(二)【译文】&quot;——生成OpenSSL证书,Provisioning Profile

这是一篇来自raywenderlich的教程,内容翔实!结构简单透彻.讲解循序渐进.文章质量上乘!是一篇难的的博文!使用半瓶的英语水平翻译了一下: 1.[iOS push全方位解析](一) push的概述 2.[iOS push全方位解析](二) 生成push证书,生成Provisioning Profile(本篇) 3.[iOS push全方位解析](三) 一个极简的demo,并测试一下push 这里查看原文 ------------------------------------------

&quot;iOS push全方位解析(二)【译文】&quot;——生成OpenSSL证书,Provisioning Profile

这是一篇来自raywenderlich的教程,内容翔实!结构简单透彻.讲解循序渐进.文章质量上乘!是一篇难的的博文!使用半瓶的英语水平翻译了一下:1.[iOS push全方位解析](一) push的概述2.[iOS push全方位解析](二) 生成push证书,生成Provisioning Profile(本篇)3.[iOS push全方位解析](三) 一个极简的demo,并测试一下push 这里查看原文 ---------------------------------------------

&quot;iOS push全方位解析(一)【译文】&quot;——iOS PUSH概述

这是一篇来自raywenderlich的教程,内容翔实!结构简单.讲解循序渐进.文章质量上乘!是一篇难的的博文!使用半瓶的英语水平翻译了一下: 1. push的概述(本博文) 2. 生成push证书,生成Provisioning Profile 3. 一个极简的demo,并测试一下push 这里查看原文 -------------------------------------------------------------------------------------------------

iOS开发精选知识点讲解 - 视频等 iOSStrongDemo是由@李刚维护,总结一些iOS开发精选知识点。每一个知识点都有相应的测试代码,非常适合iOS初学者。

https://github.com/worldligang/iOSStrongDemo iOSStrongDemo是由@李刚维护,总结一些iOS开发精选知识点.每一个知识点都有相应的测试代码,非常适合iOS初学者. 涉及功能点 iOS9横竖屏设置的处理方法和实例讲解 iOS开发之如何跳到系统设置里的WiFi界面 iOS视频播放器 UIWebView用法详解及代码分享 使用UIDataDetectorTypes自动检测电话.网址和邮箱 iOS开发之NSTimer使用初探 iOS开发之NSStri

【转】手摸手,带你用vue撸后台 系列四(vueAdmin 一个极简的后台基础模板)

前言 做这个 vueAdmin-template 的主要原因是: vue-element-admin 这个项目的初衷是一个vue的管理后台集成方案,把平时用到的一些组件或者经验分享给大家,同时它也在不断的维护和拓展中,比如最近重构了dashboard,加入了全屏功能,新增了tabs-view等等.所以项目会越来越复杂,不太适合很多初用vue的同学来构建后台.所以就写了这个基础模板,它没有复杂的功能,只包含了一个后台需要最基础的东西.vueAdmin-template 主要是基于vue-cli w

飘逸的python - 实现一个极简的优先队列

一个队列至少满足2个方法,put和get. 借助最小堆来实现. 这里按"值越大优先级越高"的顺序. #coding=utf-8 from heapq import heappush, heappop class PriorityQueue: def __init__(self): self._queue = [] def put(self, item, priority): heappush(self._queue, (-priority, item)) def get(self):

一个极简的守护进程Bash脚本

由于最近写的Node.js程序因为一些Bug,会出现一些自动退出的问题,所以需要在它退出的时候及时发现,并重新启动 于是查阅了些资料,写了一个Bash的程序,功能十分简单,就是每隔3s判断一次处在6000端口的node程序是否正在运行,如果没有发现6000端口,那么执行启动程序的命令,已经使用了一段时间,感觉效果蛮好的,简单小巧,安全可靠,记录一下,以便以后使用. #!/bin/bash BASEDIR='/server' while true; do PRO_NOW=`netstat -tun

一个极简游戏创意

飘逸的python - 一个极简的event系统

event系统的核心至少满足: 1.存放事件的容器,可对事件添加删除 2.事件的触发fire 上代码. class Event(list): def __call__(self, *args, **kwargs): for f in self: f(*args, **kwargs) def f(arg): print 'execute with arg',arg e = Event() e.append(f) e('kzc')#触发事件 e.remove(f)