0

I'm trying uploading my Safari Extension to Gallery. Every time I did it, I get error message after a few days of waiting:

During our review, we found that you still have not enabled automatic updating for your extension.

Cool! But I did it, exactly according the docs. When I submitted ext, I mentioned this URL: http://up.thefreedictionary.com/Info.plist as my Update Manifest. Here is content:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">

<plist version="1.0">
<dict>
<key>Extension Updates</key>
<array>
<dict>
<key>CFBundleIdentifier</key>
<string>dictionary</string>
<key>Developer Identifier</key>
<string>SZ9T8BXLWC</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>URL</key>
<string>
http://up.thefreedictionary.com/TheFreeDictionary.safariextz
</string>
</dict>
</array>
</dict>
</plist>

No idea, what may be wrong here. And why I can't publish it, ever without automatic updates?

P.S. CFBuldleIdentifier is "dictionary". It corresponding my app bundle id. Is it problem?

Mike Keskinov
  • 11,614
  • 6
  • 59
  • 87

3 Answers3

1

The documentation page says:

  • Create a text file with the .plist file extension and put it on a web server
  • Include the URL of the file in the Update Manifest field of Extension Builder

I assume you did the second step.

As for the CFBundleIdentifier, it should follow the reverse DNS format, as described here:

The bundle ID string must be a uniform type identifier (UTI) that contains only alphanumeric (A-Z,a-z,0-9), hyphen (-), and period (.) characters. The string should also be in reverse-DNS format. For example, if your company’s domain is Ajax.com and you create an app named Hello, you could assign the string com.Ajax.Hello as your app’s bundle identifier.

The examples in the documentation use com.yourCompany.safari.firstExtensionName as identifier. I don't think "safari" must appear in the identifier, though.

apaderno
  • 28,547
  • 16
  • 75
  • 90
1

I found it!

The problem was that I didn't mentioned URL to update.plist in my info.plist (which is part of extension). I simple didn't know, that I have to. I mentioned this URL in submission form and expected that this is enough.

I checked the docs, and it literally says "include the URL of the file in the Update Manifest field of Extension Builder". If only it says instead: "add URL of the file to your info.plist, which is part of your extension" I would definitely did it. But, as soon as I personally didn't develop extension (I give this work to another programmer in my team), I confused "Extension Builder" with submission form.

Mike Keskinov
  • 11,614
  • 6
  • 59
  • 87
  • I uploaded my extension to the safari store. Now to update my extension what all procedure shoud I follow? Do I have to create any update manifest file? What should I mention in update manifest field of "Extension Builder"? – Muthu Apr 08 '16 at 05:47
  • what should be the key of this field, where we have to mention update.plist URL, as info.plist aleady have a key named URL where we write url of extz. – Priyanka Aug 20 '17 at 08:10
  • I have the same question with @user5821368, did you find the key name to this field? – zhm Oct 08 '18 at 08:02
0

There are a couple of problems with your Update.plist. Here's one of mine for reference.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Extension Updates</key>
    <array>
        <dict>
            <key>CFBundleIdentifier</key>
            <string>com.canisbos.ccnotepad</string>
            <key>Developer Identifier</key>
            <string>ZANVZTSER6</string>
            <key>CFBundleVersion</key>
            <string>104</string>
            <key>CFBundleShortVersionString</key>
            <string>1.0.4</string>
            <key>URL</key>
            <string>http://dl.dropbox.com/u/23990/Canisbos/ccNotepad.safariextz</string>
        </dict>
    </array>
</dict>
</plist>

You seem to be missing the XML and DOCTYPE declarations at the top, but more importantly the string paired with the CFBundleIdentifier key is incorrect. It needs to be the same as the one in your Info.plist, and it probably can't be "dictionary".

EDIT: I just noticed that you seem to have named the file Info.plist, when it should be Update.plist -- though I'm not sure if this is required.

chulster
  • 2,809
  • 15
  • 14
  • If you check the link of my .plist (http://up.thefreedictionary.com/Info.plist), you will see the XML and DOCTYPE in place. I just didn't copy it into source into this question. CFBundleIdentifier key is corresponding to value in Info.plist. If you know the reason why it can't be "dictionary" let me know. I really like it to be just "dictionary". Also, this bundle name passed validation when I submit form to Safari Gallery. The name "Update.plist" didn't mentioned anyway in Apple help - where did you get it? Any other suggestions? – Mike Keskinov Nov 07 '12 at 15:05
  • Another potential issue is that ```CFBundleVersion 1``` should actually be `1.0.0` so that when you increment to `1.0.1` it'll detect the auto update. We discovered this the hard way. When we tried `2` it didn't work. Only when we went from a 3-digit number like `1.2.6` to `1.2.8` did it work. As always you can thoroughly test auto updates prior to launching your app by just building with different version numbers and checking the `Safari > Preferences > Extensions > Updates` page. – Stephen Siu Feb 24 '15 at 19:27
  • Here is a reference to the field definitions (which is not linked from the sample plist page!!): https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html – Stephen Siu Feb 24 '15 at 19:31