diff --git a/CHANGELOG.md b/CHANGELOG.md index 0c11c33a5c..40826bab4e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,19 @@ # Mobile Center SDK for iOS Change Log +## Version 0.14.1 + +This version contains bug fixes. + +### MobileCenterCrashes + +* **[Fix]** PLCrashReporter updated to v1.2.3, it fixes a recursion when processing exceptions. + +### MobileCenterPush + +* **[Fix]** Receiving a notification without message now forwards the message as a `nil` string instead of an `NSNull` object to the `MSPush` delegate. + +___ + ## Version 0.14.0 This version contains improvements and a feature. diff --git a/Config/Version.xcconfig b/Config/Version.xcconfig index 031f6069aa..1fb25e5d03 100644 --- a/Config/Version.xcconfig +++ b/Config/Version.xcconfig @@ -1,2 +1,2 @@ BUILD_NUMBER = 1 -VERSION_STRING = 0.14.0 +VERSION_STRING = 0.14.1 diff --git a/Documentation/iOS/MobileCenter/.jazzy.yaml b/Documentation/iOS/MobileCenter/.jazzy.yaml index bbcaa45ea8..c4f4e1b62b 100644 --- a/Documentation/iOS/MobileCenter/.jazzy.yaml +++ b/Documentation/iOS/MobileCenter/.jazzy.yaml @@ -5,7 +5,7 @@ sdk: iphonesimulator theme: ../../Themes/apple module: MobileCenter -module_version: 0.14.0 +module_version: 0.14.1 author: Microsoft Corp author_url: http://www.microsoft.com diff --git a/Documentation/iOS/MobileCenterAnalytics/.jazzy.yaml b/Documentation/iOS/MobileCenterAnalytics/.jazzy.yaml index 961322a60a..d04fef48c7 100644 --- a/Documentation/iOS/MobileCenterAnalytics/.jazzy.yaml +++ b/Documentation/iOS/MobileCenterAnalytics/.jazzy.yaml @@ -5,7 +5,7 @@ sdk: iphonesimulator theme: ../../Themes/apple module: MobileCenterAnalytics -module_version: 0.14.0 +module_version: 0.14.1 author: Microsoft Corp author_url: http://www.microsoft.com diff --git a/Documentation/iOS/MobileCenterCrashes/.jazzy.yaml b/Documentation/iOS/MobileCenterCrashes/.jazzy.yaml index 1e05f8ae7a..310aa65c99 100644 --- a/Documentation/iOS/MobileCenterCrashes/.jazzy.yaml +++ b/Documentation/iOS/MobileCenterCrashes/.jazzy.yaml @@ -5,7 +5,7 @@ sdk: iphonesimulator theme: ../../Themes/apple module: Crashes -module_version: 0.14.0 +module_version: 0.14.1 author: Microsoft Corp author_url: http://www.microsoft.com diff --git a/Documentation/iOS/MobileCenterDistribute/.jazzy.yaml b/Documentation/iOS/MobileCenterDistribute/.jazzy.yaml index d5348ceb7b..760c5b6a1c 100644 --- a/Documentation/iOS/MobileCenterDistribute/.jazzy.yaml +++ b/Documentation/iOS/MobileCenterDistribute/.jazzy.yaml @@ -5,7 +5,7 @@ sdk: iphonesimulator theme: ../../Themes/apple module: Distribute -module_version: 0.14.0 +module_version: 0.14.1 author: Microsoft Corp author_url: http://www.microsoft.com diff --git a/Documentation/iOS/MobileCenterPush/.jazzy.yaml b/Documentation/iOS/MobileCenterPush/.jazzy.yaml index 66763b2a96..de13c80185 100644 --- a/Documentation/iOS/MobileCenterPush/.jazzy.yaml +++ b/Documentation/iOS/MobileCenterPush/.jazzy.yaml @@ -5,7 +5,7 @@ sdk: iphonesimulator theme: ../../Themes/apple module: MobileCenterPush -module_version: 0.14.0 +module_version: 0.14.1 author: Microsoft Corp author_url: http://www.microsoft.com diff --git a/Documentation/macOS/MobileCenter/.jazzy.yaml b/Documentation/macOS/MobileCenter/.jazzy.yaml index 49122df419..254963df31 100644 --- a/Documentation/macOS/MobileCenter/.jazzy.yaml +++ b/Documentation/macOS/MobileCenter/.jazzy.yaml @@ -5,7 +5,7 @@ sdk: macosx theme: ../../Themes/apple module: MobileCenter -module_version: 0.14.0 +module_version: 0.14.1 author: Microsoft Corp author_url: http://www.microsoft.com diff --git a/Documentation/macOS/MobileCenterAnalytics/.jazzy.yaml b/Documentation/macOS/MobileCenterAnalytics/.jazzy.yaml index c3dc13f23f..5812c4aede 100644 --- a/Documentation/macOS/MobileCenterAnalytics/.jazzy.yaml +++ b/Documentation/macOS/MobileCenterAnalytics/.jazzy.yaml @@ -5,7 +5,7 @@ sdk: macosx theme: ../../Themes/apple module: MobileCenterAnalytics -module_version: 0.14.0 +module_version: 0.14.1 author: Microsoft Corp author_url: http://www.microsoft.com diff --git a/Documentation/macOS/MobileCenterCrashes/.jazzy.yaml b/Documentation/macOS/MobileCenterCrashes/.jazzy.yaml index 5108845bd7..069e118ab3 100644 --- a/Documentation/macOS/MobileCenterCrashes/.jazzy.yaml +++ b/Documentation/macOS/MobileCenterCrashes/.jazzy.yaml @@ -5,7 +5,7 @@ sdk: macosx theme: ../../Themes/apple module: Crashes -module_version: 0.14.0 +module_version: 0.14.1 author: Microsoft Corp author_url: http://www.microsoft.com diff --git a/Documentation/macOS/MobileCenterPush/.jazzy.yaml b/Documentation/macOS/MobileCenterPush/.jazzy.yaml index 8fc0b22eec..80dc9ab62d 100644 --- a/Documentation/macOS/MobileCenterPush/.jazzy.yaml +++ b/Documentation/macOS/MobileCenterPush/.jazzy.yaml @@ -5,7 +5,7 @@ sdk: macosx theme: ../../Themes/apple module: MobileCenterPush -module_version: 0.14.0 +module_version: 0.14.1 author: Microsoft Corp author_url: http://www.microsoft.com diff --git a/Documentation/tvOS/MobileCenter/.jazzy.yaml b/Documentation/tvOS/MobileCenter/.jazzy.yaml index b041324b37..0aa61f4b32 100644 --- a/Documentation/tvOS/MobileCenter/.jazzy.yaml +++ b/Documentation/tvOS/MobileCenter/.jazzy.yaml @@ -5,7 +5,7 @@ sdk: appletvsimulator theme: ../../Themes/apple module: MobileCenter -module_version: 0.14.0 +module_version: 0.14.1 author: Microsoft Corp author_url: http://www.microsoft.com diff --git a/Documentation/tvOS/MobileCenterAnalytics/.jazzy.yaml b/Documentation/tvOS/MobileCenterAnalytics/.jazzy.yaml index 333ef152b3..87777a10a9 100644 --- a/Documentation/tvOS/MobileCenterAnalytics/.jazzy.yaml +++ b/Documentation/tvOS/MobileCenterAnalytics/.jazzy.yaml @@ -5,7 +5,7 @@ sdk: appletvsimulator theme: ../../Themes/apple module: MobileCenterAnalytics -module_version: 0.14.0 +module_version: 0.14.1 author: Microsoft Corp author_url: http://www.microsoft.com diff --git a/Documentation/tvOS/MobileCenterCrashes/.jazzy.yaml b/Documentation/tvOS/MobileCenterCrashes/.jazzy.yaml index 805efb0d34..2fc9aa3b89 100644 --- a/Documentation/tvOS/MobileCenterCrashes/.jazzy.yaml +++ b/Documentation/tvOS/MobileCenterCrashes/.jazzy.yaml @@ -5,7 +5,7 @@ sdk: appletvsimulator theme: ../../Themes/apple module: Crashes -module_version: 0.14.0 +module_version: 0.14.1 author: Microsoft Corp author_url: http://www.microsoft.com diff --git a/Localization/MobileCenterDistribute/cs-CZ/MobileCenterDistribute.strings b/Localization/MobileCenterDistribute/cs-CZ/MobileCenterDistribute.strings deleted file mode 100644 index 2643c45766..0000000000 --- a/Localization/MobileCenterDistribute/cs-CZ/MobileCenterDistribute.strings +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Update dialog buttons - */ -"MSDistributeUpdateNow" = "Aktualizovat"; -"MSDistributeAskMeInADay" = "Zeptat se za den"; -"MSDistributeViewReleaseNotes" = "Zobrazit zprávu k vydání verze"; -"MSDistributeClose" = "Zavřít"; - -/* - * Update dialog titles/messages - */ -"MSDistributeAppUpdateAvailable" = "K dispozici je aktualizace aplikace."; -"MSDistributeAppUpdateAvailableMandatoryUpdateMessage" = "Vývojáři této aplikace vyžadují, abyste si nainstalovali aktualizaci %@ %@ (%@)."; -"MSDistributeAppUpdateAvailableOptionalUpdateMessage" = "%@ %@ (%@) je k dispozici ke stažení a instalaci."; -"MSDistributeInAppUpdatesAreDisabled" = "Aktualizace v aplikaci jsou zakázány."; diff --git a/Localization/MobileCenterDistribute/de-DE/MobileCenterDistribute.strings b/Localization/MobileCenterDistribute/de-DE/MobileCenterDistribute.strings deleted file mode 100644 index dfcb9f3d14..0000000000 --- a/Localization/MobileCenterDistribute/de-DE/MobileCenterDistribute.strings +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Update dialog buttons - */ -"MSDistributeUpdateNow" = "Jetzt aktualisieren"; -"MSDistributeAskMeInADay" = "In einem Tag nachfragen"; -"MSDistributeViewReleaseNotes" = "Anmerkungen zu dieser Version anzeigen"; -"MSDistributeClose" = "Schließen"; - -/* - * Update dialog titles/messages - */ -"MSDistributeAppUpdateAvailable" = "App-Update verfügbar"; -"MSDistributeAppUpdateAvailableMandatoryUpdateMessage" = "Die Entwickler dieser App verlangen, dass Sie %@ %@ (%@) aktualisieren."; -"MSDistributeAppUpdateAvailableOptionalUpdateMessage" = "%@ %@ (%@) ist zum Herunterladen und Installieren verfügbar."; -"MSDistributeInAppUpdatesAreDisabled" = "In-App-Updates sind deaktiviert."; diff --git a/Localization/MobileCenterDistribute/es-ES/MobileCenterDistribute.strings b/Localization/MobileCenterDistribute/es-ES/MobileCenterDistribute.strings deleted file mode 100644 index fe51552614..0000000000 --- a/Localization/MobileCenterDistribute/es-ES/MobileCenterDistribute.strings +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Update dialog buttons - */ -"MSDistributeUpdateNow" = "Actualizar ahora"; -"MSDistributeAskMeInADay" = "Preguntarme dentro de un día"; -"MSDistributeViewReleaseNotes" = "Ver notas de la versión"; -"MSDistributeClose" = "Cerrar"; - -/* - * Update dialog titles/messages - */ -"MSDistributeAppUpdateAvailable" = "Actualización de aplicación disponible"; -"MSDistributeAppUpdateAvailableMandatoryUpdateMessage" = "Los desarrolladores de esta aplicación indican que debe actualizar a %@ %@ (%@)."; -"MSDistributeAppUpdateAvailableOptionalUpdateMessage" = "%@ %@ (%@) está disponible para descargarlo e instalarlo."; -"MSDistributeInAppUpdatesAreDisabled" = "Las actualizaciones en la aplicación están deshabilitadas."; diff --git a/Localization/MobileCenterDistribute/fr-FR/MobileCenterDistribute.strings b/Localization/MobileCenterDistribute/fr-FR/MobileCenterDistribute.strings deleted file mode 100644 index 50d7e81209..0000000000 --- a/Localization/MobileCenterDistribute/fr-FR/MobileCenterDistribute.strings +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Update dialog buttons - */ -"MSDistributeUpdateNow" = "Mettre à jour maintenant"; -"MSDistributeAskMeInADay" = "Me le demander dans un jour"; -"MSDistributeViewReleaseNotes" = "Afficher les notes de publication"; -"MSDistributeClose" = "Fermer"; - -/* - * Update dialog titles/messages - */ -"MSDistributeAppUpdateAvailable" = "Mise à jour d'application disponible"; -"MSDistributeAppUpdateAvailableMandatoryUpdateMessage" = "Les développeurs de cette application vous demandent d'effectuer une mise à jour vers %@ %@ (%@)."; -"MSDistributeAppUpdateAvailableOptionalUpdateMessage" = "%@ %@ (%@) est prêt à être téléchargé et installé."; -"MSDistributeInAppUpdatesAreDisabled" = "Les mises à jour dans l'application sont désactivées."; diff --git a/Localization/MobileCenterDistribute/it-IT/MobileCenterDistribute.strings b/Localization/MobileCenterDistribute/it-IT/MobileCenterDistribute.strings deleted file mode 100644 index 453c127f9d..0000000000 --- a/Localization/MobileCenterDistribute/it-IT/MobileCenterDistribute.strings +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Update dialog buttons - */ -"MSDistributeUpdateNow" = "Aggiorna adesso"; -"MSDistributeAskMeInADay" = "Visualizza richiesta tra un giorno"; -"MSDistributeViewReleaseNotes" = "Visualizza note sulla versione"; -"MSDistributeClose" = "Chiudi"; - -/* - * Update dialog titles/messages - */ -"MSDistributeAppUpdateAvailable" = "Aggiornamento app disponibile"; -"MSDistributeAppUpdateAvailableMandatoryUpdateMessage" = "Gli sviluppatori di questa app richiedono che venga eseguito l'aggiornamento a %@ %@ (%@)."; -"MSDistributeAppUpdateAvailableOptionalUpdateMessage" = "%@ %@ (%@) è disponibile per il download e l'installazione."; -"MSDistributeInAppUpdatesAreDisabled" = "Gli aggiornamenti in-app sono disabilitati."; diff --git a/Localization/MobileCenterDistribute/ja-JP/MobileCenterDistribute.strings b/Localization/MobileCenterDistribute/ja-JP/MobileCenterDistribute.strings deleted file mode 100644 index 9b285467d2..0000000000 --- a/Localization/MobileCenterDistribute/ja-JP/MobileCenterDistribute.strings +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Update dialog buttons - */ -"MSDistributeUpdateNow" = "今すぐ更新"; -"MSDistributeAskMeInADay" = "明日また知らせる"; -"MSDistributeViewReleaseNotes" = "リリース ノートの表示"; -"MSDistributeClose" = "閉じる"; - -/* - * Update dialog titles/messages - */ -"MSDistributeAppUpdateAvailable" = "アプリの更新プログラムが利用可能です"; -"MSDistributeAppUpdateAvailableMandatoryUpdateMessage" = "このアプリの開発者から、%@ %@ (%@) に更新するよう求められています。"; -"MSDistributeAppUpdateAvailableOptionalUpdateMessage" = "%@ %@ (%@) をダウンロードしてインストールできます。"; -"MSDistributeInAppUpdatesAreDisabled" = "アプリ内更新は無効です。"; diff --git a/Localization/MobileCenterDistribute/ko-KR/MobileCenterDistribute.strings b/Localization/MobileCenterDistribute/ko-KR/MobileCenterDistribute.strings deleted file mode 100644 index 73489b2531..0000000000 --- a/Localization/MobileCenterDistribute/ko-KR/MobileCenterDistribute.strings +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Update dialog buttons - */ -"MSDistributeUpdateNow" = "지금 업데이트"; -"MSDistributeAskMeInADay" = "하루동안 열지 않기"; -"MSDistributeViewReleaseNotes" = "릴리스 정보 보기"; -"MSDistributeClose" = "닫기"; - -/* - * Update dialog titles/messages - */ -"MSDistributeAppUpdateAvailable" = "앱 업데이트 사용 가능"; -"MSDistributeAppUpdateAvailableMandatoryUpdateMessage" = "이 앱의 개발자가 %@ %@(%@)(으)로 업데이트를 요구합니다."; -"MSDistributeAppUpdateAvailableOptionalUpdateMessage" = "%@ %@(%@)을(를) 다운로드하여 설치할 수 있습니다."; -"MSDistributeInAppUpdatesAreDisabled" = "인앱 업데이트는 사용할 수 없습니다."; diff --git a/Localization/MobileCenterDistribute/pl-PL/MobileCenterDistribute.strings b/Localization/MobileCenterDistribute/pl-PL/MobileCenterDistribute.strings deleted file mode 100644 index 8d2e76d85e..0000000000 --- a/Localization/MobileCenterDistribute/pl-PL/MobileCenterDistribute.strings +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Update dialog buttons - */ -"MSDistributeUpdateNow" = "Aktualizuj teraz"; -"MSDistributeAskMeInADay" = "Zapytaj mnie jutro"; -"MSDistributeViewReleaseNotes" = "Wyświetl informacje o wersji"; -"MSDistributeClose" = "Zamknij"; - -/* - * Update dialog titles/messages - */ -"MSDistributeAppUpdateAvailable" = "Dostępna jest aktualizacja aplikacji"; -"MSDistributeAppUpdateAvailableMandatoryUpdateMessage" = "Deweloperzy tej aplikacji wymagają przeprowadzenia aktualizacji do: %@ %@ (%@)."; -"MSDistributeAppUpdateAvailableOptionalUpdateMessage" = "Aplikacja %@ %@ (%@) jest dostępna do pobrania i zainstalowania."; -"MSDistributeInAppUpdatesAreDisabled" = "Aktualizacje w aplikacji są wyłączone."; diff --git a/Localization/MobileCenterDistribute/pt-BR/MobileCenterDistribute.strings b/Localization/MobileCenterDistribute/pt-BR/MobileCenterDistribute.strings deleted file mode 100644 index 205b902e07..0000000000 --- a/Localization/MobileCenterDistribute/pt-BR/MobileCenterDistribute.strings +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Update dialog buttons - */ -"MSDistributeUpdateNow" = "Atualizar agora"; -"MSDistributeAskMeInADay" = "Pergunte-me em um dia"; -"MSDistributeViewReleaseNotes" = "Exibir notas de versão"; -"MSDistributeClose" = "Fechar"; - -/* - * Update dialog titles/messages - */ -"MSDistributeAppUpdateAvailable" = "Atualização do aplicativo disponível"; -"MSDistributeAppUpdateAvailableMandatoryUpdateMessage" = "Os desenvolvedores desse aplicativo exigem a atualização para %@ %@ (%@)."; -"MSDistributeAppUpdateAvailableOptionalUpdateMessage" = "%@ %@ (%@) está disponível para download e instalação."; -"MSDistributeInAppUpdatesAreDisabled" = "As atualizações no aplicativo estão desabilitadas."; diff --git a/Localization/MobileCenterDistribute/ru-RU/MobileCenterDistribute.strings b/Localization/MobileCenterDistribute/ru-RU/MobileCenterDistribute.strings deleted file mode 100644 index 227105ff04..0000000000 --- a/Localization/MobileCenterDistribute/ru-RU/MobileCenterDistribute.strings +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Update dialog buttons - */ -"MSDistributeUpdateNow" = "Обновить"; -"MSDistributeAskMeInADay" = "Спросить через день"; -"MSDistributeViewReleaseNotes" = "Просмотреть заметки о выпуске"; -"MSDistributeClose" = "Закрыть"; - -/* - * Update dialog titles/messages - */ -"MSDistributeAppUpdateAvailable" = "Доступно обновление приложения"; -"MSDistributeAppUpdateAvailableMandatoryUpdateMessage" = "Разработчики этого приложения требуют выполнить обновление до %@ %@ (%@)."; -"MSDistributeAppUpdateAvailableOptionalUpdateMessage" = "Обновление %@ %@ (%@) доступно для скачивания и установки."; -"MSDistributeInAppUpdatesAreDisabled" = "Обновления в приложении отключены."; diff --git a/Localization/MobileCenterDistribute/tr-TR/MobileCenterDistribute.strings b/Localization/MobileCenterDistribute/tr-TR/MobileCenterDistribute.strings deleted file mode 100644 index 778835e84c..0000000000 --- a/Localization/MobileCenterDistribute/tr-TR/MobileCenterDistribute.strings +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Update dialog buttons - */ -"MSDistributeUpdateNow" = "Şimdi güncelleştir"; -"MSDistributeAskMeInADay" = "Bir gün içinde sor"; -"MSDistributeViewReleaseNotes" = "Sürüm notlarını görüntüle"; -"MSDistributeClose" = "Kapat"; - -/* - * Update dialog titles/messages - */ -"MSDistributeAppUpdateAvailable" = "Uygulama güncelleştirmesi kullanılabilir"; -"MSDistributeAppUpdateAvailableMandatoryUpdateMessage" = "Bu uygulamanın geliştiricileri %@ %@ (%@) sürümüne güncelleştirmenizi gerektiriyor."; -"MSDistributeAppUpdateAvailableOptionalUpdateMessage" = "%@ %@ (%@), indirme ve yükleme için hazır."; -"MSDistributeInAppUpdatesAreDisabled" = "Uygulama içi güncelleştirmeler devre dışı."; diff --git a/Localization/MobileCenterDistribute/zh-CN/MobileCenterDistribute.strings b/Localization/MobileCenterDistribute/zh-CN/MobileCenterDistribute.strings deleted file mode 100644 index a5bf0648c5..0000000000 --- a/Localization/MobileCenterDistribute/zh-CN/MobileCenterDistribute.strings +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Update dialog buttons - */ -"MSDistributeUpdateNow" = "立即更新"; -"MSDistributeAskMeInADay" = "一天内询问我"; -"MSDistributeViewReleaseNotes" = "查看发布说明"; -"MSDistributeClose" = "关闭"; - -/* - * Update dialog titles/messages - */ -"MSDistributeAppUpdateAvailable" = "可用的应用更新"; -"MSDistributeAppUpdateAvailableMandatoryUpdateMessage" = "应用被要求更新为 %@ %@ (%@)。"; -"MSDistributeAppUpdateAvailableOptionalUpdateMessage" = "%@ %@ (%@) 可供下载和安装。"; -"MSDistributeInAppUpdatesAreDisabled" = "已禁用应用内更新。"; diff --git a/Localization/MobileCenterDistribute/zh-TW/MobileCenterDistribute.strings b/Localization/MobileCenterDistribute/zh-TW/MobileCenterDistribute.strings deleted file mode 100644 index 002283d09e..0000000000 --- a/Localization/MobileCenterDistribute/zh-TW/MobileCenterDistribute.strings +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Update dialog buttons - */ -"MSDistributeUpdateNow" = "立即更新"; -"MSDistributeAskMeInADay" = "一天後詢問我"; -"MSDistributeViewReleaseNotes" = "檢視版本資訊"; -"MSDistributeClose" = "關閉"; - -/* - * Update dialog titles/messages - */ -"MSDistributeAppUpdateAvailable" = "應用程式更新已可使用"; -"MSDistributeAppUpdateAvailableMandatoryUpdateMessage" = "此應用程式的開發人員要求您更新為 %@ %@ (%@)。"; -"MSDistributeAppUpdateAvailableOptionalUpdateMessage" = "%@ %@ (%@) 已可下載及安裝。"; -"MSDistributeInAppUpdatesAreDisabled" = "應用程式內部的更新已停用。"; diff --git a/Localization/TouchDownCheckinScript.ps1 b/Localization/TouchDownCheckinScript.ps1 index 104d351fc5..b8e282c6b2 100644 --- a/Localization/TouchDownCheckinScript.ps1 +++ b/Localization/TouchDownCheckinScript.ps1 @@ -59,10 +59,10 @@ Function InitializeRepoForCheckin $Argument = "pull origin " + $DefaultRepoBranch ProcessStart $git $Argument $repoPath - $Argument = "branch -D " + $TempLocBranch + $Argument = "branch -D" + $TempLocBranch ProcessStart $git $Argument - $Argument = "checkout -b " + $TempLocBranch + $Argument = "checkout -b" + $TempLocBranch ProcessStart $git $Argument $repoPath } @@ -81,7 +81,7 @@ Function CheckinFilesIntoRepo #Authorized $Argument = "-c http.extraheader=`"Authorization: Bearer " + $AuthToken + "`" push origin " + $TempLocBranch } - + ProcessStart $git $Argument $repoPath } @@ -163,7 +163,7 @@ $fileBinary Invoke-RestMethod -Uri "http://tdbuild/api/teams/$teamId/LocalizableFiles" -Method Put -UseDefaultCredentials -ContentType "multipart/form-data; boundary=$boundary" -Body $body -OutFile $outFilePath } -Function binplace ($UnzipFileTo,$relativeFilePath,$TargetPath,$LanguageSet) +Function BinPlace ($UnzipFileTo,$relativeFilePath,$TargetPath,$LanguageSet) { $Langs = $LanguageSet.split(";") @@ -172,17 +172,22 @@ Function binplace ($UnzipFileTo,$relativeFilePath,$TargetPath,$LanguageSet) foreach($Language in $Langs) { $OCulture = GetCulture $CultureSettingFile $Language - $Culture = $OCulture.LSBUILD - $LocalizedFile = $UnzipFileTo + "\" + $OCulture.LSBUILD + $relativeFilePath - #$TargetPathDir = $TargetPath.Substring(0,$TargetPath.LastIndexOf("\")) - $TargetPathDir = $TargetPath + "\" + $OCulture.LSBUILD + $LocDir = "" + + # Chinese (zh) regions use a different directory structure + if ($OCulture.Culture -eq "zh") { + $LocDir = $TargetPath + $OCulture.Culture + $(if ($Language.split("-")[1] -eq "CN") {"-Hans"} else {"-Hant"}) + ".lproj" + } else { + $LocDir = $TargetPath + $OCulture.Culture + ".lproj" + } - if(!(Test-Path -Path $TargetPathDir)){ - New-Item -Path $TargetPathDir -ItemType directory + if(!(Test-Path -Path $LocDir)){ + New-Item -Path $LocDir -ItemType directory } - $targetFile = $TargetPath + "\" + $OCulture.LSBUILD + $relativeFilePath + $targetFile = $LocDir + $relativeFilePath + write-host "Loc File: $LocalizedFile" write-host "TargetPath: $targetFile" write-host "Copying Loc file to TargetPath" @@ -198,14 +203,16 @@ Function AddFiletoRepo ($TargetPath,$LanguageSet) foreach($Language in $Langs) { $OCulture = GetCulture $CultureSettingFile $Language + if ($OCulture.Culture -eq "zh") { + $LocDir = $TargetPath + $OCulture.Culture + $(if ($Language.split("-")[1] -eq "CN") {"-Hans"} else {"-Hant"}) + ".lproj" + } else { + $LocDir = $TargetPath + $OCulture.Culture + ".lproj" + } - #We pull out here the culture that might be used during the string expansion. - $Culture = $OCulture.Culture - $Argument = "add " + $TargetPath + $Argument = "add " + $LocDir write-host $Argument - #Start-Process $git $Argument -WorkingDirectory $repoPath ProcessStart $git $Argument $repoPath } } @@ -237,7 +244,7 @@ Function RefreshTDFiles Unzip $outFilePath $UnzipFolderLocation - binplace $UnzipFolderLocation $relativeFilePath $TargetPath $LanguageSet + BinPlace $UnzipFolderLocation $relativeFilePath $TargetPath $LanguageSet write-host "-----ADD FILES TO REPO-----" AddFiletoRepo $TargetPath $LanguageSet @@ -245,6 +252,9 @@ Function RefreshTDFiles write-host "-----CHECK IN FILES TO REPO-----" CheckinFilesIntoRepo + + # Remove temporary files after they have been dropped in resources + Remove-Item "mobile-center-distribute -recurse" } RefreshTDFiles \ No newline at end of file diff --git a/Localization/mobile-center-sdks-loc-file-list.csv b/Localization/mobile-center-sdks-loc-file-list.csv index 4434653ca9..e854951033 100644 --- a/Localization/mobile-center-sdks-loc-file-list.csv +++ b/Localization/mobile-center-sdks-loc-file-list.csv @@ -1,2 +1,2 @@ absoluteFilePath,outFilePath,relativeFilePath,TargetPath,LanguageSet -$SrcRoot\MobileCenterDistribute\MobileCenterDistribute\Resources\en.lproj\MobileCenterDistribute.strings,$SrcRoot\Localization\MobileCenterDistribute.zip,\MobileCenterDistribute.strings,$SrcRoot\Localization\MobileCenterDistribute,cs-CZ;de-DE;es-ES;fr-FR;it-IT;ja-JP;ko-KR;pl-PL;pt-BR;ru-RU;tr-TR;zh-CN;zh-TW +$SrcRoot\MobileCenterDistribute\MobileCenterDistribute\Resources\en.lproj\MobileCenterDistribute.strings,$SrcRoot\Localization\MobileCenterDistribute.zip,\MobileCenterDistribute.strings,$SrcRoot\MobileCenterDistribute\MobileCenterDistribute\Resources\,cs-CZ;de-DE;es-ES;fr-FR;it-IT;ja-JP;ko-KR;pl-PL;pt-BR;ru-RU;tr-TR;zh-CN;zh-TW diff --git a/MobileCenter.podspec b/MobileCenter.podspec index 11700a10a4..552c0a7ca8 100644 --- a/MobileCenter.podspec +++ b/MobileCenter.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'MobileCenter' - s.version = '0.14.0' + s.version = '0.14.1' s.summary = 'Mobile Center is mission control for mobile apps. Get faster release cycles, higher-quality apps, and the insights to build what users want.' s.description = <<-DESC diff --git a/MobileCenterPush/MobileCenterPush/MSPush.m b/MobileCenterPush/MobileCenterPush/MSPush.m index d129222d25..673ab1f9ca 100644 --- a/MobileCenterPush/MobileCenterPush/MSPush.m +++ b/MobileCenterPush/MobileCenterPush/MSPush.m @@ -311,32 +311,15 @@ - (BOOL)didReceiveRemoteNotification:(NSDictionary *)userInfo fromUserNotificati (void)userNotification; #endif MSLogVerbose([MSPush logTag], @"User info for notification was forwarded to Push: %@", [userInfo description]); - NSString *title; - NSString *message; + id title; + id message; + id customData; NSDictionary *aps = [userInfo objectForKey:kMSPushNotificationApsKey]; - NSObject *alert = [aps objectForKey:kMSPushNotificationAlertKey]; - if ([alert isKindOfClass:[NSDictionary class]]) { - title = [alert valueForKey:kMSPushNotificationTitleKey]; - message = [alert valueForKey:kMSPushNotificationMessageKey]; - } else { - - /* - * "alert" value type can be either Dictionary or String. Try one more time if it is a String value even - * though MobileCenterPush doesn't support String value for "alert". - */ - alert = [aps valueForKey:kMSPushNotificationAlertKey]; - if ([alert isKindOfClass:[NSString class]]) { - title = @""; - message = (NSString *)alert; - } else { - - // "alert" value is not a supported type. - return NO; - } - } + NSObject *alert; // The notification is not for Mobile Center if customData is nil. Ignore the notification. - NSDictionary *customData = [userInfo objectForKey:kMSPushNotificationCustomDataKey]; + customData = [userInfo objectForKey:kMSPushNotificationCustomDataKey]; + customData = ([customData isKindOfClass:[NSDictionary class]]) ? customData : nil; if (customData) { // If Push is disabled, discard the notification. @@ -345,7 +328,32 @@ - (BOOL)didReceiveRemoteNotification:(NSDictionary *)userInfo fromUserNotificati @"Notification received while Push was enabled but it is disabled now, discard the notification."); return YES; } - + alert = [aps objectForKey:kMSPushNotificationAlertKey]; + + // Retreive notification payload. + if ([alert isKindOfClass:[NSDictionary class]]) { + title = [alert valueForKey:kMSPushNotificationTitleKey]; + message = [alert valueForKey:kMSPushNotificationMessageKey]; + } else { + + /* + * "alert" value type can be either Dictionary or String. Try one more time if it is a String value even + * though MobileCenterPush doesn't support String value for "alert". + */ + alert = [aps valueForKey:kMSPushNotificationAlertKey]; + if ([alert isKindOfClass:[NSString class]]) { + title = @""; + message = (NSString *)alert; + } else { + + // "alert" value is not a supported type. + return NO; + } + } + + // Clean values, sometimes we get NSNull from the info dictionary as object type on optional fields. + title = ([title isKindOfClass:[NSString class]]) ? title : nil; + message = ([message isKindOfClass:[NSString class]]) ? message : nil; MSLogDebug([MSPush logTag], @"Notification received.\nTitle: %@\nMessage:%@\nCustom data: %@", title, message, [customData description]); diff --git a/MobileCenterPush/MobileCenterPushTests/MSPushTests.m b/MobileCenterPush/MobileCenterPushTests/MSPushTests.m index 70537b2839..84ef2e4070 100644 --- a/MobileCenterPush/MobileCenterPushTests/MSPushTests.m +++ b/MobileCenterPush/MobileCenterPushTests/MSPushTests.m @@ -248,6 +248,67 @@ - (void)testNotificationReceivedWithAlertObject { [pushMock stopMocking]; } +- (void)testNotificationReceivedWithAlertObjectWithoutTitleMessagesAndCustomData { + + // If + XCTestExpectation *notificationReceived = [self expectationWithDescription:@"Valid notification received."]; + id pushMock = OCMPartialMock(self.sut); + OCMStub([pushMock sharedInstance]).andReturn(pushMock); + OCMStub([pushMock canBeUsed]).andReturn(YES); + [MSPush resetSharedInstance]; + id pushDelegateMock = OCMProtocolMock(@protocol(MSPushDelegate)); + __block MSPushNotification *pushNotification = nil; + OCMStub([pushDelegateMock push:self.sut didReceivePushNotification:OCMOCK_ANY]).andDo(^(NSInvocation *invocation) { + [invocation getArgument:&pushNotification atIndex:3]; + }); + [MSPush setDelegate:pushDelegateMock]; + __block NSString *title = nil; + __block NSNull *message = [NSNull new]; + __block NSDictionary *customData = @{}; + NSDictionary *userInfo = + @{ @"aps" : @{@"alert" : @{@"body" : message}}, + @"mobile_center" : customData }; +#if TARGET_OS_OSX + id userNotificationUserInfoMock = OCMClassMock([NSUserNotification class]); + id notificationMock = OCMClassMock([NSNotification class]); + NSDictionary *notificationUserInfo = @{NSApplicationLaunchUserNotificationKey : userNotificationUserInfoMock}; + OCMStub([notificationMock userInfo]).andReturn(notificationUserInfo); + OCMStub([userNotificationUserInfoMock userInfo]).andReturn(userInfo); +#endif + + // When +#if TARGET_OS_OSX + [self.sut applicationDidFinishLaunching:notificationMock]; +#else + BOOL result = [MSPush didReceiveRemoteNotification:userInfo]; +#endif + dispatch_async(dispatch_get_main_queue(), ^{ + [notificationReceived fulfill]; + }); + + // Then + [self waitForExpectationsWithTimeout:1 + handler:^(NSError *error) { +#if TARGET_OS_OSX + OCMVerify([pushMock didReceiveUserNotification:userNotificationUserInfoMock]); +#else + OCMVerify([pushMock didReceiveRemoteNotification:userInfo]); +#endif + OCMVerify([pushDelegateMock push:self.sut didReceivePushNotification:OCMOCK_ANY]); + XCTAssertNotNil(pushNotification); + XCTAssertEqual(pushNotification.title, title); + XCTAssertEqual(pushNotification.message, nil); + XCTAssertEqual(pushNotification.customData, customData); + if (error) { + XCTFail(@"Expectation Failed with error: %@", error); + } + }]; +#if !TARGET_OS_OSX + XCTAssertTrue(result); +#endif + [pushMock stopMocking]; +} + - (void)testNotificationReceivedWithAlertString { // If diff --git a/Vendor/iOS/PLCrashReporter/CrashReporter.framework/Versions/A/CrashReporter b/Vendor/iOS/PLCrashReporter/CrashReporter.framework/Versions/A/CrashReporter index ae7748add6..ae86302fa8 100644 Binary files a/Vendor/iOS/PLCrashReporter/CrashReporter.framework/Versions/A/CrashReporter and b/Vendor/iOS/PLCrashReporter/CrashReporter.framework/Versions/A/CrashReporter differ diff --git a/Vendor/iOS/PLCrashReporter/CrashReporter.framework/Versions/A/Headers/PLCrashReportSystemInfo.h b/Vendor/iOS/PLCrashReporter/CrashReporter.framework/Versions/A/Headers/PLCrashReportSystemInfo.h index 9ab6ef1bf4..8ec71e637a 100644 --- a/Vendor/iOS/PLCrashReporter/CrashReporter.framework/Versions/A/Headers/PLCrashReportSystemInfo.h +++ b/Vendor/iOS/PLCrashReporter/CrashReporter.framework/Versions/A/Headers/PLCrashReportSystemInfo.h @@ -49,11 +49,13 @@ typedef enum { /** Unknown operating system */ PLCrashReportOperatingSystemUnknown = 3, - /** tvOS */ - PLCrashReportOperatingSystemtvOS = 4, + /** Apple tvOS */ + PLCrashReportOperatingSystemAppleTVOS = 4, } PLCrashReportOperatingSystem; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdocumentation-deprecated-sync" /** * @ingroup constants * @@ -95,7 +97,7 @@ typedef enum { /** Unknown */ PLCrashReportArchitectureUnknown = 6 } PLCrashReportArchitecture; - +#pragma clang diagnostic pop extern PLCrashReportOperatingSystem PLCrashReportHostOperatingSystem; extern PLCrashReportArchitecture PLCrashReportHostArchitecture; @@ -138,10 +140,13 @@ extern PLCrashReportArchitecture PLCrashReportHostArchitecture; /** The operating system's build identifier (eg, 10J869). This may be unavailable, and this property will be nil. */ @property(nonatomic, readonly) NSString *operatingSystemBuild; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdocumentation-deprecated-sync" /** Architecture. @deprecated The architecture value has been deprecated in v1.1 and later crash reports. All new reports * include the CPU type as part of the crash report's machine info structure, using the PLCrashReportProcessorInfo * extensible encoding. */ @property(nonatomic, readonly) PLCrashReportArchitecture architecture; +#pragma clang diagnostic pop /** Date and time that the crash report was generated. This may be unavailable, and this property will be nil. */ @property(nonatomic, readonly) NSDate *timestamp; diff --git a/Vendor/iOS/PLCrashReporter/CrashReporter.framework/Versions/A/Headers/PLCrashReporter.h b/Vendor/iOS/PLCrashReporter/CrashReporter.framework/Versions/A/Headers/PLCrashReporter.h index 455c417ac7..68bf5a0f62 100644 --- a/Vendor/iOS/PLCrashReporter/CrashReporter.framework/Versions/A/Headers/PLCrashReporter.h +++ b/Vendor/iOS/PLCrashReporter/CrashReporter.framework/Versions/A/Headers/PLCrashReporter.h @@ -44,7 +44,8 @@ * @param uap The crash's threads context. * @param context The API client's supplied context value. * - * @sa @ref async_safety + * @sa async_satefy + * @ref async_safety * @sa PLCrashReporter::setPostCrashCallbacks: */ typedef void (*PLCrashReporterPostCrashSignalCallback)(siginfo_t *info, ucontext_t *uap, void *context); @@ -55,7 +56,8 @@ typedef void (*PLCrashReporterPostCrashSignalCallback)(siginfo_t *info, ucontext * This structure contains callbacks supported by PLCrashReporter to allow the host application to perform * additional tasks prior to program termination after a crash has occured. * - * @sa @ref async_safety + * @sa async_satefy + * @ref async_safety */ typedef struct PLCrashReporterCallbacks { /** The version number of this structure. If not one of the defined version numbers for this type, the behavior diff --git a/Vendor/iOS/PLCrashReporter/CrashReporter.framework/Versions/A/Resources/Info.plist b/Vendor/iOS/PLCrashReporter/CrashReporter.framework/Versions/A/Resources/Info.plist index e0c15d3189..a96c0fd6de 100644 --- a/Vendor/iOS/PLCrashReporter/CrashReporter.framework/Versions/A/Resources/Info.plist +++ b/Vendor/iOS/PLCrashReporter/CrashReporter.framework/Versions/A/Resources/Info.plist @@ -3,7 +3,7 @@ BuildMachineOSBuild - 16E195 + 16G29 CFBundleDevelopmentRegion English CFBundleExecutable @@ -27,7 +27,7 @@ DTCompiler com.apple.compilers.llvm.clang.1_0 DTPlatformBuild - 8E1000a + 8E3004b DTPlatformVersion GM DTSDKBuild @@ -35,8 +35,8 @@ DTSDKName macosx10.12 DTXcode - 0831 + 0833 DTXcodeBuild - 8E1000a + 8E3004b diff --git a/Vendor/macOS/PLCrashReporter/CrashReporter/PLCrashReportSystemInfo.h b/Vendor/macOS/PLCrashReporter/CrashReporter/PLCrashReportSystemInfo.h index b2a2146c41..8ec71e637a 100644 --- a/Vendor/macOS/PLCrashReporter/CrashReporter/PLCrashReportSystemInfo.h +++ b/Vendor/macOS/PLCrashReporter/CrashReporter/PLCrashReportSystemInfo.h @@ -49,8 +49,8 @@ typedef enum { /** Unknown operating system */ PLCrashReportOperatingSystemUnknown = 3, - /** tvOS */ - PLCrashReportOperatingSystemtvOS = 4, + /** Apple tvOS */ + PLCrashReportOperatingSystemAppleTVOS = 4, } PLCrashReportOperatingSystem; diff --git a/Vendor/macOS/PLCrashReporter/libCrashReporter-MacOSX-Static.a b/Vendor/macOS/PLCrashReporter/libCrashReporter-MacOSX-Static.a index cd749d96e0..76e26f4aef 100644 Binary files a/Vendor/macOS/PLCrashReporter/libCrashReporter-MacOSX-Static.a and b/Vendor/macOS/PLCrashReporter/libCrashReporter-MacOSX-Static.a differ diff --git a/Vendor/tvOS/PLCrashReporter/CrashReporter.framework/Versions/A/CrashReporter b/Vendor/tvOS/PLCrashReporter/CrashReporter.framework/Versions/A/CrashReporter index 6350b15605..5a9b291aa1 100644 Binary files a/Vendor/tvOS/PLCrashReporter/CrashReporter.framework/Versions/A/CrashReporter and b/Vendor/tvOS/PLCrashReporter/CrashReporter.framework/Versions/A/CrashReporter differ diff --git a/Vendor/tvOS/PLCrashReporter/CrashReporter.framework/Versions/A/Resources/Info.plist b/Vendor/tvOS/PLCrashReporter/CrashReporter.framework/Versions/A/Resources/Info.plist index c1b5a14de7..a96c0fd6de 100644 --- a/Vendor/tvOS/PLCrashReporter/CrashReporter.framework/Versions/A/Resources/Info.plist +++ b/Vendor/tvOS/PLCrashReporter/CrashReporter.framework/Versions/A/Resources/Info.plist @@ -3,7 +3,7 @@ BuildMachineOSBuild - 16F73 + 16G29 CFBundleDevelopmentRegion English CFBundleExecutable diff --git a/bitrise/publish.sh b/bitrise/publish.sh index f92287b5da..279bb1aaa0 100755 --- a/bitrise/publish.sh +++ b/bitrise/publish.sh @@ -163,8 +163,15 @@ else # Determine the filename for the release filename=$(echo $BINARY_FILE | sed 's/.zip/-'${publish_version}'.zip/g') - # Upload binary to GitHub for external release + # Upload binary to Azure Storage mv $BINARY_FILE $filename + resp="$(echo "N" | azure storage blob upload ${filename} sdk | grep overwrite)" + if [ "$resp" ]; then + echo "${filename} already exists" + exit 1 + fi + + # Upload binary to GitHub for external release upload_url="$(echo $REQUEST_UPLOAD_URL_TEMPLATE | sed 's/{id}/'$id'/g')" url="$(echo $upload_url | sed 's/{filename}/'${filename}'/g')" resp="$(curl -s -X POST -H 'Content-Type: application/zip' --data-binary @$filename $url)"