首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Flutter + OneSignal为PlayerID发送推送通知

使用Flutter + OneSignal为PlayerID发送推送通知
EN

Stack Overflow用户
提问于 2019-03-20 03:49:49
回答 2查看 1.5K关注 0票数 0

我正在创建一个推送,日历风格的推送系统。我需要当我创建一个用户的时间表,系统只发送一个通知给他,我创建的系统来管理这个PHP,谁知道如何帮助我?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-19 06:17:55

如果您使用的是OneSignal。您可以使用Playerid发送到该设备,但是您必须存储playerid服务器端,以便您知道要发送到哪个设备。我个人在初始化状态下执行此操作,并对我的api执行http.post,以便为该特定用户将playerid保存到我的数据库中。

当然,你也可以使用OneSignal的标签来达到同样的效果(如果同一个人在一台设备上有多个账号,这很有用)。

要发送通知,请在php中使用curl。

代码语言:javascript
复制
<?php
function sendMessage(){
    $content = array(
        "en" => 'English Message'
        );

    $fields = array(
        'app_id' => "your-app-id",
        'include_player_ids' => array("playerid-you-want-to-send-to"),
        'data' => array("foo" => "bar"),
        'contents' => $content
    );

    $fields = json_encode($fields);
    print("\nJSON sent:\n");
    print($fields);

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "https://onesignal.com/api/v1/notifications");
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json; charset=utf-8'));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($ch, CURLOPT_HEADER, FALSE);
    curl_setopt($ch, CURLOPT_POST, TRUE);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

    $response = curl_exec($ch);
    curl_close($ch);

    return $response;
}

$response = sendMessage();
$return["allresponses"] = $response;
$return = json_encode( $return);

print("\n\nJSON received:\n");
print($return);
print("\n");
?>

在Flutter中,获取软件包,导入它,然后:

代码语言:javascript
复制
void oneSignal() {
OneSignal.shared.init("app-id");

OneSignal.shared.setNotificationReceivedHandler((OSNotification notification) 

   {
     //do what you need to do with upcoming notification, get title for example
     print(notification.payload.title);
   }
}
票数 0
EN

Stack Overflow用户

发布于 2019-03-20 04:00:31

我不是移动应用程序的专家,所以应该有人纠正/确认这一点。

为了在你的应用中实现推送通知,你可以使用一个“实时”连接(比如websocket),或者你也可以使用轮询。

我对websockets了解不多,我不认为用CakePHP可以做到这一点(不确定)。编辑:绝对不可能开箱即用,但插件是存在的。

在使用轮询时,您会频繁地重复GET请求(根据需要,每小时一次,每分钟一次),并检查是否有新的信息。

例如,您的CakePHP页面可以是一个接受lastUpdated参数的操作,该参数返回自该时间戳以来的新信息。然后,应用程序每隔x分钟请求一次此页面,每次都设置lastUpdated参数。当有新信息时,响应将不是空的,应用程序可以处理它。

这确实意味着应用程序需要始终在后台运行,并且请求的数量可能会变得很大(取决于轮询间隔)。

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

https://stackoverflow.com/questions/55248985

复制
相关文章

相似问题

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