我是所有iOS推送通知域的新手.我已经尝试使用以下代码进行基本推送通知,它完美无缺.我正在使用"使用JdSoft.Apple.Apns.Notifications;" 实现这一目标.这是代码:
Notification alertNotification = new Notification(testDeviceToken);
alertNotification.Payload.Alert.Body = "Hello World";
alertNotification.Payload.Sound = "default";
alertNotification.Payload.Badge = 1;
Run Code Online (Sandbox Code Playgroud)
这将以下列结构将输出提供给iPhone:
{
aps = {
alert = "Hello World";
badge = 1;
sound = default;
};
}
Run Code Online (Sandbox Code Playgroud)
我现在需要添加自定义标记,如下所示:
{
"aps": {
"alert": "Hello World",
"sound": "default",
"Person": {
"Address": "this is a test address",
"Name": "First Name",
"Number": "023232323233"
}
}
}
Run Code Online (Sandbox Code Playgroud)
我发现很难在"aps"中获得"Person".我也知道您可以使用以下代码添加自定义属性:
alertNotification.Payload.AddCustom("Person",Newtonsoft.Json.JsonConvert.SerializeObject(stat));
但上面的代码没有添加"aps"标签.请告诉我如何实现?
我是所有Android GCM推送通知的新手,我已经阅读过堆栈帖子,但无法得到直接答案.我还阅读了android中的创建推送通知,以便更好地了解GCM的工作原理.我还使用了SDK提供的gcm-demo-server和gcm-demo-client.但是,这是我的怀疑以及到目前为止我所尝试的内容:
假设我有注册密钥,我尝试使用以下代码片段将GCM通知推送到我的应用程序.这是用c#.net编写的.请告诉我使用以下代码段是否可以实现上面提到的内容:
private string SendGCMNotification(string apiKey, string postData, string postDataContentType = "application/json")
{
ServicePointManager.ServerCertificateValidationCallback += new RemoteCertificateValidationCallback(ValidateServerCertificate);
// MESSAGE CONTENT
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
// CREATE REQUEST
HttpWebRequest Request = (HttpWebRequest)WebRequest.Create("https://android.googleapis.com/gcm/send");
Request.Method = "POST";
Request.KeepAlive = false;
Request.ContentType = postDataContentType;
Request.Headers.Add(string.Format("Authorization: key={0}", apiKey));
Request.ContentLength = byteArray.Length;
Stream dataStream = Request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
// SEND MESSAGE
try
{
WebResponse Response = Request.GetResponse();
HttpStatusCode ResponseCode = ((HttpWebResponse)Response).StatusCode;
if (ResponseCode.Equals(HttpStatusCode.Unauthorized) || ResponseCode.Equals(HttpStatusCode.Forbidden))
{
var text = …Run Code Online (Sandbox Code Playgroud)我在WCF中写了几个类(数据契约和服务契约),我试图在JSON中序列化和反序列化.如果我需要以下JSON结构,我将如何创建DataContract:
{
"response": {
"locations": {
"location": [
{
"id": "12",
"name": "Hello",
"statusid": "78"
},
{
"id": "5",
"name": "Ann",
"statusid": "8"
}
]
},
"error": "404 error"
}
}
Run Code Online (Sandbox Code Playgroud)
上面的结构非常简单,在如下所述的位置下可以有几个位置细节.所以我需要得到一个数组/列表到"位置"数据成员,如下所述.目前我只有以下DataContract:
[DataContract]
public class Response
{
[DataMember]
public string locations { get; set; }
[DataMember]
public string error{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)
请告诉我如何解决这个问题?
我们有一个 SaaS 产品,我们为客户提供网站。客户可以请求将自己的域指向他们的网站。目前我们使用 httpd.conf 文件添加一个指向同一文档目录的 VirtualHost 条目。之后,数据库将通过匹配 URL 来加载网站。我们意识到这种方法存在一些问题,而且根本无法扩展。
如果 httpd.conf 文件中存在错误,则整个产品可能无法正常工作。这实际上已经发生了。此外,我们使用 WHM 和 cPanel,因此当我们在实时服务器中添加 mod 或进行调整时,整个 httpd.conf 都会被重写,让我们替换/添加现有的虚拟主机条目到文件中。
奇怪的是,在我们的 QA 服务器中,我不必添加任何虚拟主机条目,只要指向一个新域,就会从数据库中提取该网站。我意识到只有在实时服务器中才需要虚拟主机条目。两者都安装了 Apache 2.4 CentOS。这背后有什么原因吗?我确定这与配置更改有关。
希望有人能指出我正确的方向,我可以在我们的实时服务器环境中实现相同的目标。
干杯!
.net ×1
android ×1
apache ×1
c# ×1
cpanel ×1
httpd.conf ×1
ios ×1
json ×1
serializer ×1
virtualhost ×1
wcf ×1
whm ×1