これは非常に奇妙な質問です。マニフェストのpass.json文字列形式のため、.pkpassの作成に失敗しますか?
C#を使用してpass.jsonを作成し、memoryStreamに保存すると、正常に動作します。その後、私はそのpass.jsonを含むmanifest.json SHA1データを作成します。このようなmanifest.jsonの文字列は完全に正しいです。
{"icon.png": "9423bd00e2b01c59a3265c38b5062fac7da0752d",
"[email protected]": "4d1db55bdaca70b685c013529a1c0dcbd7046524",
"logo.png": "ee5b053e63dbfe3b78378c15d163331d68a0ede8",
"[email protected]": "2f9e3a55bded1163620719a4d6c1ad496ed40c17",
"pass.json": "fd68bf77757d3057263a9aca0e5110ddd933934a"}
後はそれがを開くことができない、私の携帯電話としてpkpassを生成します。 pass.json SHA1コードを "fd68bf77757d3057263a9aca0e5110ddd933934a"と変更すると、値を保存せずにが動作します。です。次のような
コーディング:
// This version run success
var strPass = JavascriptSerialize(details);
var sw = new StreamWriter(assetsFolder + @"pass.json");
sw.Write(strPass);
sw.Close();
manifest.passjson = GetSha1Hash(assetsFolder + manifest.GetAssetBoardingPass(libPkPass_object_boardingPass.JsonObjects.AssetTypes.passjson));
//manifest.passjson = "2f9e3a55bded1163620719a4d6c1ad496ed40c17"
// end
// This version run fail
var strPass = JavascriptSerialize(details);
MemoryStream stream = new MemoryStream();
StreamWriter writer = new StreamWriter(strPass);
writer.Write(s);
writer.Flush();
stream.Position = 0;
var a = GetSha1HashMemory(passStream);
private static string GetSha1HashMemory(Stream passStream)
{
//var bs = new BufferedStream(passStream);
using (SHA1Managed sha = new SHA1Managed())
{
byte[] checksum = sha.ComputeHash(passStream);
string sendCheckSum = BitConverter.ToString(checksum)
.Replace("-", string.Empty);
return sendCheckSum.ToString().ToLower();
}
}
manifest.passjson = a;
//manifest.passjson = "2f9e3a55bded1163620719a4d6c1ad496ed40c17" (same data)
//end
を何が起こっているか??????私は文字列が間違っているという質問を見つけることができます。 pkpassはhere(sendspace)で提供されます。
どこから間違っているのですか?
大きな感謝!