2016-12-01 8 views
0

이것은 매우 이상한 질문입니다.manifest pass.json 문자열 형식 때문에 .pkpass 만들기가 실패합니까?

C#을 사용하여 pass.json을 만들고 memoryStream에 저장하면 정상적으로 작동합니다. 그런 다음 manifest.json SHA1 데이터를 만듭니다.이 데이터는 pass.json, 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)을 제공합니다.

어디에서 잘못 되었습니까?

큰 감사!

답변