关于iOS的推送实现~

2013-09-16 12:54:09 +08:00
 yautou
iOS的推送必须由自己的服务器与Apple的服务器来交互,进而推送到客户端。
然而对于一些个人开发者来说,无力架设服务器、弄证书什么的,有没有可以变通的方式呢?

分享一下我的实践,通过微信来~
假设我们有应用一枚,叫它app咯,然后在微信上建立一个app的公众订阅号,使用app的用户可以关注此公众号(可在app内推广,关注即可获取最新动态),然后推送神马的可以在微信的公众平台上推送给关注了的用户,这样就通过微信的推送渠道来推送了自己的内容,省去不少劳动。

仅仅这样,当然还是远远不够的,只是起到了通知的作用,还不能与我们的app交互嘛,接下来就可以用另一小trick来变通下,学名叫URLScheme。Apple是支持URLScheme来程序间交互的,实现一个程序中启动另一个程序,传递参数等,这点具体可谷歌百度。

我们可以将推送内容结合URLScheme改为一串奇怪的链接,再推送给用户,用户即可通过此链接启动我们的app,进而通过携带的参数实现某些相应的行为。至此,已完全变通实现了iOS的推送。

好吧,看到了这里的朋友,容许我先和你们说声thx。有过实践的童鞋可能已经发现我挖了个坑,其实,最后面的关键步骤确实是个坑。因为微信内嵌浏览器,点击我们那串奇怪的链接,并不会由iOS系统来控制跳转至我们想要的app,而是被微信自带的浏览器给hold住了,悲乎哀哉!

微信之坑(iOS):
1、接收个人发来的超链接,直接过滤掉,只剩纯文本;
2、公众号发来的超链接完好,可是被内嵌浏览器hold住,只能加载完成后使用“safari打开”;
3、图文消息文中不许超链接,“原文链接”有超链接检测,特定URLScheme被ban;
4、没有开放主动群发消息的API,只能模拟登陆后台后进行群发,工作量挺大;
5、、、and so on

我实践至此,已无出路可想,分享一下,盼大神指点( ⊙ o ⊙ )啊!。没有自己的服务器与证书就不能做到推送么=。=
5959 次点击
所在节点    iDev
20 条回复
fgwww
2013-09-16 12:57:12 +08:00
租个vps
66450146
2013-09-16 13:05:43 +08:00
租个 VPS 吧,$99 都花了,不至于一年 $15 都付不起吧
moname
2013-09-16 13:15:54 +08:00
@66450146 真相
alexrezit
2013-09-16 13:23:55 +08:00
为何放弃治疗?
hilenlai
2013-09-16 13:31:35 +08:00
推送服务器:
(国内)
1:https://www.jpush.cn/
2:https://avoscloud.com/
(国外)
3:https://www.parse.com/


AFNetwroking作者写的推送服务器:https://github.com/helios-framework/helios?source=c
hilenlai
2013-09-16 13:48:50 +08:00
@66450146 什么vps, 一年才15刀?
loniper
2013-09-16 13:51:34 +08:00
这是微信的AD么?
PrideChung
2013-09-16 14:03:22 +08:00
@hilenlai 年付15刀的vps一抓一大把,例如BuyVM
hilenlai
2013-09-16 14:07:36 +08:00
@PrideChung 信的过么?
gjflsl
2013-09-16 15:12:33 +08:00
如果你的用户数据不是很重要的话,还是用jpush吧.
jeeve
2013-09-16 16:16:09 +08:00
jpush 还算蛮好用的!
PrideChung
2013-09-16 17:12:11 +08:00
@hilenlai 一些不出名的IDC有跑路风险,可以的话尽量选月付。
tuzi
2013-09-16 17:36:20 +08:00
国内 个推应该是做的最大的吧
est
2013-09-16 17:37:10 +08:00
urbanairship这么牛的东西没人说?
summer_charlie
2013-09-16 19:03:07 +08:00
有第三方的推送服务可以用, 并且推送量在一定范围内是免费的, 你可以 google 一下, 不需要自己构架推送服务器, 除非你有特殊需要, 如只对某些地方的用户做推送...

先回答以下问题:
1. 是否能看得懂英文?
2. 是否只是针对 iOS app 推送(不考虑其他平台 如 android, wp的推送) ?

如果都是 Yes 的话, 推荐使用 Urban Airship http://urbanairship.com/ , 全球最大的推送服务提供商.

如果上面有一个或者更多回答为 NO 的话, 推荐使用极光推送(国内最大, 用户界面比个推好)https://www.jpush.cn/

注:
问题 2 是考虑到服务器链接到客户端, ios 统一使用的是 apns , 也就是说无论你使用哪个服务消息的最终发送者都会是苹果的服务器.
而 android 就不一样了, 第三方服务都是自己实现的 SDK 后台常驻进程, 用着自己的服务器跟客户端交互, 这时候服务器的位置就需要考虑了, 这有国情限制.. 怕被墙.
Wowbeing
2013-09-16 19:07:07 +08:00
楼上的真坏,这么快就终结了,看楼主说的多有成就感,大哥哥教小朋友似的。
alswl
2013-09-16 23:11:39 +08:00
PyAPNS,如果会 Python 的话,1 分钟就可以开始 Push,半小时可以架一个 API 完成。
另外,VPS 真心不贵啊~
yautou
2013-09-16 23:18:37 +08:00
多谢回复的各位,VPS什么的自然有考虑,只是想到了这条通过微信的方法,因为构思的app与微信结合挺多的,可能有数据分享、附件工具栏等,所以才有的这么一回事。

对于某些回复,我很抱歉文章内容或者叙述方式让你们感到不快,但是我的本意只是分享思路。一直没再来回复,是在想我的出发点真的有像你们说的那样不堪么。现在坦然了,仍觉得不失为一种方法。

最后这帖子今天最大的收获是,在我看来复杂的事,可能真心不算事,人外有人,学习了。
9hills
2013-09-16 23:37:33 +08:00
@yautou 微信过于封闭,在Android上也是不允许共享内容到系统共享的,很扯
XSugar
2018-07-16 09:26:28 +08:00
前几天看到个浏览器扩展的帖子。发推送到这个 app 的。有大兄弟还有那个帖子的保存吗。找不到了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/82619

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX