首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据手机操作系统发送推送通知

根据手机操作系统发送推送通知
EN

Stack Overflow用户
提问于 2013-06-26 15:32:32
回答 1查看 389关注 0票数 0

我正在为一个正在为android和iphone开发的应用程序的网络服务工作。

我被困在必须发送推送通知的点上。我根据用户登录的设备保存设备令牌(IOS)或gcm注册id (android)。

现在我的问题是如何在推送通知时区分两者,因为GCM和APNS的推送通知过程是不同的。不要告诉我关于用户代理的事情,因为它在我的情况下不会工作,因为这些通知将使用cron job发送。

我是否需要将设备类型保存在数据库中,或者是否有其他选择。..?

希望我的问题说清楚了。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-26 17:33:48

我会做什么和我已经做了什么。

如果您将ID存储在数据库中,则应该很容易区分这两个ID。如果您将它们保存在同一个表中,但字段不同,则只需对列使用不同的名称即可。根据设备类型保存ID。只是没有推送通知ID的通用列,请使用两个。我根据类型保存设备ID和用户的成员ID。因此,即使他们在多个设备上注册,它也会将其发送到他们的所有设备、android或ios。或者我可以选择全部并发送给每个注册用户。

这里有一些例子。一个示例使用多个id列,另一个示例使用单个id列和另一列作为类型。

gcm_idapn_id作为DB中的列名,一个用于android,一个用于iOS。

然后,当您准备好发送通知时,您可以根据您想要的任何条件执行select查询。

例如,要发送给一大群用户,您可以执行以下操作。简单的例子而不是完整的代码。

代码语言:javascript
复制
 $result = "SELECT * FROM notification_table" 

然后使用一些PHP遍历数组并发送通知。

代码语言:javascript
复制
foreach($result as $key=>$id){

  if($key == "gcm_id"){
   //do android push here using the $id or run a function passing $id to it
  }elseif($key == "apn_id"){
   //do apple push here using the $id or run a function passing $id to it
  }    

 }

或者另一种选择是保存设备类型并使用一个ID字段。因此,您的表可能包含以下内容

代码语言:javascript
复制
push_id | dev_type | member_id

在将其保存到数据库时,请确保指定设备类型。它可以是你想要的方式。dev_type可以是文本/字符变化字段,甚至是整型字段,您可以为每种类型指定一个数字ID。然而,您想要跟上它。我可能会使用字符变化,并使用android / ios作为值,这样对我来说比代码更容易记住。

然后做同样的事情,除了按设备类型过滤。

代码语言:javascript
复制
$result = "SELECT * FROM notification_table" 

然后使用一些PHP遍历数组并发送通知。

代码语言:javascript
复制
foreach($result as $res){

  if($res["dev_type"] == "android"){
   //do android push here using the $res["push_id"] or pass it to a function
  }elseif($res["dev_type"] == "ios"){
   //do apple push here using the $res["push_id"] or pass it to a function
  }    

 }

或者将其限制为用于例如新的私人消息的特定用户。示例不是完整代码

代码语言:javascript
复制
$result = "SELECT * FROM notification_table WHERE mem_id='12345'";

然后调用一个函数,或者以你想要的方式处理它。

就我个人而言,我会创建两个函数,一个用于GCM,另一个用于APN。然后,在执行foreach循环时根据类型调用函数。传递ID和要发送的消息的示例函数。

代码语言:javascript
复制
function push_gcm($id,$message){

//do stuff

}

function push_apn($id,$message){

//do stuff

}

我个人不会依靠ID的长度或类似的东西来确定类型。使用ID保存类型,就像上面的示例之一。希望这篇文章能对你有所帮助,让你开始对它们进行分类。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17314095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档