全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网
移动推送

.net

更新时间:2017-09-04 18:47:50

SDK 地址
Demo 地址

1 获取AccessKeyId和AccessKeySecret

为了保证云服务的安全,您需要创建一个能访问移动推送资源的 RAM 子账号,获取该子账号的 AK 密钥,并使用这个 RAM 子账号调用移动推送 OpenAPI。

以下是获取 RAM 子账号 AK 密钥的操作步骤:

2 获取appKey

>>前往移动推动控制台获取 app列表->应用证书

3 引入SDK依赖

  1. using Aliyun.Acs.Core;
  2. using Aliyun.Acs.Core.Exceptions;
  3. using Aliyun.Acs.Core.Profile;
  4. using Aliyun.Acs.Push.Model.V20160801;
  5. using System;

4 示例代码(替换成您的AccessKeyId、AccessKeySecret、appKey)

  1. IClientProfile clientProfile = DefaultProfile.GetProfile("cn-hangzhou", "<your access key id>", "<your access key secret>");
  2. DefaultAcsClient client = new DefaultAcsClient(clientProfile);
  3. PushRequest request = new PushRequest();
  4. // 推送目标
  5. request.AppKey = <your appKey>;
  6. //推送目标: DEVICE:按设备推送 ALIAS : 按别名推送 ACCOUNT:按帐号推送 TAG:按标签推送; ALL: 广播推送
  7. request.Target = "ALL";
  8. //根据Target来设定,如Target=DEVICE, 则对应的值为 设备id1,设备id2. 多个值使用逗号分隔.(帐号与设备有一次最多100个的限制)
  9. request.TargetValue = "all";
  10. //消息类型 MESSAGE NOTICE
  11. request.PushType = "NOTICE";
  12. //设备类型 ANDROID iOS ALL.
  13. request.DeviceType = "ALL";
  14. // 消息的标题
  15. request.Title = "Push Title";
  16. // 消息的内容
  17. request.Body = "Push body";
  18. // 推送配置: iOS
  19. // iOS应用图标右上角角标
  20. request.IOSBadge = 50;
  21. // iOS通知声音
  22. request.IOSMusic = "default";
  23. //iOS10通知副标题的内容
  24. request.IOSSubtitle = "iOS10 subtitle";
  25. //指定iOS10通知Category
  26. request.IOSNotificationCategory = "iOS10 Notification Category";
  27. //是否允许扩展iOS通知内容
  28. request.IOSMutableContent = true;
  29. //iOS的通知是通过APNs中心来发送的,需要填写对应的环境信息。"DEV" : 表示开发环境 "PRODUCT" : 表示生产环境
  30. request.IOSApnsEnv = "DEV";
  31. //消息推送时设备不在线(既与移动推送的服务端的长连接通道不通),则这条推送会做为通知,通过苹果的APNs通道送达一次。注意:离线消息转通知仅适用于生产环境
  32. request.IOSRemind = true;
  33. //iOS消息转通知时使用的iOS通知内容,仅当iOSApnsEnv=PRODUCT && iOSRemind为true时有效
  34. request.IOSRemindBody = "iOSRemindBody";
  35. //自定义的kv结构,开发者扩展用 针对iOS设备
  36. request.IOSExtParameters = "{\"key1\":\"value1\"}";
  37. // 推送配置: Android
  38. // 通知的提醒方式 "VIBRATE" : 震动 "SOUND" : 声音 "BOTH" : 声音和震动 NONE : 静音
  39. request.AndroidNotifyType = "BOTH";
  40. //通知栏自定义样式0-100
  41. request.AndroidNotificationBarType = 3;
  42. //通知栏显示优先级
  43. request.AndroidNotificationBarPriority = 0;
  44. //点击通知后动作 "APPLICATION" : 打开应用 "ACTIVITY" : 打开AndroidActivity "URL" : 打开URL "NONE" : 无跳转
  45. request.AndroidOpenType = "NONE";
  46. //Android收到推送后打开对应的url,仅当AndroidOpenType="URL"有效
  47. request.AndroidOpenUrl = "http://www.baidu.com";
  48. //设定通知打开的activity,仅当AndroidOpenType="Activity"有效
  49. request.AndroidActivity = "com.ali.demo.OpenActivity";
  50. //Android通知音乐
  51. request.AndroidMusic = "default";
  52. //设置该参数后启动辅助弹窗功能,此处指定通知点击后跳转的Activity(辅助弹窗的前提条件:1. 集成第三方辅助通道;2. storeOffline设为true)
  53. request.AndroidPopupActivity = "com.ali.demo.PopupActivity";
  54. //辅助弹窗标题
  55. request.AndroidPopupTitle = "Popup Title";
  56. //辅助弹窗内容
  57. request.AndroidPopupBody = "Popup Body";
  58. // 设定android类型设备通知的扩展属性
  59. request.AndroidExtParameters = "{\"k1\":\"android\",\"k2\":\"v2\"}";
  60. // 推送控制
  61. String pushTime = DateTime.UtcNow.AddSeconds(3).ToString("yyyy-MM-ddTHH\\:mm\\:ssZ");
  62. request.PushTime = pushTime;//延迟3秒发送
  63. String expireTime = DateTime.UtcNow.AddDays(2).ToString("yyyy-MM-ddTHH\\:mm\\:ssZ");
  64. request.ExpireTime = expireTime;//设置过期时间为2天
  65. request.StoreOffline = false;
  66. try
  67. {
  68. PushResponse response = client.GetAcsResponse(request);
  69. Console.WriteLine("RequestId:" + response.RequestId);
  70. Console.WriteLine("ResponseId:"+response.MessageId);
  71. Console.ReadLine();
  72. } catch (ServerException e)
  73. {
  74. Console.WriteLine(e.ErrorCode);
  75. Console.WriteLine(e.ErrorMessage);
  76. Console.ReadLine();
  77. } catch (ClientException e)
  78. {
  79. Console.WriteLine(e.ErrorCode);
  80. Console.WriteLine(e.ErrorMessage);
  81. Console.ReadLine();
  82. }
本文导读目录